// chrome/browser/actor/ui/actor_overlay.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 CHROME_BROWSER_ACTOR_UI_ACTOR_OVERLAY_MOJOM_SEND_VALIDATION_H_
#define CHROME_BROWSER_ACTOR_UI_ACTOR_OVERLAY_MOJOM_SEND_VALIDATION_H_

#include "chrome/browser/actor/ui/actor_overlay.mojom-shared-internal.h"
#include "mojo/public/mojom/base/values.mojom-shared.h"
#include "skia/public/mojom/skcolor.mojom-shared.h"
#include "ui/gfx/geometry/mojom/geometry.mojom-shared.h"

#include "chrome/browser/actor/ui/actor_overlay.mojom-data-view.h"

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

namespace mojo::internal {

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

      decltype(Traits::border_color(input)) in_border_color = Traits::border_color(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->border_color)::BaseType> border_color_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkColorDataView, send_validation>(
        in_border_color,
        border_color_fragment);

      fragment->border_color.Set(
          border_color_fragment.is_null() ? nullptr : border_color_fragment.data());

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

      decltype(Traits::border_glow_color(input)) in_border_glow_color = Traits::border_glow_color(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->border_glow_color)::BaseType> border_glow_color_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkColorDataView, send_validation>(
        in_border_glow_color,
        border_glow_color_fragment);

      fragment->border_glow_color.Set(
          border_glow_color_fragment.is_null() ? nullptr : border_glow_color_fragment.data());

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

      decltype(Traits::scrim_colors(input)) in_scrim_colors = Traits::scrim_colors(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->scrim_colors)::BaseType>
          scrim_colors_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& scrim_colors_validate_params =
          mojo::internal::GetArrayValidator<3, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::skia::mojom::SkColorDataView>, send_validation>(
        in_scrim_colors,
        scrim_colors_fragment,
        &scrim_colors_validate_params);

      fragment->scrim_colors.Set(
          scrim_colors_fragment.is_null() ? nullptr : scrim_colors_fragment.data());

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

      decltype(Traits::magic_cursor_color(input)) in_magic_cursor_color = Traits::magic_cursor_color(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->magic_cursor_color)::BaseType> magic_cursor_color_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::skia::mojom::SkColorDataView, send_validation>(
        in_magic_cursor_color,
        magic_cursor_color_fragment);

      fragment->magic_cursor_color.Set(
          magic_cursor_color_fragment.is_null() ? nullptr : magic_cursor_color_fragment.data());

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

}  // namespace mojo::internal

#endif  // CHROME_BROWSER_ACTOR_UI_ACTOR_OVERLAY_MOJOM_SEND_VALIDATION_H_