// media/mojo/mojom/media_metrics_provider.mojom-params-data.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_MOJO_MOJOM_MEDIA_METRICS_PROVIDER_MOJOM_PARAMS_DATA_H_
#define MEDIA_MOJO_MOJOM_MEDIA_METRICS_PROVIDER_MOJOM_PARAMS_DATA_H_
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"

#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-private-field"
#endif

namespace mojo::internal {
class ValidationContext;
}


namespace media::mojom {
namespace internal {
class  MediaMetricsProvider_Initialize_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  uint8_t is_mse : 1;
  uint8_t pad0_[3];
  int32_t url_scheme;
  int32_t stream_type;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_Initialize_Params_Data>;

  MediaMetricsProvider_Initialize_Params_Data();
  ~MediaMetricsProvider_Initialize_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_Initialize_Params_Data) == 24,
              "Bad sizeof(MediaMetricsProvider_Initialize_Params_Data)");
class  MediaMetricsProvider_OnStarted_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::PipelineStatus_Data> status;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_OnStarted_Params_Data>;

  MediaMetricsProvider_OnStarted_Params_Data();
  ~MediaMetricsProvider_OnStarted_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_OnStarted_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_OnStarted_Params_Data)");
class  MediaMetricsProvider_OnError_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::PipelineStatus_Data> status;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_OnError_Params_Data>;

  MediaMetricsProvider_OnError_Params_Data();
  ~MediaMetricsProvider_OnError_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_OnError_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_OnError_Params_Data)");
class  MediaMetricsProvider_OnFallback_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::PipelineStatus_Data> status;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_OnFallback_Params_Data>;

  MediaMetricsProvider_OnFallback_Params_Data();
  ~MediaMetricsProvider_OnFallback_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_OnFallback_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_OnFallback_Params_Data)");
class  MediaMetricsProvider_SetHasPlayed_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetHasPlayed_Params_Data>;

  MediaMetricsProvider_SetHasPlayed_Params_Data();
  ~MediaMetricsProvider_SetHasPlayed_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetHasPlayed_Params_Data) == 8,
              "Bad sizeof(MediaMetricsProvider_SetHasPlayed_Params_Data)");
class  MediaMetricsProvider_SetHaveEnough_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetHaveEnough_Params_Data>;

  MediaMetricsProvider_SetHaveEnough_Params_Data();
  ~MediaMetricsProvider_SetHaveEnough_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetHaveEnough_Params_Data) == 8,
              "Bad sizeof(MediaMetricsProvider_SetHaveEnough_Params_Data)");
class  MediaMetricsProvider_SetIsEME_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetIsEME_Params_Data>;

  MediaMetricsProvider_SetIsEME_Params_Data();
  ~MediaMetricsProvider_SetIsEME_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetIsEME_Params_Data) == 8,
              "Bad sizeof(MediaMetricsProvider_SetIsEME_Params_Data)");
class  MediaMetricsProvider_SetTimeToMetadata_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::mojo_base::mojom::internal::TimeDelta_Data> elapsed;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetTimeToMetadata_Params_Data>;

  MediaMetricsProvider_SetTimeToMetadata_Params_Data();
  ~MediaMetricsProvider_SetTimeToMetadata_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetTimeToMetadata_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetTimeToMetadata_Params_Data)");
class  MediaMetricsProvider_SetTimeToFirstFrame_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::mojo_base::mojom::internal::TimeDelta_Data> elapsed;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetTimeToFirstFrame_Params_Data>;

  MediaMetricsProvider_SetTimeToFirstFrame_Params_Data();
  ~MediaMetricsProvider_SetTimeToFirstFrame_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetTimeToFirstFrame_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetTimeToFirstFrame_Params_Data)");
class  MediaMetricsProvider_SetTimeToPlayReady_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::mojo_base::mojom::internal::TimeDelta_Data> elapsed;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetTimeToPlayReady_Params_Data>;

  MediaMetricsProvider_SetTimeToPlayReady_Params_Data();
  ~MediaMetricsProvider_SetTimeToPlayReady_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetTimeToPlayReady_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetTimeToPlayReady_Params_Data)");
class  MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  double ratio;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data>;

  MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data();
  ~MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data)");
class  MediaMetricsProvider_SetRendererType_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  int32_t renderer_type;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetRendererType_Params_Data>;

  MediaMetricsProvider_SetRendererType_Params_Data();
  ~MediaMetricsProvider_SetRendererType_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetRendererType_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetRendererType_Params_Data)");
