// ui/accessibility/mojom/ax_assistant_structure.mojom-send-validation.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_ACCESSIBILITY_MOJOM_AX_ASSISTANT_STRUCTURE_MOJOM_SEND_VALIDATION_H_
#define UI_ACCESSIBILITY_MOJOM_AX_ASSISTANT_STRUCTURE_MOJOM_SEND_VALIDATION_H_

#include "ui/accessibility/mojom/ax_assistant_structure.mojom-shared-internal.h"
#include "mojo/public/mojom/base/string16.mojom-shared.h"
#include "ui/gfx/geometry/mojom/geometry.mojom-shared.h"
#include "ui/gfx/range/mojom/range.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"

#include "ui/accessibility/mojom/ax_assistant_structure.mojom-data-view.h"

#include "mojo/public/cpp/bindings/lib/send_validation_type.h"
#include "mojo/public/cpp/bindings/lib/send_validation.h"

namespace mojo::internal {

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

      decltype(Traits::nodes(input)) in_nodes = Traits::nodes(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->nodes)::BaseType>
          nodes_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& nodes_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::ax::mojom::AssistantNodeDataView>, send_validation>(
        in_nodes,
        nodes_fragment,
        &nodes_validate_params);

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

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

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

      decltype(Traits::children_indices(input)) in_children_indices = Traits::children_indices(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->children_indices)::BaseType>
          children_indices_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& children_indices_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<int32_t>, send_validation>(
        in_children_indices,
        children_indices_fragment,
        &children_indices_validate_params);

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

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

      decltype(Traits::rect(input)) in_rect = Traits::rect(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->rect)::BaseType> rect_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::gfx::mojom::RectDataView, send_validation>(
        in_rect,
        rect_fragment);

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

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

      decltype(Traits::text(input)) in_text = Traits::text(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->text)::BaseType> text_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::String16DataView, send_validation>(
        in_text,
        text_fragment);

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

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

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

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

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

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

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

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

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

      decltype(Traits::selection(input)) in_selection = Traits::selection(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->selection)::BaseType> selection_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::gfx::mojom::RangeDataView, send_validation>(
        in_selection,
        selection_fragment);

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

      decltype(Traits::class_name(input)) in_class_name = Traits::class_name(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->class_name)::BaseType> class_name_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_class_name,
        class_name_fragment);

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

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

      decltype(Traits::role(input)) in_role = Traits::role(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->role)::BaseType> role_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_role,
        role_fragment);

      fragment->role.Set(
          role_fragment.is_null() ? nullptr : role_fragment.data());
  }
};

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

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

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

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

      decltype(Traits::bounds_pixel(input)) in_bounds_pixel = Traits::bounds_pixel(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->bounds_pixel)::BaseType> bounds_pixel_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::gfx::mojom::RectDataView, send_validation>(
        in_bounds_pixel,
        bounds_pixel_fragment);

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

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

      decltype(Traits::title(input)) in_title = Traits::title(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->title)::BaseType> title_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::String16DataView, send_validation>(
        in_title,
        title_fragment);

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

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

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

      decltype(Traits::assistant_tree(input)) in_assistant_tree = Traits::assistant_tree(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->assistant_tree)::BaseType> assistant_tree_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::ax::mojom::AssistantTreeDataView, send_validation>(
        in_assistant_tree,
        assistant_tree_fragment);

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

      decltype(Traits::assistant_extra(input)) in_assistant_extra = Traits::assistant_extra(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->assistant_extra)::BaseType> assistant_extra_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::ax::mojom::AssistantExtraDataView, send_validation>(
        in_assistant_extra,
        assistant_extra_fragment);

      fragment->assistant_extra.Set(
          assistant_extra_fragment.is_null() ? nullptr : assistant_extra_fragment.data());
  }
};

}  // namespace mojo::internal

#endif  // UI_ACCESSIBILITY_MOJOM_AX_ASSISTANT_STRUCTURE_MOJOM_SEND_VALIDATION_H_