// third_party/blink/public/mojom/webpreferences/web_preferences.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_WEBPREFERENCES_WEB_PREFERENCES_MOJOM_SHARED_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_WEBPREFERENCES_WEB_PREFERENCES_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/webpreferences/web_preferences.mojom-shared-internal.h"
#include "mojo/public/mojom/base/string16.mojom-shared.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "skia/public/mojom/skcolor.mojom-shared.h"
#include "third_party/blink/public/mojom/css/preferred_color_scheme.mojom-shared.h"
#include "third_party/blink/public/mojom/css/preferred_contrast.mojom-shared.h"
#include "third_party/blink/public/mojom/v8_cache_options.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"




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




namespace std {

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

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

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

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

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

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

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

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

}  // namespace std

namespace mojo {


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::blink::mojom::PointerType, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::PointerType, 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::PointerType>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::PointerType, UserType> ||
                        HasInfallibleConversion(::blink::mojom::PointerType()),
                    "::blink::mojom::PointerType 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::HoverType, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::HoverType, 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::HoverType>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::HoverType, UserType> ||
                        HasInfallibleConversion(::blink::mojom::HoverType()),
                    "::blink::mojom::HoverType 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::OutputDeviceUpdateAbilityType, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::OutputDeviceUpdateAbilityType, 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::OutputDeviceUpdateAbilityType>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::OutputDeviceUpdateAbilityType, UserType> ||
                        HasInfallibleConversion(::blink::mojom::OutputDeviceUpdateAbilityType()),
                    "::blink::mojom::OutputDeviceUpdateAbilityType 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::EditingBehavior, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::EditingBehavior, 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::EditingBehavior>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::EditingBehavior, UserType> ||
                        HasInfallibleConversion(::blink::mojom::EditingBehavior()),
                    "::blink::mojom::EditingBehavior 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::ImageAnimationPolicy, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::ImageAnimationPolicy, 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::ImageAnimationPolicy>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::ImageAnimationPolicy, UserType> ||
                        HasInfallibleConversion(::blink::mojom::ImageAnimationPolicy()),
                    "::blink::mojom::ImageAnimationPolicy 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::ViewportStyle, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::ViewportStyle, 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::ViewportStyle>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::ViewportStyle, UserType> ||
                        HasInfallibleConversion(::blink::mojom::ViewportStyle()),
                    "::blink::mojom::ViewportStyle 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::AutoplayPolicy, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::AutoplayPolicy, 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::AutoplayPolicy>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::AutoplayPolicy, UserType> ||
                        HasInfallibleConversion(::blink::mojom::AutoplayPolicy()),
                    "::blink::mojom::AutoplayPolicy 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::EffectiveConnectionType, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = EnumTraits<::blink::mojom::EffectiveConnectionType, 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::EffectiveConnectionType>(input));
    if constexpr (requires {
                    {
                      Traits::FromMojom(known_value)
                    } -> std::same_as<UserType>;
                  }) {
      static_assert(std::same_as<::blink::mojom::EffectiveConnectionType, UserType> ||
                        HasInfallibleConversion(::blink::mojom::EffectiveConnectionType()),
                    "::blink::mojom::EffectiveConnectionType 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::WebPreferencesDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::blink::mojom::WebPreferencesDataView, UserType>;

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

    decltype(Traits::standard_font_family_map(input)) in_standard_font_family_map = Traits::standard_font_family_map(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->standard_font_family_map)::BaseType>
        standard_font_family_map_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& standard_font_family_map_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, ::mojo_base::mojom::String16DataView>>(
      in_standard_font_family_map,
      standard_font_family_map_fragment,
      &standard_font_family_map_validate_params);

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

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

    decltype(Traits::fixed_font_family_map(input)) in_fixed_font_family_map = Traits::fixed_font_family_map(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->fixed_font_family_map)::BaseType>
        fixed_font_family_map_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& fixed_font_family_map_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, ::mojo_base::mojom::String16DataView>>(
      in_fixed_font_family_map,
      fixed_font_family_map_fragment,
      &fixed_font_family_map_validate_params);

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

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

    decltype(Traits::serif_font_family_map(input)) in_serif_font_family_map = Traits::serif_font_family_map(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->serif_font_family_map)::BaseType>
        serif_font_family_map_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& serif_font_family_map_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, ::mojo_base::mojom::String16DataView>>(
      in_serif_font_family_map,
      serif_font_family_map_fragment,
      &serif_font_family_map_validate_params);

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

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

    decltype(Traits::sans_serif_font_family_map(input)) in_sans_serif_font_family_map = Traits::sans_serif_font_family_map(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->sans_serif_font_family_map)::BaseType>
        sans_serif_font_family_map_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& sans_serif_font_family_map_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, ::mojo_base::mojom::String16DataView>>(
      in_sans_serif_font_family_map,
      sans_serif_font_family_map_fragment,
      &sans_serif_font_family_map_validate_params);

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

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

    decltype(Traits::cursive_font_family_map(input)) in_cursive_font_family_map = Traits::cursive_font_family_map(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->cursive_font_family_map)::BaseType>
        cursive_font_family_map_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& cursive_font_family_map_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, ::mojo_base::mojom::String16DataView>>(
      in_cursive_font_family_map,
      cursive_font_family_map_fragment,
      &cursive_font_family_map_validate_params);

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

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

    decltype(Traits::fantasy_font_family_map(input)) in_fantasy_font_family_map = Traits::fantasy_font_family_map(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->fantasy_font_family_map)::BaseType>
        fantasy_font_family_map_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& fantasy_font_family_map_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, ::mojo_base::mojom::String16DataView>>(
      in_fantasy_font_family_map,
      fantasy_font_family_map_fragment,
      &fantasy_font_family_map_validate_params);

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

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

    decltype(Traits::math_font_family_map(input)) in_math_font_family_map = Traits::math_font_family_map(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->math_font_family_map)::BaseType>
        math_font_family_map_fragment(fragment.message());
    constexpr const mojo::internal::ContainerValidateParams& math_font_family_map_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, ::mojo_base::mojom::String16DataView>>(
      in_math_font_family_map,
      math_font_family_map_fragment,
      &math_font_family_map_validate_params);

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

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

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

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

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

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

    decltype(Traits::default_encoding(input)) in_default_encoding = Traits::default_encoding(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->default_encoding)::BaseType> default_encoding_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_default_encoding,
      default_encoding_fragment);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    decltype(Traits::text_track_background_color(input)) in_text_track_background_color = Traits::text_track_background_color(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_background_color)::BaseType> text_track_background_color_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_background_color,
      text_track_background_color_fragment);

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

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

