// services/network/public/mojom/parsed_headers.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_PARSED_HEADERS_MOJOM_SEND_VALIDATION_H_
#define SERVICES_NETWORK_PUBLIC_MOJOM_PARSED_HEADERS_MOJOM_SEND_VALIDATION_H_

#include "services/network/public/mojom/parsed_headers.mojom-shared-internal.h"
#include "services/network/public/mojom/connection_allowlist.mojom-shared.h"
#include "services/network/public/mojom/content_security_policy.mojom-shared.h"
#include "services/network/public/mojom/cross_origin_embedder_policy.mojom-shared.h"
#include "services/network/public/mojom/cross_origin_opener_policy.mojom-shared.h"
#include "services/network/public/mojom/integrity_policy.mojom-shared.h"
#include "services/network/public/mojom/document_isolation_policy.mojom-shared.h"
#include "services/network/public/mojom/link_header.mojom-shared.h"
#include "services/network/public/mojom/no_vary_search.mojom-shared.h"
#include "services/network/public/mojom/origin_or_wildcard_header_value.mojom-shared.h"
#include "services/network/public/mojom/supports_loading_mode.mojom-shared.h"
#include "services/network/public/mojom/timing_allow_origin.mojom-shared.h"
#include "services/network/public/mojom/declarative_performance_observer.mojom-shared.h"
#include "services/network/public/mojom/web_client_hints_types.mojom-shared.h"
#include "services/network/public/mojom/x_frame_options.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"

