// third_party/blink/public/mojom/webpreferences/web_preferences.mojom-shared-internal.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_INTERNAL_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_WEBPREFERENCES_WEB_PREFERENCES_MOJOM_SHARED_INTERNAL_H_
#include "mojo/public/cpp/bindings/lib/array_internal.h"
#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
#include "mojo/public/cpp/bindings/lib/map_data_internal.h"
#include "mojo/public/cpp/bindings/lib/validation_errors.h"
#include "mojo/public/cpp/bindings/lib/message_fragment.h"
#include "mojo/public/mojom/base/string16.mojom-shared-internal.h"
#include "mojo/public/mojom/base/time.mojom-shared-internal.h"
#include "skia/public/mojom/skcolor.mojom-shared-internal.h"
#include "third_party/blink/public/mojom/css/preferred_color_scheme.mojom-shared-internal.h"
#include "third_party/blink/public/mojom/css/preferred_contrast.mojom-shared-internal.h"
#include "third_party/blink/public/mojom/v8_cache_options.mojom-shared-internal.h"
#include "url/mojom/url.mojom-shared-internal.h"
#include "mojo/public/cpp/bindings/lib/native_enum_data.h"
#include "mojo/public/interfaces/bindings/native_struct.mojom-shared-internal.h"
#include "base/component_export.h"



namespace mojo {
namespace internal {
class ValidationContext;
}
}


namespace blink::mojom {
namespace internal {
class WebPreferences_Data;

struct PointerType_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 1:
      case 2:
      case 4:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

struct HoverType_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 1:
      case 2:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

struct OutputDeviceUpdateAbilityType_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 0:
      case 1:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

struct EditingBehavior_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
      case 3:
      case 4:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

struct ImageAnimationPolicy_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

struct ViewportStyle_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

struct AutoplayPolicy_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

struct EffectiveConnectionType_Data {
 public:
  static bool constexpr kIsExtensible = false;

  static bool IsKnownValue(int32_t value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
      case 3:
      case 4:
      case 5:
      case 6:
        return true;
    }
    return false;
  }

