// third_party/blink/public/mojom/frame/remote_frame.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_FRAME_REMOTE_FRAME_MOJOM_SEND_VALIDATION_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_FRAME_REMOTE_FRAME_MOJOM_SEND_VALIDATION_H_

#include "third_party/blink/public/mojom/frame/remote_frame.mojom-shared-internal.h"
#include "cc/mojom/render_frame_metadata.mojom-shared.h"
#include "cc/mojom/touch_action.mojom-shared.h"
#include "mojo/public/mojom/base/string16.mojom-shared.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "mojo/public/mojom/base/unguessable_token.mojom-shared.h"
#include "services/network/public/mojom/source_location.mojom-shared.h"
#include "services/network/public/mojom/storage_access_api.mojom-shared.h"
#include "services/network/public/mojom/url_request.mojom-shared.h"
#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h"
#include "services/viz/public/mojom/compositing/frame_sink_id.mojom-shared.h"
#include "third_party/blink/public/mojom/blob/blob_url_store.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/frame_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/frame_replication_state.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/frame_visual_properties.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/fullscreen.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/lifecycle.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/policy_container.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/tree_scope_type.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/triggering_event_info.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/viewport_intersection_state.mojom-shared.h"
#include "third_party/blink/public/mojom/input/focus_type.mojom-shared.h"
#include "third_party/blink/public/mojom/input/scroll_direction.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/referrer.mojom-shared.h"
#include "third_party/blink/public/mojom/messaging/transferable_message.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/navigation_policy.mojom-shared.h"
#include "services/network/public/mojom/permissions_policy/permissions_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/scroll/scroll_into_view_params.mojom-shared.h"
#include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/timing/resource_timing.mojom-shared.h"
#include "third_party/blink/public/mojom/tokens/tokens.mojom-shared.h"
#include "ui/base/mojom/window_open_disposition.mojom-shared.h"
#include "ui/events/mojom/scroll_granularity.mojom-shared.h"
#include "ui/gfx/geometry/mojom/geometry.mojom-shared.h"
#include "url/mojom/origin.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"

#include "third_party/blink/public/mojom/frame/remote_frame.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"

namespace mojo::internal {

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