#include "services/network/public/mojom/parsed_headers.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::OriginAgentClusterValue, MaybeConstUserType>
    : std::false_type {};

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

      decltype(Traits::content_security_policy(input)) in_content_security_policy = Traits::content_security_policy(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->content_security_policy)::BaseType>
          content_security_policy_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& content_security_policy_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::ContentSecurityPolicyDataView>, send_validation>(
        in_content_security_policy,
        content_security_policy_fragment,
        &content_security_policy_validate_params);

      fragment->content_security_policy.Set(
          content_security_policy_fragment.is_null() ? nullptr : content_security_policy_fragment.data());

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

      decltype(Traits::allow_csp_from(input)) in_allow_csp_from = Traits::allow_csp_from(input);
      mojo::internal::MessageFragment<decltype(fragment->allow_csp_from)>
          allow_csp_from_fragment(fragment.message());
      allow_csp_from_fragment.Claim(&fragment->allow_csp_from);
      
      mojo::internal::Serialize<::network::mojom::OriginOrWildcardHeaderValueDataView, send_validation>(
        in_allow_csp_from,
        allow_csp_from_fragment,
        true);

      decltype(Traits::connection_allowlists(input)) in_connection_allowlists = Traits::connection_allowlists(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->connection_allowlists)::BaseType> connection_allowlists_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::ConnectionAllowlistsDataView, send_validation>(
        in_connection_allowlists,
        connection_allowlists_fragment);

      fragment->connection_allowlists.Set(
          connection_allowlists_fragment.is_null() ? nullptr : connection_allowlists_fragment.data());

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

      decltype(Traits::allow_connection_allowlist_from(input)) in_allow_connection_allowlist_from = Traits::allow_connection_allowlist_from(input);
      mojo::internal::MessageFragment<decltype(fragment->allow_connection_allowlist_from)>
          allow_connection_allowlist_from_fragment(fragment.message());
      allow_connection_allowlist_from_fragment.Claim(&fragment->allow_connection_allowlist_from);
      
      mojo::internal::Serialize<::network::mojom::OriginOrWildcardHeaderValueDataView, send_validation>(
        in_allow_connection_allowlist_from,
        allow_connection_allowlist_from_fragment,
        true);

      decltype(Traits::cross_origin_embedder_policy(input)) in_cross_origin_embedder_policy = Traits::cross_origin_embedder_policy(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->cross_origin_embedder_policy)::BaseType> cross_origin_embedder_policy_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::CrossOriginEmbedderPolicyDataView, send_validation>(
        in_cross_origin_embedder_policy,
        cross_origin_embedder_policy_fragment);

      fragment->cross_origin_embedder_policy.Set(
          cross_origin_embedder_policy_fragment.is_null() ? nullptr : cross_origin_embedder_policy_fragment.data());

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

      decltype(Traits::cross_origin_opener_policy(input)) in_cross_origin_opener_policy = Traits::cross_origin_opener_policy(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->cross_origin_opener_policy)::BaseType> cross_origin_opener_policy_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::CrossOriginOpenerPolicyDataView, send_validation>(
        in_cross_origin_opener_policy,
        cross_origin_opener_policy_fragment);

      fragment->cross_origin_opener_policy.Set(
          cross_origin_opener_policy_fragment.is_null() ? nullptr : cross_origin_opener_policy_fragment.data());

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

      decltype(Traits::document_isolation_policy(input)) in_document_isolation_policy = Traits::document_isolation_policy(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->document_isolation_policy)::BaseType> document_isolation_policy_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::DocumentIsolationPolicyDataView, send_validation>(
        in_document_isolation_policy,
        document_isolation_policy_fragment);

      fragment->document_isolation_policy.Set(
          document_isolation_policy_fragment.is_null() ? nullptr : document_isolation_policy_fragment.data());

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

      decltype(Traits::integrity_policy(input)) in_integrity_policy = Traits::integrity_policy(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->integrity_policy)::BaseType> integrity_policy_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::IntegrityPolicyDataView, send_validation>(
        in_integrity_policy,
        integrity_policy_fragment);

      fragment->integrity_policy.Set(
          integrity_policy_fragment.is_null() ? nullptr : integrity_policy_fragment.data());

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

      decltype(Traits::integrity_policy_report_only(input)) in_integrity_policy_report_only = Traits::integrity_policy_report_only(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->integrity_policy_report_only)::BaseType> integrity_policy_report_only_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::IntegrityPolicyDataView, send_validation>(
        in_integrity_policy_report_only,
        integrity_policy_report_only_fragment);

      fragment->integrity_policy_report_only.Set(
          integrity_policy_report_only_fragment.is_null() ? nullptr : integrity_policy_report_only_fragment.data());

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

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

      decltype(Traits::accept_ch(input)) in_accept_ch = Traits::accept_ch(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->accept_ch)::BaseType>
          accept_ch_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& accept_ch_validate_params =
          mojo::internal::GetArrayOfEnumsValidator<0, false, ::network::mojom::internal::WebClientHintsType_Data::Validate>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::WebClientHintsType>, send_validation>(
        in_accept_ch,
        accept_ch_fragment,
        &accept_ch_validate_params);

      fragment->accept_ch.Set(
          accept_ch_fragment.is_null() ? nullptr : accept_ch_fragment.data());

      decltype(Traits::critical_ch(input)) in_critical_ch = Traits::critical_ch(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->critical_ch)::BaseType>
          critical_ch_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& critical_ch_validate_params =
          mojo::internal::GetArrayOfEnumsValidator<0, false, ::network::mojom::internal::WebClientHintsType_Data::Validate>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::WebClientHintsType>, send_validation>(
        in_critical_ch,
        critical_ch_fragment,
        &critical_ch_validate_params);

      fragment->critical_ch.Set(
          critical_ch_fragment.is_null() ? nullptr : critical_ch_fragment.data());

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

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

      decltype(Traits::link_headers(input)) in_link_headers = Traits::link_headers(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->link_headers)::BaseType>
          link_headers_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& link_headers_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>, send_validation>(
        in_link_headers,
        link_headers_fragment,
        &link_headers_validate_params);

      fragment->link_headers.Set(
          link_headers_fragment.is_null() ? nullptr : link_headers_fragment.data());

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

      decltype(Traits::timing_allow_origin(input)) in_timing_allow_origin = Traits::timing_allow_origin(input);
      mojo::internal::MessageFragment<decltype(fragment->timing_allow_origin)>
          timing_allow_origin_fragment(fragment.message());
      timing_allow_origin_fragment.Claim(&fragment->timing_allow_origin);
      
      mojo::internal::Serialize<::network::mojom::TimingAllowOriginDataView, send_validation>(
        in_timing_allow_origin,
        timing_allow_origin_fragment,
        true);

      decltype(Traits::supports_loading_mode(input)) in_supports_loading_mode = Traits::supports_loading_mode(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->supports_loading_mode)::BaseType>
          supports_loading_mode_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& supports_loading_mode_validate_params =
          mojo::internal::GetArrayOfEnumsValidator<0, false, ::network::mojom::internal::LoadingMode_Data::Validate>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::LoadingMode>, send_validation>(
        in_supports_loading_mode,
        supports_loading_mode_fragment,
        &supports_loading_mode_validate_params);

      fragment->supports_loading_mode.Set(
          supports_loading_mode_fragment.is_null() ? nullptr : supports_loading_mode_fragment.data());

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

      decltype(Traits::reporting_endpoints(input)) in_reporting_endpoints = Traits::reporting_endpoints(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->reporting_endpoints)::BaseType>
          reporting_endpoints_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& reporting_endpoints_validate_params =
          mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>();
      
      mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>, send_validation>(
        in_reporting_endpoints,
        reporting_endpoints_fragment,
        &reporting_endpoints_validate_params);

      fragment->reporting_endpoints.Set(
          reporting_endpoints_fragment.is_null() ? nullptr : reporting_endpoints_fragment.data());

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

      fragment->cookie_indices.Set(
          cookie_indices_fragment.is_null() ? nullptr : cookie_indices_fragment.data());

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

      fragment->avail_language.Set(
          avail_language_fragment.is_null() ? nullptr : avail_language_fragment.data());

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

      fragment->content_language.Set(
          content_language_fragment.is_null() ? nullptr : content_language_fragment.data());

      decltype(Traits::no_vary_search_with_parse_error(input)) in_no_vary_search_with_parse_error = Traits::no_vary_search_with_parse_error(input);
      mojo::internal::MessageFragment<decltype(fragment->no_vary_search_with_parse_error)>
          no_vary_search_with_parse_error_fragment(fragment.message());
      no_vary_search_with_parse_error_fragment.Claim(&fragment->no_vary_search_with_parse_error);
      
      mojo::internal::Serialize<::network::mojom::NoVarySearchWithParseErrorDataView, send_validation>(
        in_no_vary_search_with_parse_error,
        no_vary_search_with_parse_error_fragment,
        true);

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

      decltype(Traits::declarative_performance_observer_policy(input)) in_declarative_performance_observer_policy = Traits::declarative_performance_observer_policy(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->declarative_performance_observer_policy)::BaseType> declarative_performance_observer_policy_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::DeclarativePerformanceObserverPolicyDataView, send_validation>(
        in_declarative_performance_observer_policy,
        declarative_performance_observer_policy_fragment);

      fragment->declarative_performance_observer_policy.Set(
          declarative_performance_observer_policy_fragment.is_null() ? nullptr : declarative_performance_observer_policy_fragment.data());

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

      fragment->prefetch_activation_beacon_endpoint.Set(
          prefetch_activation_beacon_endpoint_fragment.is_null() ? nullptr : prefetch_activation_beacon_endpoint_fragment.data());
  }
};

}  // namespace mojo::internal

#endif  // SERVICES_NETWORK_PUBLIC_MOJOM_PARSED_HEADERS_MOJOM_SEND_VALIDATION_H_