    decltype(Traits::text_track_text_color(input)) in_text_track_text_color = Traits::text_track_text_color(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_text_color)::BaseType> text_track_text_color_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_text_color,
      text_track_text_color_fragment);

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

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

    decltype(Traits::text_track_text_size(input)) in_text_track_text_size = Traits::text_track_text_size(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_text_size)::BaseType> text_track_text_size_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_text_size,
      text_track_text_size_fragment);

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

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

    decltype(Traits::text_track_text_shadow(input)) in_text_track_text_shadow = Traits::text_track_text_shadow(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_text_shadow)::BaseType> text_track_text_shadow_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_text_shadow,
      text_track_text_shadow_fragment);

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

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

    decltype(Traits::text_track_font_family(input)) in_text_track_font_family = Traits::text_track_font_family(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_font_family)::BaseType> text_track_font_family_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_font_family,
      text_track_font_family_fragment);

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

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

    decltype(Traits::text_track_font_style(input)) in_text_track_font_style = Traits::text_track_font_style(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_font_style)::BaseType> text_track_font_style_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_font_style,
      text_track_font_style_fragment);

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

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

    decltype(Traits::text_track_font_variant(input)) in_text_track_font_variant = Traits::text_track_font_variant(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_font_variant)::BaseType> text_track_font_variant_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_font_variant,
      text_track_font_variant_fragment);

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

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

    decltype(Traits::text_track_window_color(input)) in_text_track_window_color = Traits::text_track_window_color(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_window_color)::BaseType> text_track_window_color_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_window_color,
      text_track_window_color_fragment);

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

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

    decltype(Traits::text_track_window_radius(input)) in_text_track_window_radius = Traits::text_track_window_radius(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->text_track_window_radius)::BaseType> text_track_window_radius_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_text_track_window_radius,
      text_track_window_radius_fragment);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    decltype(Traits::root_scrollbar_theme_color(input)) in_root_scrollbar_theme_color = Traits::root_scrollbar_theme_color(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->root_scrollbar_theme_color)::BaseType> root_scrollbar_theme_color_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::skia::mojom::SkColorDataView>(
      in_root_scrollbar_theme_color,
      root_scrollbar_theme_color_fragment);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}  // namespace internal

}  // namespace mojo


namespace blink::mojom {

inline void WebPreferencesDataView::GetStandardFontFamilyMapDataView(
    mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>* output) {
  auto pointer = data_->standard_font_family_map.Get();
  *output = mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>(pointer, message_);
}
inline void WebPreferencesDataView::GetFixedFontFamilyMapDataView(
    mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>* output) {
  auto pointer = data_->fixed_font_family_map.Get();
  *output = mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>(pointer, message_);
}
inline void WebPreferencesDataView::GetSerifFontFamilyMapDataView(
    mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>* output) {
  auto pointer = data_->serif_font_family_map.Get();
  *output = mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>(pointer, message_);
}
inline void WebPreferencesDataView::GetSansSerifFontFamilyMapDataView(
    mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>* output) {
  auto pointer = data_->sans_serif_font_family_map.Get();
  *output = mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>(pointer, message_);
}
inline void WebPreferencesDataView::GetCursiveFontFamilyMapDataView(
    mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>* output) {
  auto pointer = data_->cursive_font_family_map.Get();
  *output = mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>(pointer, message_);
}
inline void WebPreferencesDataView::GetFantasyFontFamilyMapDataView(
    mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>* output) {
  auto pointer = data_->fantasy_font_family_map.Get();
  *output = mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>(pointer, message_);
}
inline void WebPreferencesDataView::GetMathFontFamilyMapDataView(
    mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>* output) {
  auto pointer = data_->math_font_family_map.Get();
  *output = mojo::MapDataView<mojo::StringDataView, ::mojo_base::mojom::String16DataView>(pointer, message_);
}
inline void WebPreferencesDataView::GetDefaultEncodingDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->default_encoding.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackBackgroundColorDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_background_color.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackTextColorDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_text_color.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackTextSizeDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_text_size.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackTextShadowDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_text_shadow.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackFontFamilyDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_font_family.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackFontStyleDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_font_style.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackFontVariantDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_font_variant.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackWindowColorDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_window_color.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetTextTrackWindowRadiusDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->text_track_window_radius.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetWebAppScopeDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->web_app_scope.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetDefaultVideoPosterUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->default_video_poster_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void WebPreferencesDataView::GetRootScrollbarThemeColorDataView(
    ::skia::mojom::SkColorDataView* output) {
  auto pointer = data_->root_scrollbar_theme_color.Get();
  *output = ::skia::mojom::SkColorDataView(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::PointerType> {
 static void WriteIntoTrace(perfetto::TracedValue context, ::blink::mojom::PointerType value);
};

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

namespace perfetto {

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

} // namespace perfetto

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_WEBPREFERENCES_WEB_PREFERENCES_MOJOM_SHARED_H_