// third_party/blink/public/mojom/navigation/navigation_params.mojom-shared.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2016 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_NAVIGATION_NAVIGATION_PARAMS_MOJOM_SHARED_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_NAVIGATION_NAVIGATION_PARAMS_MOJOM_SHARED_H_

#include <stdint.h>

#include <functional>
#include <iosfwd>
#include <type_traits>
#include <utility>
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"
#include "mojo/public/cpp/system/message_pipe.h"

#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"

#include "third_party/blink/public/mojom/navigation/navigation_params.mojom-shared-internal.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/values.mojom-shared.h"
#include "services/network/public/mojom/content_security_policy.mojom-shared.h"
#include "services/network/public/mojom/fetch_api.mojom-shared.h"
#include "services/network/public/mojom/link_header.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/trust_tokens.mojom-shared.h"
#include "services/network/public/mojom/url_loader.mojom-shared.h"
#include "services/network/public/mojom/url_request.mojom-shared.h"
#include "services/network/public/mojom/url_response_head.mojom-shared.h"
#include "services/network/public/mojom/web_client_hints_types.mojom-shared.h"
#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h"
#include "services/viz/public/mojom/compositing/local_surface_id.mojom-shared.h"
#include "third_party/blink/public/mojom/back_forward_cache_not_restored_reasons.mojom-shared.h"
#include "third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom-shared.h"
#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/agent_cluster_key.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/frame_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/view_transition_state.mojom-shared.h"
#include "third_party/blink/public/mojom/lcp_critical_path_predictor/lcp_critical_path_predictor.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/mixed_content.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/referrer.mojom-shared.h"
#include "third_party/blink/public/mojom/messaging/task_attribution_id.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/navigation_api_history_entry_arrays.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/navigation_type_for_navigation_api.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/navigation_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/prefetched_signed_exchange_info.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/renderer_content_settings.mojom-shared.h"
#include "third_party/blink/public/mojom/navigation/was_activated_option.mojom-shared.h"
#include "third_party/blink/public/mojom/page/page.mojom-shared.h"
#include "third_party/blink/public/mojom/permissions/permission.mojom-shared.h"
#include "third_party/blink/public/mojom/permissions/permission_status.mojom-shared.h"
#include "services/network/public/mojom/permissions_policy/permissions_policy.mojom-shared.h"
#include "third_party/blink/public/mojom/runtime_feature_state/runtime_feature.mojom-shared.h"
#include "third_party/blink/public/mojom/storage_key/storage_key.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 "mojo/public/mojom/base/unguessable_token.mojom-shared.h"
#include "mojo/public/cpp/bindings/lib/interface_serialization.h"
#include "mojo/public/cpp/system/data_pipe.h"


#include "mojo/public/cpp/bindings/native_enum.h"
#include "mojo/public/cpp/bindings/lib/native_struct_serialization.h"

#include "third_party/blink/public/mojom/navigation/navigation_params.mojom-data-view.h"  // IWYU pragma: export
#include "base/component_export.h"




namespace std {

template <>
struct hash<::blink::mojom::NavigationType>
    : public mojo::internal::EnumHashImpl<::blink::mojom::NavigationType> {};

template <>
struct hash<::blink::mojom::ForceHistoryPush>
    : public mojo::internal::EnumHashImpl<::blink::mojom::ForceHistoryPush> {};

template <>
struct hash<::blink::mojom::ParentResourceTimingAccess>
    : public mojo::internal::EnumHashImpl<::blink::mojom::ParentResourceTimingAccess> {};

template <>
struct hash<::blink::mojom::ScriptInjectionPolicy>
    : public mojo::internal::EnumHashImpl<::blink::mojom::ScriptInjectionPolicy> {};

}  // namespace std

namespace mojo {


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::NavigationType, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::NavigationType, UserType>;

  static void Serialize(UserType input, int32_t* output) {
    *output = static_cast<int32_t>(Traits::ToMojom(input));
  }

  static bool Deserialize(int32_t input, UserType* output) {
    auto known_value = ::mojo::internal::ToKnownEnumValueHelper(
        static_cast<::blink::mojom::NavigationType>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::NavigationType, UserType> ||
                        HasInfallibleConversion(::blink::mojom::NavigationType()),
                    "::blink::mojom::NavigationType does not have an infallible conversion, "
                    "use an optional return type.");
      *output = Traits::FromMojom(known_value);
      return true;
    } else {
      static_assert(
          requires {
            {
              Traits::FromMojom(known_value)
            } -> std::same_as<std::optional<UserType>>;
          }, "FromMojom must return by value or optional.");
      std::optional<UserType> from_mojom = Traits::FromMojom(known_value);
      if (from_mojom) {
        *output = *from_mojom;
      }
      return from_mojom.has_value();
    }
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::ForceHistoryPush, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::ForceHistoryPush, UserType>;

  static void Serialize(UserType input, int32_t* output) {
    *output = static_cast<int32_t>(Traits::ToMojom(input));
  }

  static bool Deserialize(int32_t input, UserType* output) {
    auto known_value = ::mojo::internal::ToKnownEnumValueHelper(
        static_cast<::blink::mojom::ForceHistoryPush>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::ForceHistoryPush, UserType> ||
                        HasInfallibleConversion(::blink::mojom::ForceHistoryPush()),
                    "::blink::mojom::ForceHistoryPush does not have an infallible conversion, "
                    "use an optional return type.");
      *output = Traits::FromMojom(known_value);
      return true;
    } else {
      static_assert(
          requires {
            {
              Traits::FromMojom(known_value)
            } -> std::same_as<std::optional<UserType>>;
          }, "FromMojom must return by value or optional.");
      std::optional<UserType> from_mojom = Traits::FromMojom(known_value);
      if (from_mojom) {
        *output = *from_mojom;
      }
      return from_mojom.has_value();
    }
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::ParentResourceTimingAccess, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::ParentResourceTimingAccess, UserType>;

  static void Serialize(UserType input, int32_t* output) {
    *output = static_cast<int32_t>(Traits::ToMojom(input));
  }

