// components/omnibox/browser/fusebox_action.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 COMPONENTS_OMNIBOX_BROWSER_FUSEBOX_ACTION_MOJOM_SEND_VALIDATION_H_
#define COMPONENTS_OMNIBOX_BROWSER_FUSEBOX_ACTION_MOJOM_SEND_VALIDATION_H_

#include "components/omnibox/browser/fusebox_action.mojom-shared-internal.h"
#include "components/omnibox/composebox/composebox_query.mojom-shared.h"

#include "components/omnibox/browser/fusebox_action.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/has_send_validation_helper.h"

namespace mojo::internal {
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::fusebox_action::mojom::SuggestInventory, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::fusebox_action::mojom::QueryActionOverride, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::fusebox_action::mojom::InputSource, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::fusebox_action::mojom::SearchboxOverride, MaybeConstUserType>
    : std::false_type {};

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::fusebox_action::mojom::FuseboxActionDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::fusebox_action::mojom::FuseboxActionDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::fusebox_action::mojom::internal::FuseboxAction_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();
      fragment->preselected_tool_$flag = Traits::preselected_tool(input).has_value();
      if (Traits::preselected_tool(input).has_value()) {
        
        mojo::internal::Serialize<::composebox_query::mojom::ToolMode>(
          Traits::preselected_tool(input).value(),
          &fragment->preselected_tool_$value);
      } else {
        fragment->preselected_tool_$value =
            static_cast<int32_t>(::composebox_query::mojom::ToolMode::kMinValue);
      }
      fragment->preferred_inventory_$flag = Traits::preferred_inventory(input).has_value();
      if (Traits::preferred_inventory(input).has_value()) {
        
        mojo::internal::Serialize<::fusebox_action::mojom::SuggestInventory>(
          Traits::preferred_inventory(input).value(),
          &fragment->preferred_inventory_$value);
      } else {
        fragment->preferred_inventory_$value =
            static_cast<int32_t>(::fusebox_action::mojom::SuggestInventory::kMinValue);
      }
      fragment->preselected_model_$flag = Traits::preselected_model(input).has_value();
      if (Traits::preselected_model(input).has_value()) {
        
        mojo::internal::Serialize<::composebox_query::mojom::ModelMode>(
          Traits::preselected_model(input).value(),
          &fragment->preselected_model_$value);
      } else {
        fragment->preselected_model_$value =
            static_cast<int32_t>(::composebox_query::mojom::ModelMode::kMinValue);
      }
      fragment->query_action_override_$flag = Traits::query_action_override(input).has_value();
      if (Traits::query_action_override(input).has_value()) {
        
        mojo::internal::Serialize<::fusebox_action::mojom::QueryActionOverride>(
          Traits::query_action_override(input).value(),
          &fragment->query_action_override_$value);
      } else {
        fragment->query_action_override_$value =
            static_cast<int32_t>(::fusebox_action::mojom::QueryActionOverride::kMinValue);
      }
      fragment->preselected_input_source_$flag = Traits::preselected_input_source(input).has_value();
      if (Traits::preselected_input_source(input).has_value()) {
        
        mojo::internal::Serialize<::fusebox_action::mojom::InputSource>(
          Traits::preselected_input_source(input).value(),
          &fragment->preselected_input_source_$value);
      } else {
        fragment->preselected_input_source_$value =
            static_cast<int32_t>(::fusebox_action::mojom::InputSource::kMinValue);
      }
      fragment->searchbox_override_$flag = Traits::searchbox_override(input).has_value();
      if (Traits::searchbox_override(input).has_value()) {
        
        mojo::internal::Serialize<::fusebox_action::mojom::SearchboxOverride>(
          Traits::searchbox_override(input).value(),
          &fragment->searchbox_override_$value);
      } else {
        fragment->searchbox_override_$value =
            static_cast<int32_t>(::fusebox_action::mojom::SearchboxOverride::kMinValue);
      }
  }
};

}  // namespace mojo::internal

#endif  // COMPONENTS_OMNIBOX_BROWSER_FUSEBOX_ACTION_MOJOM_SEND_VALIDATION_H_