  static bool Validate(int32_t value,
                       mojo::internal::ValidationContext* validation_context) {
    if (kIsExtensible || IsKnownValue(value))
      return true;

    ReportValidationError(validation_context,
                          mojo::internal::VALIDATION_ERROR_UNKNOWN_ENUM_VALUE);
    return false;
  }
};

#pragma pack(push, 1)
class COMPONENT_EXPORT(MOJOM_SHARED_BLINK_COMMON_EXPORT) WebPreferences_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, mojo::internal::Pointer<::mojo_base::mojom::internal::String16_Data>>> standard_font_family_map;
  mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, mojo::internal::Pointer<::mojo_base::mojom::internal::String16_Data>>> fixed_font_family_map;
  mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, mojo::internal::Pointer<::mojo_base::mojom::internal::String16_Data>>> serif_font_family_map;
  mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, mojo::internal::Pointer<::mojo_base::mojom::internal::String16_Data>>> sans_serif_font_family_map;
  mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, mojo::internal::Pointer<::mojo_base::mojom::internal::String16_Data>>> cursive_font_family_map;
  mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, mojo::internal::Pointer<::mojo_base::mojom::internal::String16_Data>>> fantasy_font_family_map;
  mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, mojo::internal::Pointer<::mojo_base::mojom::internal::String16_Data>>> math_font_family_map;
  int32_t default_font_size;
  int32_t default_fixed_font_size;
  int32_t minimum_font_size;
  int32_t minimum_logical_font_size;
  mojo::internal::Pointer<mojo::internal::String_Data> default_encoding;
  uint8_t context_menu_on_mouse_up : 1;
  uint8_t javascript_enabled : 1;
  uint8_t web_security_enabled : 1;
  uint8_t loads_images_automatically : 1;
  uint8_t images_enabled : 1;
  uint8_t plugins_enabled : 1;
  uint8_t dom_paste_enabled : 1;
  uint8_t shrinks_standalone_images_to_fit : 1;
  uint8_t text_areas_are_resizable : 1;
  uint8_t allow_scripts_to_close_windows : 1;
  uint8_t allow_unrestricted_window_focus : 1;
  uint8_t remote_fonts_enabled : 1;
  uint8_t javascript_can_access_clipboard : 1;
  uint8_t dns_prefetching_enabled : 1;
  uint8_t data_saver_enabled : 1;
  uint8_t battery_saver_enabled : 1;
  uint8_t preloading_disabled : 1;
  uint8_t local_storage_enabled : 1;
  uint8_t tabs_to_links : 1;
  uint8_t disable_ipc_flooding_protection : 1;
  uint8_t hyperlink_auditing_enabled : 1;
  uint8_t allow_universal_access_from_file_urls : 1;
  uint8_t allow_file_access_from_file_urls : 1;
  uint8_t webgl1_enabled : 1;
  uint8_t webgl2_enabled : 1;
  uint8_t privileged_webgl_extensions_enabled : 1;
  uint8_t webgl_errors_to_console_enabled : 1;
  uint8_t hide_scrollbars : 1;
  uint8_t prefers_default_scrollbar_styles : 1;
  uint8_t accelerated_2d_canvas_enabled : 1;
  uint8_t canvas_2d_layers_enabled : 1;
  uint8_t antialiased_2d_canvas_disabled : 1;
  uint8_t antialiased_clips_2d_canvas_enabled : 1;
  uint8_t accelerated_filters_enabled : 1;
  uint8_t deferred_filters_enabled : 1;
  uint8_t container_culling_enabled : 1;
  uint8_t allow_running_insecure_content : 1;
  uint8_t disable_reading_from_canvas : 1;
  uint8_t strict_mixed_content_checking : 1;
  uint8_t allow_geolocation_on_insecure_origins : 1;
  uint8_t strictly_block_blockable_mixed_content : 1;
  uint8_t block_mixed_plugin_content : 1;
  uint8_t highlight_ads : 1;
  uint8_t password_echo_enabled_physical : 1;
  uint8_t password_echo_enabled_touch : 1;
  uint8_t should_clear_document_background : 1;
  uint8_t enable_scroll_animator : 1;
  uint8_t prefers_reduced_motion : 1;
  uint8_t prefers_reduced_transparency : 1;
  uint8_t inverted_colors : 1;
  uint8_t touch_event_feature_detection_enabled : 1;
  uint8_t dont_send_key_events_to_javascript : 1;
  uint8_t barrel_button_for_drag_enabled : 1;
  uint8_t sync_xhr_in_documents_enabled : 1;
  uint8_t target_blank_implies_no_opener_enabled_will_be_removed : 1;
  uint8_t ignore_permission_for_device_changed_event : 1;
  uint8_t supports_multiple_windows : 1;
  uint8_t viewport_enabled : 1;
  uint8_t viewport_meta_enabled : 1;
  uint8_t auto_zoom_focused_editable_to_legible_scale : 1;
  uint8_t shrinks_viewport_contents_to_fit : 1;
  uint8_t smooth_scroll_for_find_enabled : 1;
  uint8_t main_frame_resizes_are_orientation_changes : 1;
  uint8_t initialize_at_minimum_page_scale : 1;
  int32_t pointer_events_max_touch_points;
  int32_t available_pointer_types;
  int32_t primary_pointer_type;
  int32_t output_device_update_ability_type;
  int32_t available_hover_types;
  int32_t primary_hover_type;
  int32_t number_of_cpu_cores;
  int32_t editing_behavior;
  int32_t viewport_style;
  uint8_t smart_insert_delete_enabled : 1;
  uint8_t spatial_navigation_enabled : 1;
  uint8_t record_whole_document : 1;
  uint8_t stylus_handwriting_enabled : 1;
  uint8_t cookie_enabled : 1;
  uint8_t accelerated_video_decode_enabled : 1;
  uint8_t user_gesture_required_for_presentation : 1;
  uint8_t text_tracks_enabled : 1;
  uint8_t immersive_mode_enabled : 1;
  uint8_t immersive_video_playback_enabled : 1;
  uint8_t double_tap_to_zoom_enabled : 1;
  uint8_t fullscreen_supported : 1;
  uint8_t text_size_adjust_enabled : 1;
  uint8_t is_initial_profile : 1;
  uint8_t force_enable_zoom : 1;
  uint8_t support_deprecated_target_density_dpi : 1;
  uint8_t wide_viewport_quirk : 1;
  uint8_t use_wide_viewport : 1;
  uint8_t force_zero_layout_height : 1;
  uint8_t viewport_meta_merge_content_quirk : 1;
  uint8_t viewport_meta_non_user_scalable_quirk : 1;
  uint8_t viewport_meta_zero_values_quirk : 1;
  uint8_t clobber_user_agent_initial_scale_quirk : 1;
  uint8_t ignore_main_frame_overflow_hidden_quirk : 1;
  uint8_t report_screen_size_in_physical_pixels_quirk : 1;
  uint8_t reuse_global_for_unowned_main_frame : 1;
  uint8_t spellcheck_enabled_by_default : 1;
  uint8_t video_fullscreen_orientation_lock_enabled : 1;
  uint8_t video_rotate_to_fullscreen_enabled : 1;
  uint8_t embedded_media_experience_enabled : 1;
  uint8_t css_hex_alpha_color_enabled : 1;
  uint8_t scroll_top_left_interop_enabled : 1;
  int32_t v8_cache_options;
  int32_t animation_policy;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_background_color;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_text_color;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_text_size;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_text_shadow;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_font_family;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_font_style;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_font_variant;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_window_color;
  mojo::internal::Pointer<mojo::internal::String_Data> text_track_window_radius;
  float text_track_margin_percentage;
  float font_scale_factor;
  mojo::internal::Pointer<::url::mojom::internal::Url_Data> web_app_scope;
  int32_t font_weight_adjustment;
  int32_t text_size_contrast_factor;
  mojo::internal::Pointer<::url::mojom::internal::Url_Data> default_video_poster_url;
  uint8_t disable_accelerated_small_canvases : 1;
  uint8_t long_press_link_select_text : 1;
  uint8_t scale_all_fonts_if_no_meta_text_scale_tag : 1;
  uint8_t disable_webauthn : 1;
  uint8_t force_dark_mode_enabled : 1;
  uint8_t hide_download_ui : 1;
  uint8_t presentation_receiver : 1;
  uint8_t media_controls_enabled : 1;
  uint8_t do_not_update_selection_on_mutating_selection_range : 1;
  uint8_t require_transient_activation_for_get_display_media : 1;
  uint8_t require_transient_activation_for_show_file_or_directory_picker : 1;
  uint8_t in_forced_colors : 1;
  uint8_t is_forced_colors_disabled : 1;
  uint8_t picture_in_picture_enabled : 1;
  uint8_t translate_service_available : 1;
  uint8_t lazy_load_enabled : 1;
  uint8_t allow_mixed_content_upgrades : 1;
  uint8_t always_show_focus : 1;
  uint8_t touch_drag_drop_enabled : 1;
  uint8_t touch_dragend_context_menu : 1;
  uint8_t webxr_immersive_ar_allowed : 1;
  uint8_t renderer_wide_named_frame_lookup : 1;
  uint8_t strict_mime_type_check_for_worker_scripts_enabled : 1;
  uint8_t modal_context_menu : 1;
  uint8_t dynamic_safe_area_insets_enabled : 1;
  uint8_t payment_request_enabled : 1;
  uint8_t ai_ot_apis_enabled : 1;
  uint8_t should_screenshot_on_mainframe_same_doc_navigation : 1;
  uint8_t is_indigo_onboarding : 1;
  float default_minimum_page_scale_factor;
  float default_maximum_page_scale_factor;
  int32_t autoplay_policy;
  mojo::internal::Pointer<::skia::mojom::internal::SkColor_Data> root_scrollbar_theme_color;
  int32_t preferred_root_scrollbar_color_scheme;
  int32_t preferred_color_scheme;
  int32_t preferred_contrast;
  int32_t low_priority_iframes_threshold;
  int32_t network_quality_estimator_web_holdback;
  uint8_t padfinal_[4];