  static bool Deserialize(int32_t input, UserType* output) {
    auto known_value = ::mojo::internal::ToKnownEnumValueHelper(
        static_cast<::blink::mojom::ParentResourceTimingAccess>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::ParentResourceTimingAccess, UserType> ||
                        HasInfallibleConversion(::blink::mojom::ParentResourceTimingAccess()),
                    "::blink::mojom::ParentResourceTimingAccess does not have an infallible conversion, "
                    "use an optional return type.");
      *output = Traits::FromMojom(known_value);
      return true;
    } else {
      static_assert(
          requires {
            {
              Traits::FromMojom(known_value)
            } -> std::same_as<std::optional<UserType>>;
          }, "FromMojom must return by value or optional.");
      std::optional<UserType> from_mojom = Traits::FromMojom(known_value);
      if (from_mojom) {
        *output = *from_mojom;
      }
      return from_mojom.has_value();
    }
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::ScriptInjectionPolicy, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::ScriptInjectionPolicy, UserType>;

  static void Serialize(UserType input, int32_t* output) {
    *output = static_cast<int32_t>(Traits::ToMojom(input));
  }

  static bool Deserialize(int32_t input, UserType* output) {
    auto known_value = ::mojo::internal::ToKnownEnumValueHelper(
        static_cast<::blink::mojom::ScriptInjectionPolicy>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::ScriptInjectionPolicy, UserType> ||
                        HasInfallibleConversion(::blink::mojom::ScriptInjectionPolicy()),
                    "::blink::mojom::ScriptInjectionPolicy does not have an infallible conversion, "
                    "use an optional return type.");
      *output = Traits::FromMojom(known_value);
      return true;
    } else {
      static_assert(
          requires {
            {
              Traits::FromMojom(known_value)
            } -> std::same_as<std::optional<UserType>>;
          }, "FromMojom must return by value or optional.");
      std::optional<UserType> from_mojom = Traits::FromMojom(known_value);
      if (from_mojom) {
        *output = *from_mojom;
      }
      return from_mojom.has_value();
    }
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::BeginNavigationParamsDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::BeginNavigationParamsDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::BeginNavigationParams_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

    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>(
      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::initiator_state_token(input)) in_initiator_state_token = Traits::initiator_state_token(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->initiator_state_token)::BaseType> initiator_state_token_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
      in_initiator_state_token,
      initiator_state_token_fragment);

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

    decltype(Traits::initiator_document_token(input)) in_initiator_document_token = Traits::initiator_document_token(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->initiator_document_token)::BaseType> initiator_document_token_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::DocumentTokenDataView>(
      in_initiator_document_token,
      initiator_document_token_fragment);

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

    decltype(Traits::headers(input)) in_headers = Traits::headers(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->headers)::BaseType> headers_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_headers,
      headers_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->headers.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null headers in BeginNavigationParams struct");

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

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

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

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

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

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

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

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

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->searchable_form_url.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null searchable_form_url in BeginNavigationParams struct");

    decltype(Traits::searchable_form_encoding(input)) in_searchable_form_encoding = Traits::searchable_form_encoding(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->searchable_form_encoding)::BaseType> searchable_form_encoding_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_searchable_form_encoding,
      searchable_form_encoding_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->searchable_form_encoding.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null searchable_form_encoding in BeginNavigationParams struct");

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

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->client_side_redirect_url.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null client_side_redirect_url in BeginNavigationParams struct");

    decltype(Traits::devtools_initiator(input)) in_devtools_initiator = Traits::devtools_initiator(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->devtools_initiator)::BaseType> devtools_initiator_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::DictionaryValueDataView>(
      in_devtools_initiator,
      devtools_initiator_fragment);

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

    decltype(Traits::trust_token_params(input)) in_trust_token_params = Traits::trust_token_params(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->trust_token_params)::BaseType> trust_token_params_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::network::mojom::TrustTokenParamsDataView>(
      in_trust_token_params,
      trust_token_params_fragment);

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

    decltype(Traits::before_unload_start(input)) in_before_unload_start = Traits::before_unload_start(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->before_unload_start)::BaseType> before_unload_start_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_before_unload_start,
      before_unload_start_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->before_unload_start.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null before_unload_start in BeginNavigationParams struct");

    decltype(Traits::before_unload_end(input)) in_before_unload_end = Traits::before_unload_end(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->before_unload_end)::BaseType> before_unload_end_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_before_unload_end,
      before_unload_end_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->before_unload_end.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null before_unload_end in BeginNavigationParams struct");

    decltype(Traits::before_unload_dialog_opened(input)) in_before_unload_dialog_opened = Traits::before_unload_dialog_opened(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->before_unload_dialog_opened)::BaseType> before_unload_dialog_opened_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_before_unload_dialog_opened,
      before_unload_dialog_opened_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->before_unload_dialog_opened.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null before_unload_dialog_opened in BeginNavigationParams struct");

    decltype(Traits::before_unload_dialog_closed(input)) in_before_unload_dialog_closed = Traits::before_unload_dialog_closed(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->before_unload_dialog_closed)::BaseType> before_unload_dialog_closed_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_before_unload_dialog_closed,
      before_unload_dialog_closed_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->before_unload_dialog_closed.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null before_unload_dialog_closed in BeginNavigationParams struct");

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

    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);

    decltype(Traits::script_tool_invocation_id(input)) in_script_tool_invocation_id = Traits::script_tool_invocation_id(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->script_tool_invocation_id)::BaseType> script_tool_invocation_id_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
      in_script_tool_invocation_id,
      script_tool_invocation_id_fragment);

    fragment->script_tool_invocation_id.Set(
        script_tool_invocation_id_fragment.is_null() ? nullptr : script_tool_invocation_id_fragment.data());
  }

  static bool Deserialize(::blink::mojom::internal::BeginNavigationParams_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::BeginNavigationParamsDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::CommonNavigationParamsDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::CommonNavigationParamsDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::CommonNavigationParams_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>(
      in_url,
      url_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->url.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null url in CommonNavigationParams 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>(
      in_initiator_origin,
      initiator_origin_fragment);

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

    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>(
      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::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>(
      in_referrer,
      referrer_fragment);

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

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

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

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

    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>(
      in_download_policy,
      download_policy_fragment);

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

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

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

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

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->base_url_for_data_url.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null base_url_for_data_url in CommonNavigationParams struct");

    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>(
      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(
      mojo::internal::SendValidation::kDefault,
      !(fragment->actual_navigation_start.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null actual_navigation_start in CommonNavigationParams struct");

    decltype(Traits::navigation_start(input)) in_navigation_start = Traits::navigation_start(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->navigation_start)::BaseType> navigation_start_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_navigation_start,
      navigation_start_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->navigation_start.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null navigation_start in CommonNavigationParams struct");

    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>(
      in_method,
      method_fragment);

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

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

    decltype(Traits::post_data(input)) in_post_data = Traits::post_data(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->post_data)::BaseType> post_data_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::network::mojom::URLRequestBodyDataView>(
      in_post_data,
      post_data_fragment);

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

    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>(
      in_source_location,
      source_location_fragment);

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

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

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

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

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

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

    decltype(Traits::initiator_origin_trial_features(input)) in_initiator_origin_trial_features = Traits::initiator_origin_trial_features(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->initiator_origin_trial_features)::BaseType>
        initiator_origin_trial_features_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& initiator_origin_trial_features_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<int32_t>>(
      in_initiator_origin_trial_features,
      initiator_origin_trial_features_fragment,
      &initiator_origin_trial_features_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->initiator_origin_trial_features.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null initiator_origin_trial_features in CommonNavigationParams struct");

    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>(
      in_href_translate,
      href_translate_fragment);

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

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

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

    decltype(Traits::input_start(input)) in_input_start = Traits::input_start(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->input_start)::BaseType> input_start_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_input_start,
      input_start_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->input_start.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null input_start in CommonNavigationParams struct");

    
    mojo::internal::Serialize<::network::mojom::RequestDestination>(
      Traits::request_destination(input),
      &fragment->request_destination);
  }

  static bool Deserialize(::blink::mojom::internal::CommonNavigationParams_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::CommonNavigationParamsDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::NavigationTimingDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::NavigationTimingDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::NavigationTiming_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

    decltype(Traits::redirect_start(input)) in_redirect_start = Traits::redirect_start(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->redirect_start)::BaseType> redirect_start_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_redirect_start,
      redirect_start_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->redirect_start.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null redirect_start in NavigationTiming struct");

    decltype(Traits::redirect_end(input)) in_redirect_end = Traits::redirect_end(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->redirect_end)::BaseType> redirect_end_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_redirect_end,
      redirect_end_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->redirect_end.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null redirect_end in NavigationTiming struct");

    decltype(Traits::fetch_start(input)) in_fetch_start = Traits::fetch_start(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->fetch_start)::BaseType> fetch_start_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_fetch_start,
      fetch_start_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->fetch_start.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null fetch_start in NavigationTiming struct");

    
    mojo::internal::Serialize<::blink::mojom::ParentResourceTimingAccess>(
      Traits::parent_resource_timing_access(input),
      &fragment->parent_resource_timing_access);
  }

  static bool Deserialize(::blink::mojom::internal::NavigationTiming_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::NavigationTimingDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::NavigationRedirectParamsDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::NavigationRedirectParamsDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::NavigationRedirectParams_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

    decltype(Traits::redirect_info(input)) in_redirect_info = Traits::redirect_info(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->redirect_info)::BaseType> redirect_info_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::network::mojom::URLRequestRedirectInfoDataView>(
      in_redirect_info,
      redirect_info_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->redirect_info.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null redirect_info in NavigationRedirectParams struct");

    decltype(Traits::response_head(input)) in_response_head = Traits::response_head(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->response_head)::BaseType> response_head_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::network::mojom::URLResponseHeadDataView>(
      in_response_head,
      response_head_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->response_head.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null response_head in NavigationRedirectParams struct");
  }

  static bool Deserialize(::blink::mojom::internal::NavigationRedirectParams_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::NavigationRedirectParamsDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::OldPageInfoDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::OldPageInfoDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::OldPageInfo_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

    decltype(Traits::frame_token_for_old_main_frame(input)) in_frame_token_for_old_main_frame = Traits::frame_token_for_old_main_frame(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->frame_token_for_old_main_frame)::BaseType> frame_token_for_old_main_frame_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::LocalFrameTokenDataView>(
      in_frame_token_for_old_main_frame,
      frame_token_for_old_main_frame_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->frame_token_for_old_main_frame.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null frame_token_for_old_main_frame in OldPageInfo struct");

    decltype(Traits::new_lifecycle_state_for_old_page(input)) in_new_lifecycle_state_for_old_page = Traits::new_lifecycle_state_for_old_page(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->new_lifecycle_state_for_old_page)::BaseType> new_lifecycle_state_for_old_page_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::PageLifecycleStateDataView>(
      in_new_lifecycle_state_for_old_page,
      new_lifecycle_state_for_old_page_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->new_lifecycle_state_for_old_page.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null new_lifecycle_state_for_old_page in OldPageInfo struct");
  }

  static bool Deserialize(::blink::mojom::internal::OldPageInfo_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::OldPageInfoDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::IsolatedAppPermissionPolicyEntryDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::IsolatedAppPermissionPolicyEntryDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::IsolatedAppPermissionPolicyEntry_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

    decltype(Traits::feature(input)) in_feature = Traits::feature(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->feature)::BaseType> feature_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_feature,
      feature_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->feature.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null feature in IsolatedAppPermissionPolicyEntry struct");

    decltype(Traits::allowed_origins(input)) in_allowed_origins = Traits::allowed_origins(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->allowed_origins)::BaseType>
        allowed_origins_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& allowed_origins_validate_params =
        mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>>(
      in_allowed_origins,
      allowed_origins_fragment,
      &allowed_origins_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->allowed_origins.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null allowed_origins in IsolatedAppPermissionPolicyEntry struct");
  }

  static bool Deserialize(::blink::mojom::internal::IsolatedAppPermissionPolicyEntry_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::IsolatedAppPermissionPolicyEntryDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::CommitNavigationParamsDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::CommitNavigationParamsDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::CommitNavigationParams_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

    decltype(Traits::origin_to_commit(input)) in_origin_to_commit = Traits::origin_to_commit(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->origin_to_commit)::BaseType> origin_to_commit_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::url::mojom::OriginDataView>(
      in_origin_to_commit,
      origin_to_commit_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->origin_to_commit.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null origin_to_commit in CommitNavigationParams struct");

    decltype(Traits::storage_key(input)) in_storage_key = Traits::storage_key(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->storage_key)::BaseType> storage_key_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::StorageKeyDataView>(
      in_storage_key,
      storage_key_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->storage_key.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null storage_key in CommitNavigationParams struct");

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

    decltype(Traits::redirects(input)) in_redirects = Traits::redirects(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->redirects)::BaseType>
        redirects_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& redirects_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::url::mojom::UrlDataView>>(
      in_redirects,
      redirects_fragment,
      &redirects_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->redirects.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null redirects in CommitNavigationParams struct");

    decltype(Traits::redirect_params(input)) in_redirect_params = Traits::redirect_params(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->redirect_params)::BaseType>
        redirect_params_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& redirect_params_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::blink::mojom::NavigationRedirectParamsDataView>>(
      in_redirect_params,
      redirect_params_fragment,
      &redirect_params_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->redirect_params.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null redirect_params in CommitNavigationParams struct");

    decltype(Traits::post_content_type(input)) in_post_content_type = Traits::post_content_type(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->post_content_type)::BaseType> post_content_type_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_post_content_type,
      post_content_type_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->post_content_type.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null post_content_type in CommitNavigationParams struct");

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

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->original_url.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null original_url in CommitNavigationParams struct");

    decltype(Traits::original_method(input)) in_original_method = Traits::original_method(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->original_method)::BaseType> original_method_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_original_method,
      original_method_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->original_method.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null original_method in CommitNavigationParams struct");

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

    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<::mojo_base::mojom::ByteStringDataView>(
      in_page_state,
      page_state_fragment);

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

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

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

    decltype(Traits::subframe_unique_names(input)) in_subframe_unique_names = Traits::subframe_unique_names(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->subframe_unique_names)::BaseType>
        subframe_unique_names_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& subframe_unique_names_validate_params =
        mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>();
    
    mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, bool>>(
      in_subframe_unique_names,
      subframe_unique_names_fragment,
      &subframe_unique_names_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->subframe_unique_names.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null subframe_unique_names in CommitNavigationParams struct");

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

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

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

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

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

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

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

    decltype(Traits::navigation_timing(input)) in_navigation_timing = Traits::navigation_timing(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->navigation_timing)::BaseType> navigation_timing_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::NavigationTimingDataView>(
      in_navigation_timing,
      navigation_timing_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->navigation_timing.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null navigation_timing in CommitNavigationParams struct");

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

    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>(
      in_navigation_token,
      navigation_token_fragment);

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

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

    decltype(Traits::prefetched_signed_exchanges(input)) in_prefetched_signed_exchanges = Traits::prefetched_signed_exchanges(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->prefetched_signed_exchanges)::BaseType>
        prefetched_signed_exchanges_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& prefetched_signed_exchanges_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::blink::mojom::PrefetchedSignedExchangeInfoDataView>>(
      in_prefetched_signed_exchanges,
      prefetched_signed_exchanges_fragment,
      &prefetched_signed_exchanges_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->prefetched_signed_exchanges.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null prefetched_signed_exchanges in CommitNavigationParams struct");

    decltype(Traits::data_url_as_string(input)) in_data_url_as_string = Traits::data_url_as_string(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->data_url_as_string)::BaseType> data_url_as_string_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_data_url_as_string,
      data_url_as_string_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->data_url_as_string.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null data_url_as_string in CommitNavigationParams struct");

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

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

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

    decltype(Traits::frame_policy(input)) in_frame_policy = Traits::frame_policy(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->frame_policy)::BaseType> frame_policy_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::FramePolicyDataView>(
      in_frame_policy,
      frame_policy_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->frame_policy.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null frame_policy in CommitNavigationParams struct");

    decltype(Traits::force_enabled_origin_trials(input)) in_force_enabled_origin_trials = Traits::force_enabled_origin_trials(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->force_enabled_origin_trials)::BaseType>
        force_enabled_origin_trials_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& force_enabled_origin_trials_validate_params =
        mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>>(
      in_force_enabled_origin_trials,
      force_enabled_origin_trials_fragment,
      &force_enabled_origin_trials_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->force_enabled_origin_trials.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null force_enabled_origin_trials in CommitNavigationParams struct");

    decltype(Traits::agent_cluster_key(input)) in_agent_cluster_key = Traits::agent_cluster_key(input);
    mojo::internal::MessageFragment<decltype(fragment->agent_cluster_key)>
        agent_cluster_key_fragment(fragment.message());
    agent_cluster_key_fragment.Claim(&fragment->agent_cluster_key);
    
    mojo::internal::Serialize<::blink::mojom::AgentClusterKeyDataView>(
      in_agent_cluster_key,
      agent_cluster_key_fragment,
      true);

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->agent_cluster_key.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null agent_cluster_key in CommitNavigationParams struct");

    decltype(Traits::enabled_client_hints(input)) in_enabled_client_hints = Traits::enabled_client_hints(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->enabled_client_hints)::BaseType>
        enabled_client_hints_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& enabled_client_hints_validate_params =
        mojo::internal::GetArrayOfEnumsValidator<0, false, ::network::mojom::internal::WebClientHintsType_Data::Validate>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::WebClientHintsType>>(
      in_enabled_client_hints,
      enabled_client_hints_fragment,
      &enabled_client_hints_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->enabled_client_hints.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null enabled_client_hints in CommitNavigationParams struct");

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

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

    decltype(Traits::old_page_info(input)) in_old_page_info = Traits::old_page_info(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->old_page_info)::BaseType> old_page_info_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::OldPageInfoDataView>(
      in_old_page_info,
      old_page_info_fragment);

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

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

    decltype(Traits::navigation_api_history_entry_arrays(input)) in_navigation_api_history_entry_arrays = Traits::navigation_api_history_entry_arrays(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->navigation_api_history_entry_arrays)::BaseType> navigation_api_history_entry_arrays_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::NavigationApiHistoryEntryArraysDataView>(
      in_navigation_api_history_entry_arrays,
      navigation_api_history_entry_arrays_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->navigation_api_history_entry_arrays.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null navigation_api_history_entry_arrays in CommitNavigationParams struct");

    decltype(Traits::early_hints_preloaded_resources(input)) in_early_hints_preloaded_resources = Traits::early_hints_preloaded_resources(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->early_hints_preloaded_resources)::BaseType>
        early_hints_preloaded_resources_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& early_hints_preloaded_resources_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>>(
      in_early_hints_preloaded_resources,
      early_hints_preloaded_resources_fragment,
      &early_hints_preloaded_resources_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->early_hints_preloaded_resources.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null early_hints_preloaded_resources in CommitNavigationParams struct");

    decltype(Traits::early_hints_preconnects(input)) in_early_hints_preconnects = Traits::early_hints_preconnects(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->early_hints_preconnects)::BaseType>
        early_hints_preconnects_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& early_hints_preconnects_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>>(
      in_early_hints_preconnects,
      early_hints_preconnects_fragment,
      &early_hints_preconnects_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->early_hints_preconnects.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null early_hints_preconnects in CommitNavigationParams struct");

    decltype(Traits::navigation_preconnects(input)) in_navigation_preconnects = Traits::navigation_preconnects(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->navigation_preconnects)::BaseType>
        navigation_preconnects_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& navigation_preconnects_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>>(
      in_navigation_preconnects,
      navigation_preconnects_fragment,
      &navigation_preconnects_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->navigation_preconnects.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null navigation_preconnects in CommitNavigationParams struct");

    decltype(Traits::commit_sent(input)) in_commit_sent = Traits::commit_sent(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->commit_sent)::BaseType> commit_sent_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView>(
      in_commit_sent,
      commit_sent_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->commit_sent.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null commit_sent in CommitNavigationParams struct");

    decltype(Traits::srcdoc_value(input)) in_srcdoc_value = Traits::srcdoc_value(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->srcdoc_value)::BaseType> srcdoc_value_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_srcdoc_value,
      srcdoc_value_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->srcdoc_value.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null srcdoc_value in CommitNavigationParams struct");

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

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

    decltype(Traits::reduced_accept_language(input)) in_reduced_accept_language = Traits::reduced_accept_language(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->reduced_accept_language)::BaseType> reduced_accept_language_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_reduced_accept_language,
      reduced_accept_language_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->reduced_accept_language.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null reduced_accept_language in CommitNavigationParams struct");

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

    decltype(Traits::view_transition_state(input)) in_view_transition_state = Traits::view_transition_state(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->view_transition_state)::BaseType> view_transition_state_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::ViewTransitionStateDataView>(
      in_view_transition_state,
      view_transition_state_fragment);

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

    decltype(Traits::soft_navigation_heuristics_task_id(input)) in_soft_navigation_heuristics_task_id = Traits::soft_navigation_heuristics_task_id(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->soft_navigation_heuristics_task_id)::BaseType> soft_navigation_heuristics_task_id_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::TaskAttributionIdDataView>(
      in_soft_navigation_heuristics_task_id,
      soft_navigation_heuristics_task_id_fragment);

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

    decltype(Traits::modified_runtime_features(input)) in_modified_runtime_features = Traits::modified_runtime_features(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->modified_runtime_features)::BaseType>
        modified_runtime_features_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& modified_runtime_features_validate_params =
        mojo::internal::GetMapValidator<*&mojo::internal::GetArrayOfEnumsValidator<0, false, ::blink::mojom::internal::RuntimeFeature_Data::Validate>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>();
    
    mojo::internal::Serialize<mojo::MapDataView<::blink::mojom::RuntimeFeature, bool>>(
      in_modified_runtime_features,
      modified_runtime_features_fragment,
      &modified_runtime_features_validate_params);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->modified_runtime_features.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null modified_runtime_features in CommitNavigationParams struct");

    decltype(Traits::fenced_frame_properties(input)) in_fenced_frame_properties = Traits::fenced_frame_properties(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->fenced_frame_properties)::BaseType> fenced_frame_properties_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::FencedFramePropertiesDataView>(
      in_fenced_frame_properties,
      fenced_frame_properties_fragment);

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

    decltype(Traits::not_restored_reasons(input)) in_not_restored_reasons = Traits::not_restored_reasons(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->not_restored_reasons)::BaseType> not_restored_reasons_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::BackForwardCacheNotRestoredReasonsDataView>(
      in_not_restored_reasons,
      not_restored_reasons_fragment);

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

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

    decltype(Traits::browsing_context_group_token(input)) in_browsing_context_group_token = Traits::browsing_context_group_token(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->browsing_context_group_token)::BaseType> browsing_context_group_token_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
      in_browsing_context_group_token,
      browsing_context_group_token_fragment);

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

    decltype(Traits::lcpp_hint(input)) in_lcpp_hint = Traits::lcpp_hint(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->lcpp_hint)::BaseType> lcpp_hint_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::LCPCriticalPathPredictorNavigationTimeHintDataView>(
      in_lcpp_hint,
      lcpp_hint_fragment);

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

    decltype(Traits::content_settings(input)) in_content_settings = Traits::content_settings(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->content_settings)::BaseType> content_settings_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::RendererContentSettingsDataView>(
      in_content_settings,
      content_settings_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->content_settings.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null content_settings in CommitNavigationParams struct");
    fragment->visited_link_salt_$flag = Traits::visited_link_salt(input).has_value();
    if (Traits::visited_link_salt(input).has_value()) {
      fragment->visited_link_salt_$value = Traits::visited_link_salt(input).value();
    }

    decltype(Traits::local_surface_id(input)) in_local_surface_id = Traits::local_surface_id(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->local_surface_id)::BaseType> local_surface_id_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::viz::mojom::LocalSurfaceIdDataView>(
      in_local_surface_id,
      local_surface_id_fragment);

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

    decltype(Traits::initial_permission_statuses(input)) in_initial_permission_statuses = Traits::initial_permission_statuses(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->initial_permission_statuses)::BaseType>
        initial_permission_statuses_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& initial_permission_statuses_validate_params =
        mojo::internal::GetMapValidator<*&mojo::internal::GetArrayOfEnumsValidator<0, false, ::blink::mojom::internal::PermissionName_Data::Validate>(), *&mojo::internal::GetArrayOfEnumsValidator<0, false, ::blink::mojom::internal::PermissionStatus_Data::Validate>()>();
    
    mojo::internal::Serialize<mojo::MapDataView<::blink::mojom::PermissionName, ::blink::mojom::PermissionStatus>>(
      in_initial_permission_statuses,
      initial_permission_statuses_fragment,
      &initial_permission_statuses_validate_params);

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

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

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

    decltype(Traits::navigation_metrics_token(input)) in_navigation_metrics_token = Traits::navigation_metrics_token(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->navigation_metrics_token)::BaseType> navigation_metrics_token_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
      in_navigation_metrics_token,
      navigation_metrics_token_fragment);

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

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->navigation_metrics_token.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null navigation_metrics_token in CommitNavigationParams struct");

    decltype(Traits::commit_target_frame_token(input)) in_commit_target_frame_token = Traits::commit_target_frame_token(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->commit_target_frame_token)::BaseType> commit_target_frame_token_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::blink::mojom::LocalFrameTokenDataView>(
      in_commit_target_frame_token,
      commit_target_frame_token_fragment);

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

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

    decltype(Traits::isolated_app_policy(input)) in_isolated_app_policy = Traits::isolated_app_policy(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->isolated_app_policy)::BaseType>
        isolated_app_policy_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& isolated_app_policy_validate_params =
        mojo::internal::GetArrayValidator<0, false, nullptr>();
    
    mojo::internal::Serialize<mojo::ArrayDataView<::blink::mojom::IsolatedAppPermissionPolicyEntryDataView>>(
      in_isolated_app_policy,
      isolated_app_policy_fragment,
      &isolated_app_policy_validate_params);

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

    decltype(Traits::internal_scroll_to_text_fragment(input)) in_internal_scroll_to_text_fragment = Traits::internal_scroll_to_text_fragment(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->internal_scroll_to_text_fragment)::BaseType> internal_scroll_to_text_fragment_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_internal_scroll_to_text_fragment,
      internal_scroll_to_text_fragment_fragment);

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

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

    
    mojo::internal::Serialize<::blink::mojom::ScriptInjectionPolicy>(
      Traits::script_injection_policy(input),
      &fragment->script_injection_policy);
  }

  static bool Deserialize(::blink::mojom::internal::CommitNavigationParams_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::CommitNavigationParamsDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::PageSwapEventParamsDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::PageSwapEventParamsDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::blink::mojom::internal::PageSwapEventParams_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>(
      in_url,
      url_fragment);

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

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

    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<::mojo_base::mojom::ByteStringDataView>(
      in_page_state,
      page_state_fragment);

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

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

    
    mojo::internal::Serialize<::blink::mojom::NavigationTypeForNavigationApi>(
      Traits::navigation_type(input),
      &fragment->navigation_type);
  }

  static bool Deserialize(::blink::mojom::internal::PageSwapEventParams_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::blink::mojom::PageSwapEventParamsDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal

}  // namespace mojo


namespace blink::mojom {

inline void BeginNavigationParamsDataView::GetInitiatorFrameTokenDataView(
    ::blink::mojom::LocalFrameTokenDataView* output) {
  auto pointer = data_->initiator_frame_token.Get();
  *output = ::blink::mojom::LocalFrameTokenDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetInitiatorStateTokenDataView(
    ::mojo_base::mojom::UnguessableTokenDataView* output) {
  auto pointer = data_->initiator_state_token.Get();
  *output = ::mojo_base::mojom::UnguessableTokenDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetInitiatorDocumentTokenDataView(
    ::blink::mojom::DocumentTokenDataView* output) {
  auto pointer = data_->initiator_document_token.Get();
  *output = ::blink::mojom::DocumentTokenDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetHeadersDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->headers.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetSearchableFormUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->searchable_form_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetSearchableFormEncodingDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->searchable_form_encoding.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetClientSideRedirectUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->client_side_redirect_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetDevtoolsInitiatorDataView(
    ::mojo_base::mojom::DictionaryValueDataView* output) {
  auto pointer = data_->devtools_initiator.Get();
  *output = ::mojo_base::mojom::DictionaryValueDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetTrustTokenParamsDataView(
    ::network::mojom::TrustTokenParamsDataView* output) {
  auto pointer = data_->trust_token_params.Get();
  *output = ::network::mojom::TrustTokenParamsDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetBeforeUnloadStartDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->before_unload_start.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetBeforeUnloadEndDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->before_unload_end.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetBeforeUnloadDialogOpenedDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->before_unload_dialog_opened.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetBeforeUnloadDialogClosedDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->before_unload_dialog_closed.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void BeginNavigationParamsDataView::GetScriptToolInvocationIdDataView(
    ::mojo_base::mojom::UnguessableTokenDataView* output) {
  auto pointer = data_->script_tool_invocation_id.Get();
  *output = ::mojo_base::mojom::UnguessableTokenDataView(pointer, message_);
}


inline void CommonNavigationParamsDataView::GetUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetInitiatorOriginDataView(
    ::url::mojom::OriginDataView* output) {
  auto pointer = data_->initiator_origin.Get();
  *output = ::url::mojom::OriginDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetInitiatorBaseUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->initiator_base_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetReferrerDataView(
    ::blink::mojom::ReferrerDataView* output) {
  auto pointer = data_->referrer.Get();
  *output = ::blink::mojom::ReferrerDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetDownloadPolicyDataView(
    ::blink::mojom::NavigationDownloadPolicyDataView* output) {
  auto pointer = data_->download_policy.Get();
  *output = ::blink::mojom::NavigationDownloadPolicyDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetBaseUrlForDataUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->base_url_for_data_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetActualNavigationStartDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->actual_navigation_start.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetNavigationStartDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->navigation_start.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetMethodDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->method.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetPostDataDataView(
    ::network::mojom::URLRequestBodyDataView* output) {
  auto pointer = data_->post_data.Get();
  *output = ::network::mojom::URLRequestBodyDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetSourceLocationDataView(
    ::network::mojom::SourceLocationDataView* output) {
  auto pointer = data_->source_location.Get();
  *output = ::network::mojom::SourceLocationDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetInitiatorOriginTrialFeaturesDataView(
    mojo::ArrayDataView<int32_t>* output) {
  auto pointer = data_->initiator_origin_trial_features.Get();
  *output = mojo::ArrayDataView<int32_t>(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetHrefTranslateDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->href_translate.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void CommonNavigationParamsDataView::GetInputStartDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->input_start.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}


inline void NavigationTimingDataView::GetRedirectStartDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->redirect_start.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void NavigationTimingDataView::GetRedirectEndDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->redirect_end.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void NavigationTimingDataView::GetFetchStartDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->fetch_start.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}


inline void NavigationRedirectParamsDataView::GetRedirectInfoDataView(
    ::network::mojom::URLRequestRedirectInfoDataView* output) {
  auto pointer = data_->redirect_info.Get();
  *output = ::network::mojom::URLRequestRedirectInfoDataView(pointer, message_);
}
inline void NavigationRedirectParamsDataView::GetResponseHeadDataView(
    ::network::mojom::URLResponseHeadDataView* output) {
  auto pointer = data_->response_head.Get();
  *output = ::network::mojom::URLResponseHeadDataView(pointer, message_);
}


inline void OldPageInfoDataView::GetFrameTokenForOldMainFrameDataView(
    ::blink::mojom::LocalFrameTokenDataView* output) {
  auto pointer = data_->frame_token_for_old_main_frame.Get();
  *output = ::blink::mojom::LocalFrameTokenDataView(pointer, message_);
}
inline void OldPageInfoDataView::GetNewLifecycleStateForOldPageDataView(
    ::blink::mojom::PageLifecycleStateDataView* output) {
  auto pointer = data_->new_lifecycle_state_for_old_page.Get();
  *output = ::blink::mojom::PageLifecycleStateDataView(pointer, message_);
}


inline void IsolatedAppPermissionPolicyEntryDataView::GetFeatureDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->feature.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void IsolatedAppPermissionPolicyEntryDataView::GetAllowedOriginsDataView(
    mojo::ArrayDataView<mojo::StringDataView>* output) {
  auto pointer = data_->allowed_origins.Get();
  *output = mojo::ArrayDataView<mojo::StringDataView>(pointer, message_);
}


inline void CommitNavigationParamsDataView::GetOriginToCommitDataView(
    ::url::mojom::OriginDataView* output) {
  auto pointer = data_->origin_to_commit.Get();
  *output = ::url::mojom::OriginDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetStorageKeyDataView(
    ::blink::mojom::StorageKeyDataView* output) {
  auto pointer = data_->storage_key.Get();
  *output = ::blink::mojom::StorageKeyDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetRedirectsDataView(
    mojo::ArrayDataView<::url::mojom::UrlDataView>* output) {
  auto pointer = data_->redirects.Get();
  *output = mojo::ArrayDataView<::url::mojom::UrlDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetRedirectParamsDataView(
    mojo::ArrayDataView<NavigationRedirectParamsDataView>* output) {
  auto pointer = data_->redirect_params.Get();
  *output = mojo::ArrayDataView<NavigationRedirectParamsDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetPostContentTypeDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->post_content_type.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetOriginalUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->original_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetOriginalMethodDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->original_method.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetPageStateDataView(
    ::mojo_base::mojom::ByteStringDataView* output) {
  auto pointer = data_->page_state.Get();
  *output = ::mojo_base::mojom::ByteStringDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetSubframeUniqueNamesDataView(
    mojo::MapDataView<mojo::StringDataView, bool>* output) {
  auto pointer = data_->subframe_unique_names.Get();
  *output = mojo::MapDataView<mojo::StringDataView, bool>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetNavigationTimingDataView(
    NavigationTimingDataView* output) {
  auto pointer = data_->navigation_timing.Get();
  *output = NavigationTimingDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetNavigationTokenDataView(
    ::mojo_base::mojom::UnguessableTokenDataView* output) {
  auto pointer = data_->navigation_token.Get();
  *output = ::mojo_base::mojom::UnguessableTokenDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetPrefetchedSignedExchangesDataView(
    mojo::ArrayDataView<::blink::mojom::PrefetchedSignedExchangeInfoDataView>* output) {
  auto pointer = data_->prefetched_signed_exchanges.Get();
  *output = mojo::ArrayDataView<::blink::mojom::PrefetchedSignedExchangeInfoDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetDataUrlAsStringDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->data_url_as_string.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetFramePolicyDataView(
    ::blink::mojom::FramePolicyDataView* output) {
  auto pointer = data_->frame_policy.Get();
  *output = ::blink::mojom::FramePolicyDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetForceEnabledOriginTrialsDataView(
    mojo::ArrayDataView<mojo::StringDataView>* output) {
  auto pointer = data_->force_enabled_origin_trials.Get();
  *output = mojo::ArrayDataView<mojo::StringDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetAgentClusterKeyDataView(
    ::blink::mojom::AgentClusterKeyDataView* output) {
  auto pointer = &data_->agent_cluster_key;
  *output = ::blink::mojom::AgentClusterKeyDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetEnabledClientHintsDataView(
    mojo::ArrayDataView<::network::mojom::WebClientHintsType>* output) {
  auto pointer = data_->enabled_client_hints.Get();
  *output = mojo::ArrayDataView<::network::mojom::WebClientHintsType>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetOldPageInfoDataView(
    OldPageInfoDataView* output) {
  auto pointer = data_->old_page_info.Get();
  *output = OldPageInfoDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetNavigationApiHistoryEntryArraysDataView(
    ::blink::mojom::NavigationApiHistoryEntryArraysDataView* output) {
  auto pointer = data_->navigation_api_history_entry_arrays.Get();
  *output = ::blink::mojom::NavigationApiHistoryEntryArraysDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetEarlyHintsPreloadedResourcesDataView(
    mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>* output) {
  auto pointer = data_->early_hints_preloaded_resources.Get();
  *output = mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetEarlyHintsPreconnectsDataView(
    mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>* output) {
  auto pointer = data_->early_hints_preconnects.Get();
  *output = mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetNavigationPreconnectsDataView(
    mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>* output) {
  auto pointer = data_->navigation_preconnects.Get();
  *output = mojo::ArrayDataView<::network::mojom::LinkHeaderDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetCommitSentDataView(
    ::mojo_base::mojom::TimeTicksDataView* output) {
  auto pointer = data_->commit_sent.Get();
  *output = ::mojo_base::mojom::TimeTicksDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetSrcdocValueDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->srcdoc_value.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetReducedAcceptLanguageDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->reduced_accept_language.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetViewTransitionStateDataView(
    ::blink::mojom::ViewTransitionStateDataView* output) {
  auto pointer = data_->view_transition_state.Get();
  *output = ::blink::mojom::ViewTransitionStateDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetSoftNavigationHeuristicsTaskIdDataView(
    ::blink::mojom::TaskAttributionIdDataView* output) {
  auto pointer = data_->soft_navigation_heuristics_task_id.Get();
  *output = ::blink::mojom::TaskAttributionIdDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetModifiedRuntimeFeaturesDataView(
    mojo::MapDataView<::blink::mojom::RuntimeFeature, bool>* output) {
  auto pointer = data_->modified_runtime_features.Get();
  *output = mojo::MapDataView<::blink::mojom::RuntimeFeature, bool>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetFencedFramePropertiesDataView(
    ::blink::mojom::FencedFramePropertiesDataView* output) {
  auto pointer = data_->fenced_frame_properties.Get();
  *output = ::blink::mojom::FencedFramePropertiesDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetNotRestoredReasonsDataView(
    ::blink::mojom::BackForwardCacheNotRestoredReasonsDataView* output) {
  auto pointer = data_->not_restored_reasons.Get();
  *output = ::blink::mojom::BackForwardCacheNotRestoredReasonsDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetBrowsingContextGroupTokenDataView(
    ::mojo_base::mojom::UnguessableTokenDataView* output) {
  auto pointer = data_->browsing_context_group_token.Get();
  *output = ::mojo_base::mojom::UnguessableTokenDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetLcppHintDataView(
    ::blink::mojom::LCPCriticalPathPredictorNavigationTimeHintDataView* output) {
  auto pointer = data_->lcpp_hint.Get();
  *output = ::blink::mojom::LCPCriticalPathPredictorNavigationTimeHintDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetContentSettingsDataView(
    ::blink::mojom::RendererContentSettingsDataView* output) {
  auto pointer = data_->content_settings.Get();
  *output = ::blink::mojom::RendererContentSettingsDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetLocalSurfaceIdDataView(
    ::viz::mojom::LocalSurfaceIdDataView* output) {
  auto pointer = data_->local_surface_id.Get();
  *output = ::viz::mojom::LocalSurfaceIdDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetInitialPermissionStatusesDataView(
    mojo::MapDataView<::blink::mojom::PermissionName, ::blink::mojom::PermissionStatus>* output) {
  auto pointer = data_->initial_permission_statuses.Get();
  *output = mojo::MapDataView<::blink::mojom::PermissionName, ::blink::mojom::PermissionStatus>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetNavigationMetricsTokenDataView(
    ::mojo_base::mojom::UnguessableTokenDataView* output) {
  auto pointer = data_->navigation_metrics_token.Get();
  *output = ::mojo_base::mojom::UnguessableTokenDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetCommitTargetFrameTokenDataView(
    ::blink::mojom::LocalFrameTokenDataView* output) {
  auto pointer = data_->commit_target_frame_token.Get();
  *output = ::blink::mojom::LocalFrameTokenDataView(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetIsolatedAppPolicyDataView(
    mojo::ArrayDataView<IsolatedAppPermissionPolicyEntryDataView>* output) {
  auto pointer = data_->isolated_app_policy.Get();
  *output = mojo::ArrayDataView<IsolatedAppPermissionPolicyEntryDataView>(pointer, message_);
}
inline void CommitNavigationParamsDataView::GetInternalScrollToTextFragmentDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->internal_scroll_to_text_fragment.Get();
  *output = mojo::StringDataView(pointer, message_);
}


inline void PageSwapEventParamsDataView::GetUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void PageSwapEventParamsDataView::GetPageStateDataView(
    ::mojo_base::mojom::ByteStringDataView* output) {
  auto pointer = data_->page_state.Get();
  *output = ::mojo_base::mojom::ByteStringDataView(pointer, message_);
}



}  // blink::mojom

// Declare TraceFormatTraits for enums, which should be defined in ::perfetto
// namespace.

namespace perfetto {

template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::NavigationType> {
 static void WriteIntoTrace(perfetto::TracedValue context, ::blink::mojom::NavigationType value);
};

} // namespace perfetto

namespace perfetto {

template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::ForceHistoryPush> {
 static void WriteIntoTrace(perfetto::TracedValue context, ::blink::mojom::ForceHistoryPush value);
};

} // namespace perfetto

namespace perfetto {

template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::ParentResourceTimingAccess> {
 static void WriteIntoTrace(perfetto::TracedValue context, ::blink::mojom::ParentResourceTimingAccess value);
};

} // namespace perfetto

namespace perfetto {

template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) TraceFormatTraits<::blink::mojom::ScriptInjectionPolicy> {
 static void WriteIntoTrace(perfetto::TracedValue context, ::blink::mojom::ScriptInjectionPolicy value);
};

} // namespace perfetto

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_NAVIGATION_NAVIGATION_PARAMS_MOJOM_SHARED_H_