// ui/events/mojom/motion_event_android.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_EVENTS_MOJOM_MOTION_EVENT_ANDROID_MOJOM_SEND_VALIDATION_H_
#define UI_EVENTS_MOJOM_MOTION_EVENT_ANDROID_MOJOM_SEND_VALIDATION_H_

#include "ui/events/mojom/motion_event_android.mojom-shared-internal.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "ui/gfx/geometry/mojom/geometry.mojom-shared.h"

#include "ui/events/mojom/motion_event_android.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<::ui::mojom::PointerCoordinatesDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::ui::mojom::PointerCoordinatesDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::ui::mojom::internal::PointerCoordinates_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

      decltype(Traits::position(input)) in_position = Traits::position(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->position)::BaseType> position_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::gfx::mojom::PointFDataView, send_validation>(
        in_position,
        position_fragment);

      fragment->position.Set(
          position_fragment.is_null() ? nullptr : position_fragment.data());

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

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

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

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

      decltype(Traits::pointer_data(input)) in_pointer_data = Traits::pointer_data(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->pointer_data)::BaseType> pointer_data_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::ui::mojom::PointerCoordinatesDataView, send_validation>(
        in_pointer_data,
        pointer_data_fragment);

      fragment->pointer_data.Set(
          pointer_data_fragment.is_null() ? nullptr : pointer_data_fragment.data());

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

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

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

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

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

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

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

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

      decltype(Traits::pointers(input)) in_pointers = Traits::pointers(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->pointers)::BaseType>
          pointers_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& pointers_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::ui::mojom::PointerCoordinatesDataView>, send_validation>(
        in_pointers,
        pointers_fragment,
        &pointers_validate_params);

      fragment->pointers.Set(
          pointers_fragment.is_null() ? nullptr : pointers_fragment.data());

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

      decltype(Traits::event_time(input)) in_event_time = Traits::event_time(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->event_time)::BaseType> event_time_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_event_time,
        event_time_fragment);

      fragment->event_time.Set(
          event_time_fragment.is_null() ? nullptr : event_time_fragment.data());

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

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

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

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

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

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

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

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

      decltype(Traits::latest_event_time(input)) in_latest_event_time = Traits::latest_event_time(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->latest_event_time)::BaseType> latest_event_time_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_latest_event_time,
        latest_event_time_fragment);

      fragment->latest_event_time.Set(
          latest_event_time_fragment.is_null() ? nullptr : latest_event_time_fragment.data());

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

      decltype(Traits::down_time_ms(input)) in_down_time_ms = Traits::down_time_ms(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->down_time_ms)::BaseType> down_time_ms_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeTicksDataView, send_validation>(
        in_down_time_ms,
        down_time_ms_fragment);

      fragment->down_time_ms.Set(
          down_time_ms_fragment.is_null() ? nullptr : down_time_ms_fragment.data());

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

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

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

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

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

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

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

      decltype(Traits::raw_position_offset(input)) in_raw_position_offset = Traits::raw_position_offset(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->raw_position_offset)::BaseType> raw_position_offset_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::gfx::mojom::Vector2dFDataView, send_validation>(
        in_raw_position_offset,
        raw_position_offset_fragment);

      fragment->raw_position_offset.Set(
          raw_position_offset_fragment.is_null() ? nullptr : raw_position_offset_fragment.data());

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

      decltype(Traits::pointers(input)) in_pointers = Traits::pointers(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->pointers)::BaseType>
          pointers_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& pointers_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::ui::mojom::MotionEventAndroidCachedPointerDataView>, send_validation>(
        in_pointers,
        pointers_fragment,
        &pointers_validate_params);

      fragment->pointers.Set(
          pointers_fragment.is_null() ? nullptr : pointers_fragment.data());

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

      decltype(Traits::historical_events(input)) in_historical_events = Traits::historical_events(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->historical_events)::BaseType>
          historical_events_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& historical_events_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::ui::mojom::HistoricalCachedPointerDataView>, send_validation>(
        in_historical_events,
        historical_events_fragment,
        &historical_events_validate_params);

      fragment->historical_events.Set(
          historical_events_fragment.is_null() ? nullptr : historical_events_fragment.data());

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

}  // namespace mojo::internal

#endif  // UI_EVENTS_MOJOM_MOTION_EVENT_ANDROID_MOJOM_SEND_VALIDATION_H_