class  MediaMetricsProvider_SetDemuxerType_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  int32_t demuxer_type;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetDemuxerType_Params_Data>;

  MediaMetricsProvider_SetDemuxerType_Params_Data();
  ~MediaMetricsProvider_SetDemuxerType_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetDemuxerType_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetDemuxerType_Params_Data)");
class  MediaMetricsProvider_SetKeySystem_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::String_Data> key_system;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetKeySystem_Params_Data>;

  MediaMetricsProvider_SetKeySystem_Params_Data();
  ~MediaMetricsProvider_SetKeySystem_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetKeySystem_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetKeySystem_Params_Data)");
class  MediaMetricsProvider_SetHasWaitingForKey_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetHasWaitingForKey_Params_Data>;

  MediaMetricsProvider_SetHasWaitingForKey_Params_Data();
  ~MediaMetricsProvider_SetHasWaitingForKey_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetHasWaitingForKey_Params_Data) == 8,
              "Bad sizeof(MediaMetricsProvider_SetHasWaitingForKey_Params_Data)");
class  MediaMetricsProvider_SetIsHardwareSecure_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetIsHardwareSecure_Params_Data>;

  MediaMetricsProvider_SetIsHardwareSecure_Params_Data();
  ~MediaMetricsProvider_SetIsHardwareSecure_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetIsHardwareSecure_Params_Data) == 8,
              "Bad sizeof(MediaMetricsProvider_SetIsHardwareSecure_Params_Data)");
class  MediaMetricsProvider_SetHasTrackChange_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetHasTrackChange_Params_Data>;

  MediaMetricsProvider_SetHasTrackChange_Params_Data();
  ~MediaMetricsProvider_SetHasTrackChange_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetHasTrackChange_Params_Data) == 8,
              "Bad sizeof(MediaMetricsProvider_SetHasTrackChange_Params_Data)");
class  MediaMetricsProvider_SetContainerName_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  int32_t container_name;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetContainerName_Params_Data>;

  MediaMetricsProvider_SetContainerName_Params_Data();
  ~MediaMetricsProvider_SetContainerName_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetContainerName_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetContainerName_Params_Data)");
class  MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::PlaybackProperties_Data> properties;
  mojo::internal::Handle_Data recorder;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data>;

  MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data();
  ~MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data) == 24,
              "Bad sizeof(MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data)");
class  MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Handle_Data recorder;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data>;

  MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data();
  ~MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data)");
class  MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Handle_Data receiver;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data>;

  MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data();
  ~MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data)");
class  MediaMetricsProvider_SetHasAudio_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  int32_t codec;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetHasAudio_Params_Data>;

  MediaMetricsProvider_SetHasAudio_Params_Data();
  ~MediaMetricsProvider_SetHasAudio_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetHasAudio_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetHasAudio_Params_Data)");
class  MediaMetricsProvider_SetHasVideo_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  int32_t codec;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetHasVideo_Params_Data>;

  MediaMetricsProvider_SetHasVideo_Params_Data();
  ~MediaMetricsProvider_SetHasVideo_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetHasVideo_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetHasVideo_Params_Data)");
class  MediaMetricsProvider_SetVideoPipelineInfo_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::VideoPipelineInfo_Data> info;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetVideoPipelineInfo_Params_Data>;

  MediaMetricsProvider_SetVideoPipelineInfo_Params_Data();
  ~MediaMetricsProvider_SetVideoPipelineInfo_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetVideoPipelineInfo_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetVideoPipelineInfo_Params_Data)");
class  MediaMetricsProvider_SetAudioPipelineInfo_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::AudioPipelineInfo_Data> info;

 private:
  friend class mojo::internal::MessageFragment<MediaMetricsProvider_SetAudioPipelineInfo_Params_Data>;

  MediaMetricsProvider_SetAudioPipelineInfo_Params_Data();
  ~MediaMetricsProvider_SetAudioPipelineInfo_Params_Data() = delete;
};
static_assert(sizeof(MediaMetricsProvider_SetAudioPipelineInfo_Params_Data) == 16,
              "Bad sizeof(MediaMetricsProvider_SetAudioPipelineInfo_Params_Data)");

}  // namespace internal


class MediaMetricsProvider_Initialize_ParamsDataView {
 public:
  MediaMetricsProvider_Initialize_ParamsDataView() = default;

