// media/mojo/mojom/speech_recognition.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_SPEECH_RECOGNITION_MOJOM_PARAMS_DATA_H_
#define MEDIA_MOJO_MOJOM_SPEECH_RECOGNITION_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  SpeechRecognitionContext_BindRecognizer_Params_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Handle_Data receiver;
  mojo::internal::Interface_Data client;
  uint8_t pad1_[4];
  mojo::internal::Pointer<internal::SpeechRecognitionOptions_Data> options;

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

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

  mojo::internal::StructHeader header_;
  uint8_t is_multichannel_supported : 1;
  uint8_t padfinal_[7];

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

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

  mojo::internal::StructHeader header_;
  mojo::internal::Handle_Data session_receiver;
  mojo::internal::Interface_Data session_client;
  mojo::internal::Handle_Data audio_forwarder;
  int32_t channel_count;
  int32_t sample_rate;
  mojo::internal::Pointer<internal::SpeechRecognitionOptions_Data> options;
  uint8_t continuous : 1;
  uint8_t padfinal_[7];

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

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

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::AudioDataS16_Data> buffer;
  mojo::internal::Pointer<::mojo_base::mojom::internal::TimeDelta_Data> media_start_pts;

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

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

  mojo::internal::StructHeader header_;

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

  SpeechRecognitionRecognizer_MarkDone_Params_Data();
  ~SpeechRecognitionRecognizer_MarkDone_Params_Data() = delete;
};
static_assert(sizeof(SpeechRecognitionRecognizer_MarkDone_Params_Data) == 8,
              "Bad sizeof(SpeechRecognitionRecognizer_MarkDone_Params_Data)");
class  SpeechRecognitionRecognizer_OnLanguageChanged_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> language;

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

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

  mojo::internal::StructHeader header_;
  uint8_t mask_offensive_words : 1;
  uint8_t padfinal_[7];

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

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

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::media::mojom::internal::SpeechRecognitionRecognitionContext_Data> recognition_context;

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

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

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<internal::SpeechRecognitionResult_Data> result;

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

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

  mojo::internal::StructHeader header_;
  uint8_t continue_recognition : 1;
  uint8_t padfinal_[7];

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

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

  mojo::internal::StructHeader header_;

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

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

  mojo::internal::StructHeader header_;

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

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

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<internal::LanguageIdentificationEvent_Data> event;

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

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

  mojo::internal::StructHeader header_;
  uint8_t is_speech_recognition_available : 1;
  uint8_t padfinal_[7];

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

  SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_Params_Data();
  ~SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_Params_Data() = delete;
};
static_assert(sizeof(SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_Params_Data) == 16,
              "Bad sizeof(SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_Params_Data)");
class  SpeechRecognitionBrowserObserver_SpeechRecognitionLanguageChanged_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> language;

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

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

  mojo::internal::StructHeader header_;
  uint8_t mask_offensive_words : 1;
  uint8_t padfinal_[7];

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

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

  mojo::internal::StructHeader header_;

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

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

  mojo::internal::StructHeader header_;

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

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

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::gfx::mojom::internal::Rect_Data> bounds;

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

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

  mojo::internal::StructHeader header_;

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

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

  mojo::internal::StructHeader header_;

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

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

  mojo::internal::StructHeader header_;
  mojo::internal::Interface_Data observer;

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

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

  mojo::internal::StructHeader header_;

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

  SpeechRecognitionClientBrowserInterface_REMOVED_1_Params_Data();
  ~SpeechRecognitionClientBrowserInterface_REMOVED_1_Params_Data() = delete;
};
static_assert(sizeof(SpeechRecognitionClientBrowserInterface_REMOVED_1_Params_Data) == 8,
              "Bad sizeof(SpeechRecognitionClientBrowserInterface_REMOVED_1_Params_Data)");

}  // namespace internal


class SpeechRecognitionContext_BindRecognizer_ParamsDataView {
 public:
  SpeechRecognitionContext_BindRecognizer_ParamsDataView() = default;

