// services/network/public/mojom/connection_allowlist.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 SERVICES_NETWORK_PUBLIC_MOJOM_CONNECTION_ALLOWLIST_MOJOM_SEND_VALIDATION_H_
#define SERVICES_NETWORK_PUBLIC_MOJOM_CONNECTION_ALLOWLIST_MOJOM_SEND_VALIDATION_H_

#include "services/network/public/mojom/connection_allowlist.mojom-shared-internal.h"
#include "mojo/public/mojom/base/unguessable_token.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"

#include "services/network/public/mojom/connection_allowlist.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/has_send_validation_helper.h"

namespace mojo::internal {
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::network::mojom::ConnectionAllowlistIssue, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::network::mojom::RedirectBehavior, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::network::mojom::WebRtcBehavior, MaybeConstUserType>
    : std::false_type {};

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

      decltype(Traits::allowlist(input)) in_allowlist = Traits::allowlist(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->allowlist)::BaseType>
          allowlist_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& allowlist_validate_params =
          mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>, send_validation>(
        in_allowlist,
        allowlist_fragment,
        &allowlist_validate_params);

      fragment->allowlist.Set(
          allowlist_fragment.is_null() ? nullptr : allowlist_fragment.data());

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

      decltype(Traits::reporting_endpoint(input)) in_reporting_endpoint = Traits::reporting_endpoint(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->reporting_endpoint)::BaseType> reporting_endpoint_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_reporting_endpoint,
        reporting_endpoint_fragment);

      fragment->reporting_endpoint.Set(
          reporting_endpoint_fragment.is_null() ? nullptr : reporting_endpoint_fragment.data());

      decltype(Traits::issues(input)) in_issues = Traits::issues(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->issues)::BaseType>
          issues_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& issues_validate_params =
          mojo::internal::GetArrayOfEnumsValidator<0, false, ::network::mojom::internal::ConnectionAllowlistIssue_Data::Validate>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::ConnectionAllowlistIssue>, send_validation>(
        in_issues,
        issues_fragment,
        &issues_validate_params);

      fragment->issues.Set(
          issues_fragment.is_null() ? nullptr : issues_fragment.data());

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

      
      mojo::internal::Serialize<::network::mojom::RedirectBehavior>(
        Traits::redirect_behavior(input),
        &fragment->redirect_behavior);

      
      mojo::internal::Serialize<::network::mojom::WebRtcBehavior>(
        Traits::webrtc_behavior(input),
        &fragment->webrtc_behavior);

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

      decltype(Traits::serialized_value(input)) in_serialized_value = Traits::serialized_value(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->serialized_value)::BaseType> serialized_value_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_serialized_value,
        serialized_value_fragment);

      fragment->serialized_value.Set(
          serialized_value_fragment.is_null() ? nullptr : serialized_value_fragment.data());

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

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

      decltype(Traits::response_url(input)) in_response_url = Traits::response_url(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->response_url)::BaseType> response_url_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::url::mojom::UrlDataView, send_validation>(
        in_response_url,
        response_url_fragment);

      fragment->response_url.Set(
          response_url_fragment.is_null() ? nullptr : response_url_fragment.data());

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

      decltype(Traits::enforced(input)) in_enforced = Traits::enforced(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->enforced)::BaseType> enforced_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::ConnectionAllowlistDataView, send_validation>(
        in_enforced,
        enforced_fragment);

      fragment->enforced.Set(
          enforced_fragment.is_null() ? nullptr : enforced_fragment.data());

      decltype(Traits::report_only(input)) in_report_only = Traits::report_only(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->report_only)::BaseType> report_only_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::ConnectionAllowlistDataView, send_validation>(
        in_report_only,
        report_only_fragment);

      fragment->report_only.Set(
          report_only_fragment.is_null() ? nullptr : report_only_fragment.data());

      decltype(Traits::reporting_source(input)) in_reporting_source = Traits::reporting_source(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->reporting_source)::BaseType> reporting_source_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView, send_validation>(
        in_reporting_source,
        reporting_source_fragment);

      fragment->reporting_source.Set(
          reporting_source_fragment.is_null() ? nullptr : reporting_source_fragment.data());
  }
};

}  // namespace mojo::internal

#endif  // SERVICES_NETWORK_PUBLIC_MOJOM_CONNECTION_ALLOWLIST_MOJOM_SEND_VALIDATION_H_