 private:
  friend class mojo::internal::MessageFragment<WebPreferences_Data>;

  WebPreferences_Data();
  ~WebPreferences_Data() = delete;
};
static_assert(sizeof(WebPreferences_Data) == 296,
              "Bad sizeof(WebPreferences_Data)");
// Used by WebPreferences::WrapAsMessage to lazily serialize the struct.
template <typename UserType, typename DataView>
struct WebPreferences_UnserializedMessageContext
    : public mojo::internal::UnserializedMessageContext {
 public:
  static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;

  WebPreferences_UnserializedMessageContext(
    uint32_t message_name,
    uint32_t message_flags,
    UserType input)
      : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
      , user_data_(std::move(input)) {}
  ~WebPreferences_UnserializedMessageContext() override = default;

  UserType TakeData() {
    return std::move(user_data_);
  }

 private:
  // mojo::internal::UnserializedMessageContext:
  void Serialize(mojo::Message& message) override {
    mojo::internal::MessageFragment<WebPreferences_Data> fragment(message);
    mojo::internal::Serialize<DataView>(user_data_, fragment);
  }

  UserType user_data_;
};

template <typename UserType, typename DataView>
const mojo::internal::UnserializedMessageContext::Tag
    WebPreferences_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};

#pragma pack(pop)

}  // namespace internal

}  // blink::mojom

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_WEBPREFERENCES_WEB_PREFERENCES_MOJOM_SHARED_INTERNAL_H_