  SpeechRecognitionContext_BindRecognizer_ParamsDataView(
      internal::SpeechRecognitionContext_BindRecognizer_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::SpeechRecognitionRecognizerInterfaceBase>>(
            &data_->receiver, &result, message_);
    DCHECK(ret);
    return result;
  }
  template <typename UserType>
  UserType TakeClient() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfacePtrDataView<::media::mojom::SpeechRecognitionRecognizerClientInterfaceBase>>(
            &data_->client, &result, message_);
    DCHECK(ret);
    return result;
  }
  inline void GetOptionsDataView(
      SpeechRecognitionOptionsDataView* output);

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


class SpeechRecognitionContext_BindRecognizer_ResponseParamsDataView {
 public:
  SpeechRecognitionContext_BindRecognizer_ResponseParamsDataView() = default;

  SpeechRecognitionContext_BindRecognizer_ResponseParamsDataView(
      internal::SpeechRecognitionContext_BindRecognizer_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool is_multichannel_supported() const {
    return data_->is_multichannel_supported;
  }
 private:
  internal::SpeechRecognitionContext_BindRecognizer_ResponseParams_Data* data_ = nullptr;
};


class SpeechRecognitionContext_BindWebSpeechRecognizer_ParamsDataView {
 public:
  SpeechRecognitionContext_BindWebSpeechRecognizer_ParamsDataView() = default;

