// content/common/navigation_client.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 CONTENT_COMMON_NAVIGATION_CLIENT_MOJOM_SEND_VALIDATION_H_
#define CONTENT_COMMON_NAVIGATION_CLIENT_MOJOM_SEND_VALIDATION_H_

#include "content/common/navigation_client.mojom-shared-internal.h"
#include "content/common/frame_messages.mojom-shared.h"
#include "content/public/common/alternative_error_page_override_info.mojom-shared.h"
#include "mojo/public/mojom/base/byte_string.mojom-shared.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "mojo/public/mojom/base/unguessable_token.mojom-shared.h"
#include "mojo/public/mojom/base/uuid.mojom-shared.h"
#include "services/network/public/mojom/network_param.mojom-shared.h"
#include "services/network/public/mojom/restricted_cookie_manager.mojom-shared.h"
#include "services/network/public/mojom/url_loader.mojom-shared.h"
#include "services/network/public/mojom/url_loader_factory.mojom-shared.h"
#include "services/network/public/mojom/url_response_head.mojom-shared.h"
#include "third_party/blink/public/mojom/commit_result/commit_result.mojom-shared.h"
#include "third_party/blink/public/mojom/dom_storage/storage_area.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/policy_container.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/code_cache.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/referrer.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/fetch_later.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/same_document_navigation_type.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/transferrable_url_loader.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/url_loader_factory_bundle.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/navigation_params.mojom-shared.h"
#include "third_party/blink/public/mojom/permissions_policy/document_policy_feature.mojom-shared.h"
#include "services/network/public/mojom/permissions_policy/permissions_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/permissions_policy/policy_value.mojom-shared.h"
#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/service_worker/controller_service_worker.mojom-shared.h"
#include "third_party/blink/public/mojom/service_worker/service_worker_container.mojom-shared.h"
#include "third_party/blink/public/mojom/tokens/tokens.mojom-shared.h"
#include "url/mojom/origin.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"

