// chrome/browser/ui/webui/omnibox/aim_eligibility/aim_eligibility.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_UI_WEBUI_OMNIBOX_AIM_ELIGIBILITY_AIM_ELIGIBILITY_MOJOM_SEND_VALIDATION_H_
#define CHROME_BROWSER_UI_WEBUI_OMNIBOX_AIM_ELIGIBILITY_AIM_ELIGIBILITY_MOJOM_SEND_VALIDATION_H_

#include "chrome/browser/ui/webui/omnibox/aim_eligibility/aim_eligibility.mojom-shared-internal.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"

#include "chrome/browser/ui/webui/omnibox/aim_eligibility/aim_eligibility.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"
#include "mojo/public/cpp/bindings/lib/has_send_validation_helper.h"

namespace mojo::internal {
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::aim_eligibility::mojom::DisclaimerState, MaybeConstUserType>
    : std::false_type {};

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

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

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

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

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

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

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

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

      
      mojo::internal::Serialize<::aim_eligibility::mojom::DisclaimerState>(
        Traits::disclaimer_state(input),
        &fragment->disclaimer_state);

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

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

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

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

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

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

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

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

      decltype(Traits::eligibility_response_base64_encoded(input)) in_eligibility_response_base64_encoded = Traits::eligibility_response_base64_encoded(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->eligibility_response_base64_encoded)::BaseType> eligibility_response_base64_encoded_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_eligibility_response_base64_encoded,
        eligibility_response_base64_encoded_fragment);

      fragment->eligibility_response_base64_encoded.Set(
          eligibility_response_base64_encoded_fragment.is_null() ? nullptr : eligibility_response_base64_encoded_fragment.data());

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

      decltype(Traits::eligibility_response_source(input)) in_eligibility_response_source = Traits::eligibility_response_source(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->eligibility_response_source)::BaseType> eligibility_response_source_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_eligibility_response_source,
        eligibility_response_source_fragment);

      fragment->eligibility_response_source.Set(
          eligibility_response_source_fragment.is_null() ? nullptr : eligibility_response_source_fragment.data());

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

      decltype(Traits::eligibility_response_auth_type(input)) in_eligibility_response_auth_type = Traits::eligibility_response_auth_type(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->eligibility_response_auth_type)::BaseType> eligibility_response_auth_type_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_eligibility_response_auth_type,
        eligibility_response_auth_type_fragment);

      fragment->eligibility_response_auth_type.Set(
          eligibility_response_auth_type_fragment.is_null() ? nullptr : eligibility_response_auth_type_fragment.data());

      decltype(Traits::searchbox_config_base64_url_encoded(input)) in_searchbox_config_base64_url_encoded = Traits::searchbox_config_base64_url_encoded(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->searchbox_config_base64_url_encoded)::BaseType> searchbox_config_base64_url_encoded_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_searchbox_config_base64_url_encoded,
        searchbox_config_base64_url_encoded_fragment);

      fragment->searchbox_config_base64_url_encoded.Set(
          searchbox_config_base64_url_encoded_fragment.is_null() ? nullptr : searchbox_config_base64_url_encoded_fragment.data());

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

      decltype(Traits::drive_status(input)) in_drive_status = Traits::drive_status(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->drive_status)::BaseType> drive_status_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::aim_eligibility::mojom::DriveStatusDataView, send_validation>(
        in_drive_status,
        drive_status_fragment);

      fragment->drive_status.Set(
          drive_status_fragment.is_null() ? nullptr : drive_status_fragment.data());

      decltype(Traits::last_updated(input)) in_last_updated = Traits::last_updated(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->last_updated)::BaseType> last_updated_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::JSTimeDataView, send_validation>(
        in_last_updated,
        last_updated_fragment);

      fragment->last_updated.Set(
          last_updated_fragment.is_null() ? nullptr : last_updated_fragment.data());

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

}  // namespace mojo::internal

#endif  // CHROME_BROWSER_UI_WEBUI_OMNIBOX_AIM_ELIGIBILITY_AIM_ELIGIBILITY_MOJOM_SEND_VALIDATION_H_