// third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom-send-validation.h is auto generated by mojom_bindings_generator.py, do not edit

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

#ifndef THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLUETOOTH_WEB_BLUETOOTH_MOJOM_SEND_VALIDATION_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLUETOOTH_WEB_BLUETOOTH_MOJOM_SEND_VALIDATION_H_

#include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom-shared-internal.h"
#include "device/bluetooth/public/mojom/uuid.mojom-shared.h"
#include "mojo/public/mojom/base/read_only_buffer.mojom-shared.h"

#include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom-data-view.h"

#include "mojo/public/cpp/bindings/lib/send_validation_type.h"
#include "mojo/public/cpp/bindings/lib/send_validation.h"
#include "mojo/public/cpp/bindings/lib/interface_serialization_send_validation.h"
#include "mojo/public/cpp/bindings/lib/has_send_validation_helper.h"

namespace mojo::internal {
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::blink::mojom::WebBluetoothResult, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::blink::mojom::WebBluetoothGATTQueryQuantity, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::blink::mojom::WebBluetoothWriteType, MaybeConstUserType>
    : std::false_type {};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothLeScanFilterDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothLeScanFilterDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothLeScanFilter_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::services(input)) in_services = Traits::services(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->services)::BaseType>
          services_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& services_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::bluetooth::mojom::UUIDDataView>, send_validation>(
        in_services,
        services_fragment,
        &services_validate_params);

      fragment->services.Set(
          services_fragment.is_null() ? nullptr : services_fragment.data());

      decltype(Traits::name(input)) in_name = Traits::name(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->name)::BaseType> name_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_name,
        name_fragment);

      fragment->name.Set(
          name_fragment.is_null() ? nullptr : name_fragment.data());

      decltype(Traits::name_prefix(input)) in_name_prefix = Traits::name_prefix(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->name_prefix)::BaseType> name_prefix_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_name_prefix,
        name_prefix_fragment);

      fragment->name_prefix.Set(
          name_prefix_fragment.is_null() ? nullptr : name_prefix_fragment.data());

      decltype(Traits::manufacturer_data(input)) in_manufacturer_data = Traits::manufacturer_data(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->manufacturer_data)::BaseType>
          manufacturer_data_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& manufacturer_data_validate_params =
          mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>();
      
      mojo::internal::Serialize<mojo::MapDataView<::blink::mojom::WebBluetoothCompanyDataView, mojo::ArrayDataView<::blink::mojom::WebBluetoothDataFilterDataView>>, send_validation>(
        in_manufacturer_data,
        manufacturer_data_fragment,
        &manufacturer_data_validate_params);

      fragment->manufacturer_data.Set(
          manufacturer_data_fragment.is_null() ? nullptr : manufacturer_data_fragment.data());
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothCompanyDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothCompanyDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothCompany_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->id = Traits::id(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothDataFilterDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothDataFilterDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothDataFilter_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      fragment->data = Traits::data(input);

      fragment->mask = Traits::mask(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothRequestDeviceOptionsDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothRequestDeviceOptionsDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothRequestDeviceOptions_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::filters(input)) in_filters = Traits::filters(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->filters)::BaseType>
          filters_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& filters_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::blink::mojom::WebBluetoothLeScanFilterDataView>, send_validation>(
        in_filters,
        filters_fragment,
        &filters_validate_params);

      fragment->filters.Set(
          filters_fragment.is_null() ? nullptr : filters_fragment.data());

      decltype(Traits::exclusion_filters(input)) in_exclusion_filters = Traits::exclusion_filters(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->exclusion_filters)::BaseType>
          exclusion_filters_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& exclusion_filters_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::blink::mojom::WebBluetoothLeScanFilterDataView>, send_validation>(
        in_exclusion_filters,
        exclusion_filters_fragment,
        &exclusion_filters_validate_params);

      fragment->exclusion_filters.Set(
          exclusion_filters_fragment.is_null() ? nullptr : exclusion_filters_fragment.data());

      decltype(Traits::optional_services(input)) in_optional_services = Traits::optional_services(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->optional_services)::BaseType>
          optional_services_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& optional_services_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::bluetooth::mojom::UUIDDataView>, send_validation>(
        in_optional_services,
        optional_services_fragment,
        &optional_services_validate_params);

      fragment->optional_services.Set(
          optional_services_fragment.is_null() ? nullptr : optional_services_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->optional_services.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null optional_services in WebBluetoothRequestDeviceOptions struct");

      decltype(Traits::optional_manufacturer_data(input)) in_optional_manufacturer_data = Traits::optional_manufacturer_data(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->optional_manufacturer_data)::BaseType>
          optional_manufacturer_data_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& optional_manufacturer_data_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<uint16_t>, send_validation>(
        in_optional_manufacturer_data,
        optional_manufacturer_data_fragment,
        &optional_manufacturer_data_validate_params);

      fragment->optional_manufacturer_data.Set(
          optional_manufacturer_data_fragment.is_null() ? nullptr : optional_manufacturer_data_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->optional_manufacturer_data.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null optional_manufacturer_data in WebBluetoothRequestDeviceOptions struct");

      fragment->accept_all_devices = Traits::accept_all_devices(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothRequestLEScanOptionsDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothRequestLEScanOptionsDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothRequestLEScanOptions_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::filters(input)) in_filters = Traits::filters(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->filters)::BaseType>
          filters_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& filters_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::blink::mojom::WebBluetoothLeScanFilterDataView>, send_validation>(
        in_filters,
        filters_fragment,
        &filters_validate_params);

      fragment->filters.Set(
          filters_fragment.is_null() ? nullptr : filters_fragment.data());

      fragment->keep_repeated_devices = Traits::keep_repeated_devices(input);

      fragment->accept_all_advertisements = Traits::accept_all_advertisements(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothDeviceIdDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothDeviceIdDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothDeviceId_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::device_id(input)) in_device_id = Traits::device_id(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->device_id)::BaseType>
          device_id_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& device_id_validate_params =
          mojo::internal::GetArrayValidator<16, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<uint8_t>, send_validation>(
        in_device_id,
        device_id_fragment,
        &device_id_validate_params);

      fragment->device_id.Set(
          device_id_fragment.is_null() ? nullptr : device_id_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->device_id.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null device_id in WebBluetoothDeviceId struct");
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothDeviceDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothDeviceDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothDevice_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::id(input)) in_id = Traits::id(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->id)::BaseType> id_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::WebBluetoothDeviceIdDataView, send_validation>(
        in_id,
        id_fragment);

      fragment->id.Set(
          id_fragment.is_null() ? nullptr : id_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->id.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null id in WebBluetoothDevice struct");

      decltype(Traits::name(input)) in_name = Traits::name(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->name)::BaseType> name_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_name,
        name_fragment);

      fragment->name.Set(
          name_fragment.is_null() ? nullptr : name_fragment.data());
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothRemoteGATTServiceDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothRemoteGATTServiceDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothRemoteGATTService_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::instance_id(input)) in_instance_id = Traits::instance_id(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->instance_id)::BaseType> instance_id_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_instance_id,
        instance_id_fragment);

      fragment->instance_id.Set(
          instance_id_fragment.is_null() ? nullptr : instance_id_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->instance_id.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null instance_id in WebBluetoothRemoteGATTService struct");

      decltype(Traits::uuid(input)) in_uuid = Traits::uuid(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->uuid)::BaseType> uuid_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::bluetooth::mojom::UUIDDataView, send_validation>(
        in_uuid,
        uuid_fragment);

      fragment->uuid.Set(
          uuid_fragment.is_null() ? nullptr : uuid_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->uuid.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null uuid in WebBluetoothRemoteGATTService struct");
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothRemoteGATTCharacteristicDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothRemoteGATTCharacteristicDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothRemoteGATTCharacteristic_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::instance_id(input)) in_instance_id = Traits::instance_id(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->instance_id)::BaseType> instance_id_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_instance_id,
        instance_id_fragment);

      fragment->instance_id.Set(
          instance_id_fragment.is_null() ? nullptr : instance_id_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->instance_id.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null instance_id in WebBluetoothRemoteGATTCharacteristic struct");

      decltype(Traits::uuid(input)) in_uuid = Traits::uuid(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->uuid)::BaseType> uuid_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::bluetooth::mojom::UUIDDataView, send_validation>(
        in_uuid,
        uuid_fragment);

      fragment->uuid.Set(
          uuid_fragment.is_null() ? nullptr : uuid_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->uuid.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null uuid in WebBluetoothRemoteGATTCharacteristic struct");

      fragment->properties = Traits::properties(input);
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothAdvertisingEventDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothAdvertisingEventDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothAdvertisingEvent_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::device(input)) in_device = Traits::device(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->device)::BaseType> device_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::WebBluetoothDeviceDataView, send_validation>(
        in_device,
        device_fragment);

      fragment->device.Set(
          device_fragment.is_null() ? nullptr : device_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->device.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null device in WebBluetoothAdvertisingEvent struct");

      decltype(Traits::name(input)) in_name = Traits::name(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->name)::BaseType> name_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_name,
        name_fragment);

      fragment->name.Set(
          name_fragment.is_null() ? nullptr : name_fragment.data());

      decltype(Traits::uuids(input)) in_uuids = Traits::uuids(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->uuids)::BaseType>
          uuids_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& uuids_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::bluetooth::mojom::UUIDDataView>, send_validation>(
        in_uuids,
        uuids_fragment,
        &uuids_validate_params);

      fragment->uuids.Set(
          uuids_fragment.is_null() ? nullptr : uuids_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->uuids.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null uuids in WebBluetoothAdvertisingEvent struct");

      fragment->appearance_is_set = Traits::appearance_is_set(input);

      fragment->appearance = Traits::appearance(input);

      fragment->tx_power_is_set = Traits::tx_power_is_set(input);

      fragment->tx_power = Traits::tx_power(input);

      fragment->rssi_is_set = Traits::rssi_is_set(input);

      fragment->rssi = Traits::rssi(input);

      decltype(Traits::manufacturer_data(input)) in_manufacturer_data = Traits::manufacturer_data(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->manufacturer_data)::BaseType>
          manufacturer_data_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& manufacturer_data_validate_params =
          mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>();
      
      mojo::internal::Serialize<mojo::MapDataView<::blink::mojom::WebBluetoothCompanyDataView, mojo::ArrayDataView<uint8_t>>, send_validation>(
        in_manufacturer_data,
        manufacturer_data_fragment,
        &manufacturer_data_validate_params);

      fragment->manufacturer_data.Set(
          manufacturer_data_fragment.is_null() ? nullptr : manufacturer_data_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->manufacturer_data.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null manufacturer_data in WebBluetoothAdvertisingEvent struct");

      decltype(Traits::service_data(input)) in_service_data = Traits::service_data(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->service_data)::BaseType>
          service_data_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& service_data_validate_params =
          mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>();
      
      mojo::internal::Serialize<mojo::MapDataView<::bluetooth::mojom::UUIDDataView, mojo::ArrayDataView<uint8_t>>, send_validation>(
        in_service_data,
        service_data_fragment,
        &service_data_validate_params);

      fragment->service_data.Set(
          service_data_fragment.is_null() ? nullptr : service_data_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->service_data.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null service_data in WebBluetoothAdvertisingEvent struct");
  }
};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::blink::mojom::WebBluetoothRemoteGATTDescriptorDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebBluetoothRemoteGATTDescriptorDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::WebBluetoothRemoteGATTDescriptor_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::instance_id(input)) in_instance_id = Traits::instance_id(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->instance_id)::BaseType> instance_id_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_instance_id,
        instance_id_fragment);

      fragment->instance_id.Set(
          instance_id_fragment.is_null() ? nullptr : instance_id_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->instance_id.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null instance_id in WebBluetoothRemoteGATTDescriptor struct");

      decltype(Traits::uuid(input)) in_uuid = Traits::uuid(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->uuid)::BaseType> uuid_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::bluetooth::mojom::UUIDDataView, send_validation>(
        in_uuid,
        uuid_fragment);

      fragment->uuid.Set(
          uuid_fragment.is_null() ? nullptr : uuid_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->uuid.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null uuid in WebBluetoothRemoteGATTDescriptor struct");
  }
};

}  // namespace mojo::internal

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLUETOOTH_WEB_BLUETOOTH_MOJOM_SEND_VALIDATION_H_