  MediaMetricsProvider_Initialize_ParamsDataView(
      internal::MediaMetricsProvider_Initialize_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool is_mse() const {
    return data_->is_mse;
  }
  template <typename UserType>
  [[nodiscard]] bool ReadUrlScheme(UserType* output) const {
    auto data_value = data_->url_scheme;
    return mojo::internal::Deserialize<::media::mojom::MediaURLScheme>(
        data_value, output);
  }
  MediaURLScheme url_scheme() const {
    return ::mojo::internal::ToKnownEnumValueHelper(
          static_cast<::media::mojom::MediaURLScheme>(data_->url_scheme));
  }
  template <typename UserType>
  [[nodiscard]] bool ReadStreamType(UserType* output) const {
    auto data_value = data_->stream_type;
    return mojo::internal::Deserialize<::media::mojom::MediaStreamType>(
        data_value, output);
  }
  ::media::mojom::MediaStreamType stream_type() const {
    return ::mojo::internal::ToKnownEnumValueHelper(
          static_cast<::media::mojom::MediaStreamType>(data_->stream_type));
  }
 private:
  internal::MediaMetricsProvider_Initialize_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_OnStarted_ParamsDataView {
 public:
  MediaMetricsProvider_OnStarted_ParamsDataView() = default;

  MediaMetricsProvider_OnStarted_ParamsDataView(
      internal::MediaMetricsProvider_OnStarted_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetStatusDataView(
      ::media::mojom::PipelineStatusDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadStatus(UserType* output) {
    
    auto* pointer = data_->status.Get();
    return mojo::internal::Deserialize<::media::mojom::PipelineStatusDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_OnStarted_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_OnError_ParamsDataView {
 public:
  MediaMetricsProvider_OnError_ParamsDataView() = default;

  MediaMetricsProvider_OnError_ParamsDataView(
      internal::MediaMetricsProvider_OnError_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetStatusDataView(
      ::media::mojom::PipelineStatusDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadStatus(UserType* output) {
    
    auto* pointer = data_->status.Get();
    return mojo::internal::Deserialize<::media::mojom::PipelineStatusDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_OnError_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_OnFallback_ParamsDataView {
 public:
  MediaMetricsProvider_OnFallback_ParamsDataView() = default;

  MediaMetricsProvider_OnFallback_ParamsDataView(
      internal::MediaMetricsProvider_OnFallback_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetStatusDataView(
      ::media::mojom::PipelineStatusDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadStatus(UserType* output) {
    
    auto* pointer = data_->status.Get();
    return mojo::internal::Deserialize<::media::mojom::PipelineStatusDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_OnFallback_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_SetHasPlayed_ParamsDataView {
 public:
  MediaMetricsProvider_SetHasPlayed_ParamsDataView() = default;

  MediaMetricsProvider_SetHasPlayed_ParamsDataView(
      internal::MediaMetricsProvider_SetHasPlayed_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::MediaMetricsProvider_SetHasPlayed_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetHaveEnough_ParamsDataView {
 public:
  MediaMetricsProvider_SetHaveEnough_ParamsDataView() = default;

  MediaMetricsProvider_SetHaveEnough_ParamsDataView(
      internal::MediaMetricsProvider_SetHaveEnough_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::MediaMetricsProvider_SetHaveEnough_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetIsEME_ParamsDataView {
 public:
  MediaMetricsProvider_SetIsEME_ParamsDataView() = default;

  MediaMetricsProvider_SetIsEME_ParamsDataView(
      internal::MediaMetricsProvider_SetIsEME_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::MediaMetricsProvider_SetIsEME_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetTimeToMetadata_ParamsDataView {
 public:
  MediaMetricsProvider_SetTimeToMetadata_ParamsDataView() = default;

  MediaMetricsProvider_SetTimeToMetadata_ParamsDataView(
      internal::MediaMetricsProvider_SetTimeToMetadata_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetElapsedDataView(
      ::mojo_base::mojom::TimeDeltaDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadElapsed(UserType* output) {
    
    auto* pointer = data_->elapsed.Get();
    return mojo::internal::Deserialize<::mojo_base::mojom::TimeDeltaDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_SetTimeToMetadata_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_SetTimeToFirstFrame_ParamsDataView {
 public:
  MediaMetricsProvider_SetTimeToFirstFrame_ParamsDataView() = default;

  MediaMetricsProvider_SetTimeToFirstFrame_ParamsDataView(
      internal::MediaMetricsProvider_SetTimeToFirstFrame_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetElapsedDataView(
      ::mojo_base::mojom::TimeDeltaDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadElapsed(UserType* output) {
    
    auto* pointer = data_->elapsed.Get();
    return mojo::internal::Deserialize<::mojo_base::mojom::TimeDeltaDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_SetTimeToFirstFrame_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_SetTimeToPlayReady_ParamsDataView {
 public:
  MediaMetricsProvider_SetTimeToPlayReady_ParamsDataView() = default;

  MediaMetricsProvider_SetTimeToPlayReady_ParamsDataView(
      internal::MediaMetricsProvider_SetTimeToPlayReady_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetElapsedDataView(
      ::mojo_base::mojom::TimeDeltaDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadElapsed(UserType* output) {
    
    auto* pointer = data_->elapsed.Get();
    return mojo::internal::Deserialize<::mojo_base::mojom::TimeDeltaDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_SetTimeToPlayReady_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_ParamsDataView {
 public:
  MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_ParamsDataView() = default;

  MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_ParamsDataView(
      internal::MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  double ratio() const {
    return data_->ratio;
  }
 private:
  internal::MediaMetricsProvider_SetVisibilityRatioAtPlaybackStart_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetRendererType_ParamsDataView {
 public:
  MediaMetricsProvider_SetRendererType_ParamsDataView() = default;

  MediaMetricsProvider_SetRendererType_ParamsDataView(
      internal::MediaMetricsProvider_SetRendererType_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  [[nodiscard]] bool ReadRendererType(UserType* output) const {
    auto data_value = data_->renderer_type;
    return mojo::internal::Deserialize<::media::mojom::RendererType>(
        data_value, output);
  }
  ::media::mojom::RendererType renderer_type() const {
    return ::mojo::internal::ToKnownEnumValueHelper(
          static_cast<::media::mojom::RendererType>(data_->renderer_type));
  }
 private:
  internal::MediaMetricsProvider_SetRendererType_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetDemuxerType_ParamsDataView {
 public:
  MediaMetricsProvider_SetDemuxerType_ParamsDataView() = default;

  MediaMetricsProvider_SetDemuxerType_ParamsDataView(
      internal::MediaMetricsProvider_SetDemuxerType_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  [[nodiscard]] bool ReadDemuxerType(UserType* output) const {
    auto data_value = data_->demuxer_type;
    return mojo::internal::Deserialize<::media::mojom::DemuxerType>(
        data_value, output);
  }
  ::media::mojom::DemuxerType demuxer_type() const {
    return ::mojo::internal::ToKnownEnumValueHelper(
          static_cast<::media::mojom::DemuxerType>(data_->demuxer_type));
  }
 private:
  internal::MediaMetricsProvider_SetDemuxerType_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetKeySystem_ParamsDataView {
 public:
  MediaMetricsProvider_SetKeySystem_ParamsDataView() = default;

  MediaMetricsProvider_SetKeySystem_ParamsDataView(
      internal::MediaMetricsProvider_SetKeySystem_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetKeySystemDataView(
      mojo::StringDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadKeySystem(UserType* output) {
    
    auto* pointer = data_->key_system.Get();
    return mojo::internal::Deserialize<mojo::StringDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_SetKeySystem_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_SetHasWaitingForKey_ParamsDataView {
 public:
  MediaMetricsProvider_SetHasWaitingForKey_ParamsDataView() = default;

  MediaMetricsProvider_SetHasWaitingForKey_ParamsDataView(
      internal::MediaMetricsProvider_SetHasWaitingForKey_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::MediaMetricsProvider_SetHasWaitingForKey_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetIsHardwareSecure_ParamsDataView {
 public:
  MediaMetricsProvider_SetIsHardwareSecure_ParamsDataView() = default;

  MediaMetricsProvider_SetIsHardwareSecure_ParamsDataView(
      internal::MediaMetricsProvider_SetIsHardwareSecure_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::MediaMetricsProvider_SetIsHardwareSecure_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetHasTrackChange_ParamsDataView {
 public:
  MediaMetricsProvider_SetHasTrackChange_ParamsDataView() = default;

  MediaMetricsProvider_SetHasTrackChange_ParamsDataView(
      internal::MediaMetricsProvider_SetHasTrackChange_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
 private:
  internal::MediaMetricsProvider_SetHasTrackChange_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetContainerName_ParamsDataView {
 public:
  MediaMetricsProvider_SetContainerName_ParamsDataView() = default;

  MediaMetricsProvider_SetContainerName_ParamsDataView(
      internal::MediaMetricsProvider_SetContainerName_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  [[nodiscard]] bool ReadContainerName(UserType* output) const {
    auto data_value = data_->container_name;
    return mojo::internal::Deserialize<::media::mojom::MediaContainerName>(
        data_value, output);
  }
  ::media::mojom::MediaContainerName container_name() const {
    return ::mojo::internal::ToKnownEnumValueHelper(
          static_cast<::media::mojom::MediaContainerName>(data_->container_name));
  }
 private:
  internal::MediaMetricsProvider_SetContainerName_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_AcquireWatchTimeRecorder_ParamsDataView {
 public:
  MediaMetricsProvider_AcquireWatchTimeRecorder_ParamsDataView() = default;

  MediaMetricsProvider_AcquireWatchTimeRecorder_ParamsDataView(
      internal::MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetPropertiesDataView(
      ::media::mojom::PlaybackPropertiesDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadProperties(UserType* output) {
    
    auto* pointer = data_->properties.Get();
    return mojo::internal::Deserialize<::media::mojom::PlaybackPropertiesDataView>(
        pointer, output, message_);
  }
  template <typename UserType>
  UserType TakeRecorder() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfaceRequestDataView<::media::mojom::WatchTimeRecorderInterfaceBase>>(
            &data_->recorder, &result, message_);
    DCHECK(ret);
    return result;
  }
 private:
  internal::MediaMetricsProvider_AcquireWatchTimeRecorder_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_ParamsDataView {
 public:
  MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_ParamsDataView() = default;

  MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_ParamsDataView(
      internal::MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  UserType TakeRecorder() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfaceRequestDataView<::media::mojom::VideoDecodeStatsRecorderInterfaceBase>>(
            &data_->recorder, &result, message_);
    DCHECK(ret);
    return result;
  }
 private:
  internal::MediaMetricsProvider_AcquireVideoDecodeStatsRecorder_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_AcquirePlaybackEventsRecorder_ParamsDataView {
 public:
  MediaMetricsProvider_AcquirePlaybackEventsRecorder_ParamsDataView() = default;

  MediaMetricsProvider_AcquirePlaybackEventsRecorder_ParamsDataView(
      internal::MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  UserType TakeReceiver() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfaceRequestDataView<::media::mojom::PlaybackEventsRecorderInterfaceBase>>(
            &data_->receiver, &result, message_);
    DCHECK(ret);
    return result;
  }
 private:
  internal::MediaMetricsProvider_AcquirePlaybackEventsRecorder_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_SetHasAudio_ParamsDataView {
 public:
  MediaMetricsProvider_SetHasAudio_ParamsDataView() = default;

  MediaMetricsProvider_SetHasAudio_ParamsDataView(
      internal::MediaMetricsProvider_SetHasAudio_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  [[nodiscard]] bool ReadCodec(UserType* output) const {
    auto data_value = data_->codec;
    return mojo::internal::Deserialize<::media::mojom::AudioCodec>(
        data_value, output);
  }
  ::media::mojom::AudioCodec codec() const {
    return ::mojo::internal::ToKnownEnumValueHelper(
          static_cast<::media::mojom::AudioCodec>(data_->codec));
  }
 private:
  internal::MediaMetricsProvider_SetHasAudio_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetHasVideo_ParamsDataView {
 public:
  MediaMetricsProvider_SetHasVideo_ParamsDataView() = default;

  MediaMetricsProvider_SetHasVideo_ParamsDataView(
      internal::MediaMetricsProvider_SetHasVideo_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  [[nodiscard]] bool ReadCodec(UserType* output) const {
    auto data_value = data_->codec;
    return mojo::internal::Deserialize<::media::mojom::VideoCodec>(
        data_value, output);
  }
  ::media::mojom::VideoCodec codec() const {
    return ::mojo::internal::ToKnownEnumValueHelper(
          static_cast<::media::mojom::VideoCodec>(data_->codec));
  }
 private:
  internal::MediaMetricsProvider_SetHasVideo_Params_Data* data_ = nullptr;
};


class MediaMetricsProvider_SetVideoPipelineInfo_ParamsDataView {
 public:
  MediaMetricsProvider_SetVideoPipelineInfo_ParamsDataView() = default;

  MediaMetricsProvider_SetVideoPipelineInfo_ParamsDataView(
      internal::MediaMetricsProvider_SetVideoPipelineInfo_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetInfoDataView(
      ::media::mojom::VideoPipelineInfoDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadInfo(UserType* output) {
    
    auto* pointer = data_->info.Get();
    return mojo::internal::Deserialize<::media::mojom::VideoPipelineInfoDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_SetVideoPipelineInfo_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class MediaMetricsProvider_SetAudioPipelineInfo_ParamsDataView {
 public:
  MediaMetricsProvider_SetAudioPipelineInfo_ParamsDataView() = default;

  MediaMetricsProvider_SetAudioPipelineInfo_ParamsDataView(
      internal::MediaMetricsProvider_SetAudioPipelineInfo_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetInfoDataView(
      ::media::mojom::AudioPipelineInfoDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadInfo(UserType* output) {
    
    auto* pointer = data_->info.Get();
    return mojo::internal::Deserialize<::media::mojom::AudioPipelineInfoDataView>(
        pointer, output, message_);
  }
 private:
  internal::MediaMetricsProvider_SetAudioPipelineInfo_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};



inline void MediaMetricsProvider_OnStarted_ParamsDataView::GetStatusDataView(
    ::media::mojom::PipelineStatusDataView* output) {
  auto pointer = data_->status.Get();
  *output = ::media::mojom::PipelineStatusDataView(pointer, message_);
}


inline void MediaMetricsProvider_OnError_ParamsDataView::GetStatusDataView(
    ::media::mojom::PipelineStatusDataView* output) {
  auto pointer = data_->status.Get();
  *output = ::media::mojom::PipelineStatusDataView(pointer, message_);
}


inline void MediaMetricsProvider_OnFallback_ParamsDataView::GetStatusDataView(
    ::media::mojom::PipelineStatusDataView* output) {
  auto pointer = data_->status.Get();
  *output = ::media::mojom::PipelineStatusDataView(pointer, message_);
}








inline void MediaMetricsProvider_SetTimeToMetadata_ParamsDataView::GetElapsedDataView(
    ::mojo_base::mojom::TimeDeltaDataView* output) {
  auto pointer = data_->elapsed.Get();
  *output = ::mojo_base::mojom::TimeDeltaDataView(pointer, message_);
}


inline void MediaMetricsProvider_SetTimeToFirstFrame_ParamsDataView::GetElapsedDataView(
    ::mojo_base::mojom::TimeDeltaDataView* output) {
  auto pointer = data_->elapsed.Get();
  *output = ::mojo_base::mojom::TimeDeltaDataView(pointer, message_);
}


inline void MediaMetricsProvider_SetTimeToPlayReady_ParamsDataView::GetElapsedDataView(
    ::mojo_base::mojom::TimeDeltaDataView* output) {
  auto pointer = data_->elapsed.Get();
  *output = ::mojo_base::mojom::TimeDeltaDataView(pointer, message_);
}








inline void MediaMetricsProvider_SetKeySystem_ParamsDataView::GetKeySystemDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->key_system.Get();
  *output = mojo::StringDataView(pointer, message_);
}










inline void MediaMetricsProvider_AcquireWatchTimeRecorder_ParamsDataView::GetPropertiesDataView(
    ::media::mojom::PlaybackPropertiesDataView* output) {
  auto pointer = data_->properties.Get();
  *output = ::media::mojom::PlaybackPropertiesDataView(pointer, message_);
}










inline void MediaMetricsProvider_SetVideoPipelineInfo_ParamsDataView::GetInfoDataView(
    ::media::mojom::VideoPipelineInfoDataView* output) {
  auto pointer = data_->info.Get();
  *output = ::media::mojom::VideoPipelineInfoDataView(pointer, message_);
}


inline void MediaMetricsProvider_SetAudioPipelineInfo_ParamsDataView::GetInfoDataView(
    ::media::mojom::AudioPipelineInfoDataView* output) {
  auto pointer = data_->info.Get();
  *output = ::media::mojom::AudioPipelineInfoDataView(pointer, message_);
}



}  // media::mojom

#if defined(__clang__)
#pragma clang diagnostic pop
#endif

#endif  // MEDIA_MOJO_MOJOM_MEDIA_METRICS_PROVIDER_MOJOM_PARAMS_DATA_H_