  SpeechRecognitionContext_BindWebSpeechRecognizer_ParamsDataView(
      internal::SpeechRecognitionContext_BindWebSpeechRecognizer_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  UserType TakeSessionReceiver() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfaceRequestDataView<::media::mojom::SpeechRecognitionSessionInterfaceBase>>(
            &data_->session_receiver, &result, message_);
    DCHECK(ret);
    return result;
  }
  template <typename UserType>
  UserType TakeSessionClient() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfacePtrDataView<::media::mojom::SpeechRecognitionSessionClientInterfaceBase>>(
            &data_->session_client, &result, message_);
    DCHECK(ret);
    return result;
  }
  template <typename UserType>
  UserType TakeAudioForwarder() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfaceRequestDataView<::media::mojom::SpeechRecognitionAudioForwarderInterfaceBase>>(
            &data_->audio_forwarder, &result, message_);
    DCHECK(ret);
    return result;
  }
  int32_t channel_count() const {
    return data_->channel_count;
  }
  int32_t sample_rate() const {
    return data_->sample_rate;
  }
  inline void GetOptionsDataView(
      SpeechRecognitionOptionsDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadOptions(UserType* output) {
    
    auto* pointer = data_->options.Get();
    return mojo::internal::Deserialize<::media::mojom::SpeechRecognitionOptionsDataView>(
        pointer, output, message_);
  }
  bool continuous() const {
    return data_->continuous;
  }
 private:
  internal::SpeechRecognitionContext_BindWebSpeechRecognizer_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SpeechRecognitionRecognizer_SendAudioToSpeechRecognitionService_ParamsDataView {
 public:
  SpeechRecognitionRecognizer_SendAudioToSpeechRecognitionService_ParamsDataView() = default;

  SpeechRecognitionRecognizer_SendAudioToSpeechRecognitionService_ParamsDataView(
      internal::SpeechRecognitionRecognizer_SendAudioToSpeechRecognitionService_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

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

  template <typename UserType>
  [[nodiscard]] bool ReadBuffer(UserType* output) {
    
    auto* pointer = data_->buffer.Get();
    return mojo::internal::Deserialize<::media::mojom::AudioDataS16DataView>(
        pointer, output, message_);
  }
  inline void GetMediaStartPtsDataView(
      ::mojo_base::mojom::TimeDeltaDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadMediaStartPts(UserType* output) {
    
static_assert(
    mojo::internal::IsValidUserTypeForOptionalValue<
        ::mojo_base::mojom::TimeDeltaDataView, UserType>(),
    "Attempting to read the optional `media_start_pts` field into a type which "
    "cannot represent a null value. Either wrap the destination object "
    "with std::optional, ensure that any corresponding "
    "{Struct/Union/Array/String}Traits define the necessary IsNull and "
    "SetToNull methods, or use `MaybeReadMediaStartPts` instead "
    "of `ReadMediaStartPts if you're fine with null values being "
    "silently ignored in this case.");
    auto* pointer = data_->header_.version >= 10
                    ? data_->media_start_pts.Get() : nullptr;
    return mojo::internal::Deserialize<::mojo_base::mojom::TimeDeltaDataView>(
        pointer, output, message_);
  }
 private:
  internal::SpeechRecognitionRecognizer_SendAudioToSpeechRecognitionService_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SpeechRecognitionRecognizer_MarkDone_ParamsDataView {
 public:
  SpeechRecognitionRecognizer_MarkDone_ParamsDataView() = default;

  SpeechRecognitionRecognizer_MarkDone_ParamsDataView(
      internal::SpeechRecognitionRecognizer_MarkDone_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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


class SpeechRecognitionRecognizer_OnLanguageChanged_ParamsDataView {
 public:
  SpeechRecognitionRecognizer_OnLanguageChanged_ParamsDataView() = default;

  SpeechRecognitionRecognizer_OnLanguageChanged_ParamsDataView(
      internal::SpeechRecognitionRecognizer_OnLanguageChanged_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

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

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


class SpeechRecognitionRecognizer_OnMaskOffensiveWordsChanged_ParamsDataView {
 public:
  SpeechRecognitionRecognizer_OnMaskOffensiveWordsChanged_ParamsDataView() = default;

  SpeechRecognitionRecognizer_OnMaskOffensiveWordsChanged_ParamsDataView(
      internal::SpeechRecognitionRecognizer_OnMaskOffensiveWordsChanged_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool mask_offensive_words() const {
    return data_->mask_offensive_words;
  }
 private:
  internal::SpeechRecognitionRecognizer_OnMaskOffensiveWordsChanged_Params_Data* data_ = nullptr;
};


class SpeechRecognitionRecognizer_UpdateRecognitionContext_ParamsDataView {
 public:
  SpeechRecognitionRecognizer_UpdateRecognitionContext_ParamsDataView() = default;

  SpeechRecognitionRecognizer_UpdateRecognitionContext_ParamsDataView(
      internal::SpeechRecognitionRecognizer_UpdateRecognitionContext_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

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

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


class SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ParamsDataView {
 public:
  SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ParamsDataView() = default;

  SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ParamsDataView(
      internal::SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetResultDataView(
      SpeechRecognitionResultDataView* output);

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


class SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ResponseParamsDataView {
 public:
  SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ResponseParamsDataView() = default;

  SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ResponseParamsDataView(
      internal::SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool continue_recognition() const {
    return data_->continue_recognition;
  }
 private:
  internal::SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ResponseParams_Data* data_ = nullptr;
};


class SpeechRecognitionRecognizerClient_OnSpeechRecognitionStopped_ParamsDataView {
 public:
  SpeechRecognitionRecognizerClient_OnSpeechRecognitionStopped_ParamsDataView() = default;

  SpeechRecognitionRecognizerClient_OnSpeechRecognitionStopped_ParamsDataView(
      internal::SpeechRecognitionRecognizerClient_OnSpeechRecognitionStopped_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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


class SpeechRecognitionRecognizerClient_OnSpeechRecognitionError_ParamsDataView {
 public:
  SpeechRecognitionRecognizerClient_OnSpeechRecognitionError_ParamsDataView() = default;

  SpeechRecognitionRecognizerClient_OnSpeechRecognitionError_ParamsDataView(
      internal::SpeechRecognitionRecognizerClient_OnSpeechRecognitionError_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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


class SpeechRecognitionRecognizerClient_OnLanguageIdentificationEvent_ParamsDataView {
 public:
  SpeechRecognitionRecognizerClient_OnLanguageIdentificationEvent_ParamsDataView() = default;

  SpeechRecognitionRecognizerClient_OnLanguageIdentificationEvent_ParamsDataView(
      internal::SpeechRecognitionRecognizerClient_OnLanguageIdentificationEvent_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetEventDataView(
      LanguageIdentificationEventDataView* output);

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


class SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_ParamsDataView {
 public:
  SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_ParamsDataView() = default;

  SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_ParamsDataView(
      internal::SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool is_speech_recognition_available() const {
    return data_->is_speech_recognition_available;
  }
 private:
  internal::SpeechRecognitionBrowserObserver_SpeechRecognitionAvailabilityChanged_Params_Data* data_ = nullptr;
};


class SpeechRecognitionBrowserObserver_SpeechRecognitionLanguageChanged_ParamsDataView {
 public:
  SpeechRecognitionBrowserObserver_SpeechRecognitionLanguageChanged_ParamsDataView() = default;

  SpeechRecognitionBrowserObserver_SpeechRecognitionLanguageChanged_ParamsDataView(
      internal::SpeechRecognitionBrowserObserver_SpeechRecognitionLanguageChanged_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

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

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


class SpeechRecognitionBrowserObserver_SpeechRecognitionMaskOffensiveWordsChanged_ParamsDataView {
 public:
  SpeechRecognitionBrowserObserver_SpeechRecognitionMaskOffensiveWordsChanged_ParamsDataView() = default;

  SpeechRecognitionBrowserObserver_SpeechRecognitionMaskOffensiveWordsChanged_ParamsDataView(
      internal::SpeechRecognitionBrowserObserver_SpeechRecognitionMaskOffensiveWordsChanged_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

  bool is_null() const { return !data_; }
  bool mask_offensive_words() const {
    return data_->mask_offensive_words;
  }
 private:
  internal::SpeechRecognitionBrowserObserver_SpeechRecognitionMaskOffensiveWordsChanged_Params_Data* data_ = nullptr;
};


class SpeechRecognitionSurface_Activate_ParamsDataView {
 public:
  SpeechRecognitionSurface_Activate_ParamsDataView() = default;

  SpeechRecognitionSurface_Activate_ParamsDataView(
      internal::SpeechRecognitionSurface_Activate_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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


class SpeechRecognitionSurface_GetBounds_ParamsDataView {
 public:
  SpeechRecognitionSurface_GetBounds_ParamsDataView() = default;

  SpeechRecognitionSurface_GetBounds_ParamsDataView(
      internal::SpeechRecognitionSurface_GetBounds_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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


class SpeechRecognitionSurface_GetBounds_ResponseParamsDataView {
 public:
  SpeechRecognitionSurface_GetBounds_ResponseParamsDataView() = default;

  SpeechRecognitionSurface_GetBounds_ResponseParamsDataView(
      internal::SpeechRecognitionSurface_GetBounds_ResponseParams_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  inline void GetBoundsDataView(
      ::gfx::mojom::RectDataView* output);

  template <typename UserType>
  [[nodiscard]] bool ReadBounds(UserType* output) {
    
static_assert(
    mojo::internal::IsValidUserTypeForOptionalValue<
        ::gfx::mojom::RectDataView, UserType>(),
    "Attempting to read the optional `bounds` field into a type which "
    "cannot represent a null value. Either wrap the destination object "
    "with std::optional, ensure that any corresponding "
    "{Struct/Union/Array/String}Traits define the necessary IsNull and "
    "SetToNull methods, or use `MaybeReadBounds` instead "
    "of `ReadBounds if you're fine with null values being "
    "silently ignored in this case.");
    auto* pointer = data_->bounds.Get();
    return mojo::internal::Deserialize<::gfx::mojom::RectDataView>(
        pointer, output, message_);
  }
 private:
  internal::SpeechRecognitionSurface_GetBounds_ResponseParams_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SpeechRecognitionSurfaceClient_OnSessionEnded_ParamsDataView {
 public:
  SpeechRecognitionSurfaceClient_OnSessionEnded_ParamsDataView() = default;

  SpeechRecognitionSurfaceClient_OnSessionEnded_ParamsDataView(
      internal::SpeechRecognitionSurfaceClient_OnSessionEnded_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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


class SpeechRecognitionSurfaceClient_OnFullscreenToggled_ParamsDataView {
 public:
  SpeechRecognitionSurfaceClient_OnFullscreenToggled_ParamsDataView() = default;

  SpeechRecognitionSurfaceClient_OnFullscreenToggled_ParamsDataView(
      internal::SpeechRecognitionSurfaceClient_OnFullscreenToggled_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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


class SpeechRecognitionClientBrowserInterface_BindSpeechRecognitionBrowserObserver_ParamsDataView {
 public:
  SpeechRecognitionClientBrowserInterface_BindSpeechRecognitionBrowserObserver_ParamsDataView() = default;

  SpeechRecognitionClientBrowserInterface_BindSpeechRecognitionBrowserObserver_ParamsDataView(
      internal::SpeechRecognitionClientBrowserInterface_BindSpeechRecognitionBrowserObserver_Params_Data* data,
      mojo::Message* message)
      : data_(data), message_(message) {}

  bool is_null() const { return !data_; }
  template <typename UserType>
  UserType TakeObserver() {
    UserType result;
    bool ret =
        mojo::internal::Deserialize<mojo::InterfacePtrDataView<::media::mojom::SpeechRecognitionBrowserObserverInterfaceBase>>(
            &data_->observer, &result, message_);
    DCHECK(ret);
    return result;
  }
 private:
  internal::SpeechRecognitionClientBrowserInterface_BindSpeechRecognitionBrowserObserver_Params_Data* data_ = nullptr;
  mojo::Message* message_ = nullptr;
};


class SpeechRecognitionClientBrowserInterface_REMOVED_1_ParamsDataView {
 public:
  SpeechRecognitionClientBrowserInterface_REMOVED_1_ParamsDataView() = default;

  SpeechRecognitionClientBrowserInterface_REMOVED_1_ParamsDataView(
      internal::SpeechRecognitionClientBrowserInterface_REMOVED_1_Params_Data* data,
      mojo::Message* message)
      : data_(data) {}

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

inline void SpeechRecognitionContext_BindRecognizer_ParamsDataView::GetOptionsDataView(
    SpeechRecognitionOptionsDataView* output) {
  auto pointer = data_->options.Get();
  *output = SpeechRecognitionOptionsDataView(pointer, message_);
}




inline void SpeechRecognitionContext_BindWebSpeechRecognizer_ParamsDataView::GetOptionsDataView(
    SpeechRecognitionOptionsDataView* output) {
  auto pointer = data_->options.Get();
  *output = SpeechRecognitionOptionsDataView(pointer, message_);
}


inline void SpeechRecognitionRecognizer_SendAudioToSpeechRecognitionService_ParamsDataView::GetBufferDataView(
    ::media::mojom::AudioDataS16DataView* output) {
  auto pointer = data_->buffer.Get();
  *output = ::media::mojom::AudioDataS16DataView(pointer, message_);
}
inline void SpeechRecognitionRecognizer_SendAudioToSpeechRecognitionService_ParamsDataView::GetMediaStartPtsDataView(
    ::mojo_base::mojom::TimeDeltaDataView* output) {
  auto pointer = data_->header_.version >= 10
                 ? data_->media_start_pts.Get() : nullptr;
  *output = ::mojo_base::mojom::TimeDeltaDataView(pointer, message_);
}




inline void SpeechRecognitionRecognizer_OnLanguageChanged_ParamsDataView::GetLanguageDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->language.Get();
  *output = mojo::StringDataView(pointer, message_);
}




inline void SpeechRecognitionRecognizer_UpdateRecognitionContext_ParamsDataView::GetRecognitionContextDataView(
    ::media::mojom::SpeechRecognitionRecognitionContextDataView* output) {
  auto pointer = data_->recognition_context.Get();
  *output = ::media::mojom::SpeechRecognitionRecognitionContextDataView(pointer, message_);
}


inline void SpeechRecognitionRecognizerClient_OnSpeechRecognitionRecognitionEvent_ParamsDataView::GetResultDataView(
    SpeechRecognitionResultDataView* output) {
  auto pointer = data_->result.Get();
  *output = SpeechRecognitionResultDataView(pointer, message_);
}








inline void SpeechRecognitionRecognizerClient_OnLanguageIdentificationEvent_ParamsDataView::GetEventDataView(
    LanguageIdentificationEventDataView* output) {
  auto pointer = data_->event.Get();
  *output = LanguageIdentificationEventDataView(pointer, message_);
}




inline void SpeechRecognitionBrowserObserver_SpeechRecognitionLanguageChanged_ParamsDataView::GetLanguageDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->language.Get();
  *output = mojo::StringDataView(pointer, message_);
}








inline void SpeechRecognitionSurface_GetBounds_ResponseParamsDataView::GetBoundsDataView(
    ::gfx::mojom::RectDataView* output) {
  auto pointer = data_->bounds.Get();
  *output = ::gfx::mojom::RectDataView(pointer, message_);
}











}  // media::mojom

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

#endif  // MEDIA_MOJO_MOJOM_SPEECH_RECOGNITION_MOJOM_PARAMS_DATA_H_