      decltype(Traits::main_frame_host(input)) in_main_frame_host = Traits::main_frame_host(input);

      
      mojo::internal::Serialize<::blink::mojom::RemoteMainFrameHostAssociatedPtrInfoDataView>(
        in_main_frame_host,
        &fragment->main_frame_host,
        &fragment.message());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(!mojo::internal::IsHandleOrInterfaceValid(fragment->main_frame_host)),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
        "invalid main_frame_host in RemoteMainFrameInterfaces struct");

      decltype(Traits::main_frame(input)) in_main_frame = Traits::main_frame(input);

      
      mojo::internal::Serialize<::blink::mojom::RemoteMainFrameAssociatedRequestDataView>(
        in_main_frame,
        &fragment->main_frame,
        &fragment.message());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(!mojo::internal::IsHandleOrInterfaceValid(fragment->main_frame)),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
        "invalid main_frame in RemoteMainFrameInterfaces struct");
  }
};

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

      decltype(Traits::frame(input)) in_frame = Traits::frame(input);

      
      mojo::internal::Serialize<::blink::mojom::RemoteFrameAssociatedPtrInfoDataView>(
        in_frame,
        &fragment->frame,
        &fragment.message());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(!mojo::internal::IsHandleOrInterfaceValid(fragment->frame)),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
        "invalid frame in RemoteFrameInterfacesFromRenderer struct");

      decltype(Traits::frame_host_receiver(input)) in_frame_host_receiver = Traits::frame_host_receiver(input);

      
      mojo::internal::Serialize<::blink::mojom::RemoteFrameHostAssociatedRequestDataView>(
        in_frame_host_receiver,
        &fragment->frame_host_receiver,
        &fragment.message());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(!mojo::internal::IsHandleOrInterfaceValid(fragment->frame_host_receiver)),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
        "invalid frame_host_receiver in RemoteFrameInterfacesFromRenderer struct");
  }
};

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

      decltype(Traits::frame_receiver(input)) in_frame_receiver = Traits::frame_receiver(input);

      
      mojo::internal::Serialize<::blink::mojom::RemoteFrameAssociatedRequestDataView>(
        in_frame_receiver,
        &fragment->frame_receiver,
        &fragment.message());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(!mojo::internal::IsHandleOrInterfaceValid(fragment->frame_receiver)),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
        "invalid frame_receiver in RemoteFrameInterfacesFromBrowser struct");

      decltype(Traits::frame_host(input)) in_frame_host = Traits::frame_host(input);

      
      mojo::internal::Serialize<::blink::mojom::RemoteFrameHostAssociatedPtrInfoDataView>(
        in_frame_host,
        &fragment->frame_host,
        &fragment.message());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(!mojo::internal::IsHandleOrInterfaceValid(fragment->frame_host)),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID,
        "invalid frame_host in RemoteFrameInterfacesFromBrowser struct");
  }
};

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

      decltype(Traits::token(input)) in_token = Traits::token(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->token)::BaseType> token_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::RemoteFrameTokenDataView, send_validation>(
        in_token,
        token_fragment);

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

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

      decltype(Traits::opener_frame_token(input)) in_opener_frame_token = Traits::opener_frame_token(input);
      mojo::internal::MessageFragment<decltype(fragment->opener_frame_token)>
          opener_frame_token_fragment(fragment.message());
      opener_frame_token_fragment.Claim(&fragment->opener_frame_token);
      
      mojo::internal::Serialize<::blink::mojom::FrameTokenDataView, send_validation>(
        in_opener_frame_token,
        opener_frame_token_fragment,
        true);

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

      decltype(Traits::replication_state(input)) in_replication_state = Traits::replication_state(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->replication_state)::BaseType> replication_state_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::FrameReplicationStateDataView, send_validation>(
        in_replication_state,
        replication_state_fragment);

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

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

      decltype(Traits::owner_properties(input)) in_owner_properties = Traits::owner_properties(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->owner_properties)::BaseType> owner_properties_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::FrameOwnerPropertiesDataView, send_validation>(
        in_owner_properties,
        owner_properties_fragment);

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

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

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

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

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

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

      decltype(Traits::frame_interfaces(input)) in_frame_interfaces = Traits::frame_interfaces(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->frame_interfaces)::BaseType> frame_interfaces_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::RemoteFrameInterfacesFromBrowserDataView, send_validation>(
        in_frame_interfaces,
        frame_interfaces_fragment);

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

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

      decltype(Traits::child_params(input)) in_child_params = Traits::child_params(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->child_params)::BaseType>
          child_params_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& child_params_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::blink::mojom::CreateRemoteChildParamsDataView>, send_validation>(
        in_child_params,
        child_params_fragment,
        &child_params_validate_params);

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

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

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

      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 OpenURLParams struct");

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

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

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->initiator_origin.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null initiator_origin in OpenURLParams 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::actual_navigation_start(input)) in_actual_navigation_start = Traits::actual_navigation_start(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->actual_navigation_start)::BaseType> actual_navigation_start_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_actual_navigation_start,
        actual_navigation_start_fragment);

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

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

      decltype(Traits::initiator_frame_token(input)) in_initiator_frame_token = Traits::initiator_frame_token(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->initiator_frame_token)::BaseType> initiator_frame_token_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::LocalFrameTokenDataView, send_validation>(
        in_initiator_frame_token,
        initiator_frame_token_fragment);

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

      decltype(Traits::post_body(input)) in_post_body = Traits::post_body(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->post_body)::BaseType> post_body_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::URLRequestBodyDataView, send_validation>(
        in_post_body,
        post_body_fragment);

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

      decltype(Traits::extra_headers(input)) in_extra_headers = Traits::extra_headers(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->extra_headers)::BaseType> extra_headers_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_extra_headers,
        extra_headers_fragment);

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

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->extra_headers.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null extra_headers in OpenURLParams 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 OpenURLParams struct");

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

      
      mojo::internal::Serialize<::ui::mojom::WindowOpenDisposition>(
        Traits::disposition(input),
        &fragment->disposition);

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

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

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

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

      decltype(Traits::blob_url_token(input)) in_blob_url_token = Traits::blob_url_token(input);

      
      mojo::internal::Serialize<mojo::InterfacePtrDataView<::blink::mojom::BlobURLTokenInterfaceBase>>(
        in_blob_url_token,
        &fragment->blob_url_token,
        &fragment.message());

      decltype(Traits::href_translate(input)) in_href_translate = Traits::href_translate(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->href_translate)::BaseType> href_translate_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_href_translate,
        href_translate_fragment);

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

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

      decltype(Traits::download_policy(input)) in_download_policy = Traits::download_policy(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->download_policy)::BaseType> download_policy_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::blink::mojom::NavigationDownloadPolicyDataView, send_validation>(
        in_download_policy,
        download_policy_fragment);

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

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

      decltype(Traits::source_location(input)) in_source_location = Traits::source_location(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->source_location)::BaseType> source_location_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::network::mojom::SourceLocationDataView, send_validation>(
        in_source_location,
        source_location_fragment);

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

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

      decltype(Traits::initiator_navigation_state_keep_alive_handle(input)) in_initiator_navigation_state_keep_alive_handle = Traits::initiator_navigation_state_keep_alive_handle(input);

      
      mojo::internal::Serialize<mojo::InterfacePtrDataView<::blink::mojom::NavigationStateKeepAliveHandleInterfaceBase>>(
        in_initiator_navigation_state_keep_alive_handle,
        &fragment->initiator_navigation_state_keep_alive_handle,
        &fragment.message());

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

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

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

}  // namespace mojo::internal

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_FRAME_REMOTE_FRAME_MOJOM_SEND_VALIDATION_H_