#include "content/common/navigation_client.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<::content::mojom::NavigationClientDisconnectReason, MaybeConstUserType>
    : std::false_type {};

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

      decltype(Traits::data(input)) in_data = Traits::data(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->data)::BaseType> data_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::ByteStringDataView, send_validation>(
        in_data,
        data_fragment);

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

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

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

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

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

      decltype(Traits::navigation_api_key(input)) in_navigation_api_key = Traits::navigation_api_key(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->navigation_api_key)::BaseType> navigation_api_key_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_navigation_api_key,
        navigation_api_key_fragment);

      fragment->navigation_api_key.Set(
          navigation_api_key_fragment.is_null() ? nullptr : navigation_api_key_fragment.data());

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

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

      fragment->url.Set(
          url_fragment.is_null() ? nullptr : url_fragment.data());

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

      decltype(Traits::referrer(input)) in_referrer = Traits::referrer(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->referrer)::BaseType> referrer_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::ReferrerDataView, send_validation>(
        in_referrer,
        referrer_fragment);

      fragment->referrer.Set(
          referrer_fragment.is_null() ? nullptr : referrer_fragment.data());

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

      
      mojo::internal::Serialize<::content::mojom::PageTransition>(
        Traits::transition(input),
        &fragment->transition);

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

      decltype(Traits::contents_mime_type(input)) in_contents_mime_type = Traits::contents_mime_type(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->contents_mime_type)::BaseType> contents_mime_type_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_contents_mime_type,
        contents_mime_type_fragment);

      fragment->contents_mime_type.Set(
          contents_mime_type_fragment.is_null() ? nullptr : contents_mime_type_fragment.data());

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

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

      decltype(Traits::method(input)) in_method = Traits::method(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->method)::BaseType> method_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_method,
        method_fragment);

      fragment->method.Set(
          method_fragment.is_null() ? nullptr : method_fragment.data());

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

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

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

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

      decltype(Traits::previous_page_state(input)) in_previous_page_state = Traits::previous_page_state(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->previous_page_state)::BaseType> previous_page_state_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::content::mojom::PageStateDataView, send_validation>(
        in_previous_page_state,
        previous_page_state_fragment);

      fragment->previous_page_state.Set(
          previous_page_state_fragment.is_null() ? nullptr : previous_page_state_fragment.data());

      decltype(Traits::page_state(input)) in_page_state = Traits::page_state(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->page_state)::BaseType> page_state_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::content::mojom::PageStateDataView, send_validation>(
        in_page_state,
        page_state_fragment);

      fragment->page_state.Set(
          page_state_fragment.is_null() ? nullptr : page_state_fragment.data());

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

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

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

      decltype(Traits::origin(input)) in_origin = Traits::origin(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->origin)::BaseType> origin_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::url::mojom::OriginDataView, send_validation>(
        in_origin,
        origin_fragment);

      fragment->origin.Set(
          origin_fragment.is_null() ? nullptr : origin_fragment.data());

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

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

      fragment->initiator_base_url.Set(
          initiator_base_url_fragment.is_null() ? nullptr : initiator_base_url_fragment.data());

      decltype(Traits::permissions_policy_header(input)) in_permissions_policy_header = Traits::permissions_policy_header(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->permissions_policy_header)::BaseType>
          permissions_policy_header_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& permissions_policy_header_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::ParsedPermissionsPolicyDeclarationDataView>, send_validation>(
        in_permissions_policy_header,
        permissions_policy_header_fragment,
        &permissions_policy_header_validate_params);

      fragment->permissions_policy_header.Set(
          permissions_policy_header_fragment.is_null() ? nullptr : permissions_policy_header_fragment.data());

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

      decltype(Traits::document_policy_header(input)) in_document_policy_header = Traits::document_policy_header(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->document_policy_header)::BaseType>
          document_policy_header_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& document_policy_header_validate_params =
          mojo::internal::GetMapValidator<*&mojo::internal::GetArrayOfEnumsValidator<0, false, ::blink::mojom::internal::DocumentPolicyFeature_Data::Validate>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>();
      
      mojo::internal::Serialize<mojo::MapDataView<::blink::mojom::DocumentPolicyFeature, ::blink::mojom::PolicyValueDataView>, send_validation>(
        in_document_policy_header,
        document_policy_header_fragment,
        &document_policy_header_validate_params);

      fragment->document_policy_header.Set(
          document_policy_header_fragment.is_null() ? nullptr : document_policy_header_fragment.data());

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

      
      mojo::internal::Serialize<::blink::mojom::InsecureRequestPolicy>(
        Traits::insecure_request_policy(input),
        &fragment->insecure_request_policy);

      decltype(Traits::insecure_navigations_set(input)) in_insecure_navigations_set = Traits::insecure_navigations_set(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->insecure_navigations_set)::BaseType>
          insecure_navigations_set_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& insecure_navigations_set_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<uint32_t>, send_validation>(
        in_insecure_navigations_set,
        insecure_navigations_set_fragment,
        &insecure_navigations_set_validate_params);

      fragment->insecure_navigations_set.Set(
          insecure_navigations_set_fragment.is_null() ? nullptr : insecure_navigations_set_fragment.data());

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

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

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

      fragment->navigation_token.Set(
          navigation_token_fragment.is_null() ? nullptr : navigation_token_fragment.data());

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

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

      fragment->embedding_token.Set(
          embedding_token_fragment.is_null() ? nullptr : embedding_token_fragment.data());

      decltype(Traits::unload_start(input)) in_unload_start = Traits::unload_start(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->unload_start)::BaseType> unload_start_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_unload_start,
        unload_start_fragment);

      fragment->unload_start.Set(
          unload_start_fragment.is_null() ? nullptr : unload_start_fragment.data());

      decltype(Traits::unload_end(input)) in_unload_end = Traits::unload_end(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->unload_end)::BaseType> unload_end_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_unload_end,
        unload_end_fragment);

      fragment->unload_end.Set(
          unload_end_fragment.is_null() ? nullptr : unload_end_fragment.data());

      decltype(Traits::commit_navigation_start(input)) in_commit_navigation_start = Traits::commit_navigation_start(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->commit_navigation_start)::BaseType> commit_navigation_start_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_commit_navigation_start,
        commit_navigation_start_fragment);

      fragment->commit_navigation_start.Set(
          commit_navigation_start_fragment.is_null() ? nullptr : commit_navigation_start_fragment.data());

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

      decltype(Traits::commit_navigation_end(input)) in_commit_navigation_end = Traits::commit_navigation_end(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->commit_navigation_end)::BaseType> commit_navigation_end_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_commit_navigation_end,
        commit_navigation_end_fragment);

      fragment->commit_navigation_end.Set(
          commit_navigation_end_fragment.is_null() ? nullptr : commit_navigation_end_fragment.data());

      decltype(Traits::commit_reply_sent(input)) in_commit_reply_sent = Traits::commit_reply_sent(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->commit_reply_sent)::BaseType> commit_reply_sent_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_commit_reply_sent,
        commit_reply_sent_fragment);

      fragment->commit_reply_sent.Set(
          commit_reply_sent_fragment.is_null() ? nullptr : commit_reply_sent_fragment.data());

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

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

      
      mojo::internal::Serialize<::blink::mojom::SameDocumentNavigationType>(
        Traits::same_document_navigation_type(input),
        &fragment->same_document_navigation_type);

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

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

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

      decltype(Traits::navigation_entry_screenshot_destination(input)) in_navigation_entry_screenshot_destination = Traits::navigation_entry_screenshot_destination(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->navigation_entry_screenshot_destination)::BaseType> navigation_entry_screenshot_destination_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::SameDocNavigationScreenshotDestinationTokenDataView, send_validation>(
        in_navigation_entry_screenshot_destination,
        navigation_entry_screenshot_destination_fragment);

      fragment->navigation_entry_screenshot_destination.Set(
          navigation_entry_screenshot_destination_fragment.is_null() ? nullptr : navigation_entry_screenshot_destination_fragment.data());

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

      fragment->same_document_metrics_token.Set(
          same_document_metrics_token_fragment.is_null() ? nullptr : same_document_metrics_token_fragment.data());

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

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

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

      decltype(Traits::origin(input)) in_origin = Traits::origin(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->origin)::BaseType> origin_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::url::mojom::OriginDataView, send_validation>(
        in_origin,
        origin_fragment);

      fragment->origin.Set(
          origin_fragment.is_null() ? nullptr : origin_fragment.data());

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

      decltype(Traits::cookie_manager(input)) in_cookie_manager = Traits::cookie_manager(input);

      
      mojo::internal::Serialize<mojo::InterfacePtrDataView<::network::mojom::RestrictedCookieManagerInterfaceBase>>(
        in_cookie_manager,
        &fragment->cookie_manager,
        &fragment.message());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(!mojo::internal::IsHandleOrInterfaceValid(fragment->cookie_manager)),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
        "invalid cookie_manager in CookieManagerInfo struct");
  }
};

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

      decltype(Traits::local_storage_area(input)) in_local_storage_area = Traits::local_storage_area(input);

      
      mojo::internal::Serialize<mojo::InterfacePtrDataView<::blink::mojom::StorageAreaInterfaceBase>>(
        in_local_storage_area,
        &fragment->local_storage_area,
        &fragment.message());

      decltype(Traits::session_storage_area(input)) in_session_storage_area = Traits::session_storage_area(input);

      
      mojo::internal::Serialize<mojo::InterfacePtrDataView<::blink::mojom::StorageAreaInterfaceBase>>(
        in_session_storage_area,
        &fragment->session_storage_area,
        &fragment.message());
  }
};

}  // namespace mojo::internal

#endif  // CONTENT_COMMON_NAVIGATION_CLIENT_MOJOM_SEND_VALIDATION_H_