// chrome/browser/ui/webui/context_hub/context_hub.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_CONTEXT_HUB_CONTEXT_HUB_MOJOM_SEND_VALIDATION_H_
#define CHROME_BROWSER_UI_WEBUI_CONTEXT_HUB_CONTEXT_HUB_MOJOM_SEND_VALIDATION_H_

#include "chrome/browser/ui/webui/context_hub/context_hub.mojom-shared-internal.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "mojo/public/mojom/base/uuid.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"

#include "chrome/browser/ui/webui/context_hub/context_hub.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<::browser::context_hub::mojom::AutoTodoStatus, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::browser::context_hub::mojom::AutoTodoGroup, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::browser::context_hub::mojom::EntryType, MaybeConstUserType>
    : std::false_type {};
template <typename MaybeConstUserType>
struct HasSendValidationSerialize<::browser::context_hub::mojom::ChatRole, MaybeConstUserType>
    : std::false_type {};

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

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

      fragment->message_url.Set(
          message_url_fragment.is_null() ? nullptr : message_url_fragment.data());

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

      decltype(Traits::subject(input)) in_subject = Traits::subject(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->subject)::BaseType> subject_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_subject,
        subject_fragment);

      fragment->subject.Set(
          subject_fragment.is_null() ? nullptr : subject_fragment.data());

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

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

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

      fragment->photos_url.Set(
          photos_url_fragment.is_null() ? nullptr : photos_url_fragment.data());

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

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

      decltype(Traits::source_references(input)) in_source_references = Traits::source_references(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->source_references)::BaseType>
          source_references_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& source_references_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::browser::context_hub::mojom::SourceReferenceDataView>, send_validation>(
        in_source_references,
        source_references_fragment,
        &source_references_validate_params);

      fragment->source_references.Set(
          source_references_fragment.is_null() ? nullptr : source_references_fragment.data());

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

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

      fragment->actionable_url.Set(
          actionable_url_fragment.is_null() ? nullptr : actionable_url_fragment.data());

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

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

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

      decltype(Traits::last_active_timestamp(input)) in_last_active_timestamp = Traits::last_active_timestamp(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->last_active_timestamp)::BaseType> last_active_timestamp_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeDataView, send_validation>(
        in_last_active_timestamp,
        last_active_timestamp_fragment);

      fragment->last_active_timestamp.Set(
          last_active_timestamp_fragment.is_null() ? nullptr : last_active_timestamp_fragment.data());

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

      
      mojo::internal::Serialize<::browser::context_hub::mojom::AutoTodoGroup>(
        Traits::group_type(input),
        &fragment->group_type);
  }
};

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

      decltype(Traits::id(input)) in_id = Traits::id(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->id)::BaseType> id_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_id,
        id_fragment);

      fragment->id.Set(
          id_fragment.is_null() ? nullptr : id_fragment.data());

      
      MOJO_INTERNAL_CHECK_SERIALIZATION(
        send_validation,
        !(fragment->id.is_null()),
        mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
        "null id in AutoTodoItem 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::StringDataView, 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 AutoTodoItem struct");

      decltype(Traits::description(input)) in_description = Traits::description(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->description)::BaseType> description_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_description,
        description_fragment);

      fragment->description.Set(
          description_fragment.is_null() ? nullptr : description_fragment.data());

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

      
      mojo::internal::Serialize<::browser::context_hub::mojom::AutoTodoStatus>(
        Traits::status(input),
        &fragment->status);

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

      decltype(Traits::data(input)) in_data = Traits::data(input);
      mojo::internal::MessageFragment<decltype(fragment->data)>
          data_fragment(fragment.message());
      data_fragment.Claim(&fragment->data);
      
      mojo::internal::Serialize<::browser::context_hub::mojom::AutoTodoDataDataView, send_validation>(
        in_data,
        data_fragment,
        true);

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

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

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

      
      mojo::internal::Serialize<::browser::context_hub::mojom::EntryType>(
        Traits::type(input),
        &fragment->type);

      decltype(Traits::timestamp(input)) in_timestamp = Traits::timestamp(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->timestamp)::BaseType> timestamp_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::TimeDataView, send_validation>(
        in_timestamp,
        timestamp_fragment);

      fragment->timestamp.Set(
          timestamp_fragment.is_null() ? nullptr : timestamp_fragment.data());

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

      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 MemoryBankEntry struct");

      decltype(Traits::tab_title(input)) in_tab_title = Traits::tab_title(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->tab_title)::BaseType> tab_title_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_tab_title,
        tab_title_fragment);

      fragment->tab_title.Set(
          tab_title_fragment.is_null() ? nullptr : tab_title_fragment.data());

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

      decltype(Traits::selected_text(input)) in_selected_text = Traits::selected_text(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->selected_text)::BaseType> selected_text_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_selected_text,
        selected_text_fragment);

      fragment->selected_text.Set(
          selected_text_fragment.is_null() ? nullptr : selected_text_fragment.data());

      decltype(Traits::tags(input)) in_tags = Traits::tags(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->tags)::BaseType>
          tags_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& tags_validate_params =
          mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>, send_validation>(
        in_tags,
        tags_fragment,
        &tags_validate_params);

      fragment->tags.Set(
          tags_fragment.is_null() ? nullptr : tags_fragment.data());

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

      decltype(Traits::note(input)) in_note = Traits::note(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->note)::BaseType> note_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_note,
        note_fragment);

      fragment->note.Set(
          note_fragment.is_null() ? nullptr : note_fragment.data());

      decltype(Traits::collection(input)) in_collection = Traits::collection(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->collection)::BaseType> collection_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_collection,
        collection_fragment);

      fragment->collection.Set(
          collection_fragment.is_null() ? nullptr : collection_fragment.data());
  }
};

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

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

      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::StringDataView, 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 TabInfo struct");

      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 TabInfo struct");
  }
};

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

      decltype(Traits::label(input)) in_label = Traits::label(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->label)::BaseType> label_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_label,
        label_fragment);

      fragment->label.Set(
          label_fragment.is_null() ? nullptr : label_fragment.data());

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

      decltype(Traits::tabs(input)) in_tabs = Traits::tabs(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->tabs)::BaseType>
          tabs_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& tabs_validate_params =
          mojo::internal::GetArrayValidator<0, false, nullptr>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<::browser::context_hub::mojom::TabInfoDataView>, send_validation>(
        in_tabs,
        tabs_fragment,
        &tabs_validate_params);

      fragment->tabs.Set(
          tabs_fragment.is_null() ? nullptr : tabs_fragment.data());

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

      decltype(Traits::saved_guid(input)) in_saved_guid = Traits::saved_guid(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->saved_guid)::BaseType> saved_guid_fragment(
              fragment.message());
      
      mojo::internal::Serialize<::mojo_base::mojom::UuidDataView, send_validation>(
        in_saved_guid,
        saved_guid_fragment);

      fragment->saved_guid.Set(
          saved_guid_fragment.is_null() ? nullptr : saved_guid_fragment.data());
  }
};

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

      
      mojo::internal::Serialize<::browser::context_hub::mojom::ChatRole>(
        Traits::role(input),
        &fragment->role);

      decltype(Traits::content(input)) in_content = Traits::content(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->content)::BaseType> content_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_content,
        content_fragment);

      fragment->content.Set(
          content_fragment.is_null() ? nullptr : content_fragment.data());

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

template <typename MaybeConstUserType, mojo::internal::SendValidation send_validation>
struct SendValidationSerializer<::browser::context_hub::mojom::SaveToMemoryBankContextDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::browser::context_hub::mojom::SaveToMemoryBankContextDataView, UserType>;
  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::browser::context_hub::mojom::internal::SaveToMemoryBankContext_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 SaveToMemoryBankContext struct");

      decltype(Traits::tab_title(input)) in_tab_title = Traits::tab_title(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->tab_title)::BaseType> tab_title_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_tab_title,
        tab_title_fragment);

      fragment->tab_title.Set(
          tab_title_fragment.is_null() ? nullptr : tab_title_fragment.data());

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

      decltype(Traits::selected_text(input)) in_selected_text = Traits::selected_text(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->selected_text)::BaseType> selected_text_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_selected_text,
        selected_text_fragment);

      fragment->selected_text.Set(
          selected_text_fragment.is_null() ? nullptr : selected_text_fragment.data());

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

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

      decltype(Traits::collection(input)) in_collection = Traits::collection(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->collection)::BaseType> collection_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_collection,
        collection_fragment);

      fragment->collection.Set(
          collection_fragment.is_null() ? nullptr : collection_fragment.data());

      decltype(Traits::note(input)) in_note = Traits::note(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->note)::BaseType> note_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_note,
        note_fragment);

      fragment->note.Set(
          note_fragment.is_null() ? nullptr : note_fragment.data());

      decltype(Traits::tags(input)) in_tags = Traits::tags(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->tags)::BaseType>
          tags_fragment(fragment.message());
      constexpr const mojo::internal::ContainerValidateParams& tags_validate_params =
          mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>();
      
      mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>, send_validation>(
        in_tags,
        tags_fragment,
        &tags_validate_params);

      fragment->tags.Set(
          tags_fragment.is_null() ? nullptr : tags_fragment.data());
  }
};

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

      decltype(Traits::todo_id(input)) in_todo_id = Traits::todo_id(input);
      mojo::internal::MessageFragment<
          typename decltype(fragment->todo_id)::BaseType> todo_id_fragment(
              fragment.message());
      
      mojo::internal::Serialize<mojo::StringDataView, send_validation>(
        in_todo_id,
        todo_id_fragment);

      fragment->todo_id.Set(
          todo_id_fragment.is_null() ? nullptr : todo_id_fragment.data());

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

      fragment->liked = Traits::liked(input);
  }
};
template <typename MaybeConstUserType, SendValidation send_validation>
struct SendValidationSerializer<::browser::context_hub::mojom::SourceReferenceDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = UnionTraits<::browser::context_hub::mojom::SourceReferenceDataView, UserType>;
  static void Serialize(MaybeConstUserType& input,
                        MessageFragment<::browser::context_hub::mojom::internal::SourceReference_Data>& fragment,
                        bool inlined) {
    
    if (CallIsNullIfExists<Traits>(input)) {
       if (inlined)
        fragment->set_null();
      return;
    }

if (!inlined)
  fragment.Allocate();

    // TODO(azani): Handle unknown and objects.
    // Set the not-null flag.
fragment->size = kUnionDataSize;
fragment->tag = Traits::GetTag(input);
switch (fragment->tag) {
  case ::browser::context_hub::mojom::SourceReferenceDataView::Tag::kGmail: {
    decltype(Traits::gmail(input))
    in_gmail = Traits::gmail(input);
    mojo::internal::MessageFragment<
      typename decltype(fragment->data.f_gmail)::BaseType>
    value_fragment(fragment.message());
        
mojo::internal::Serialize<::browser::context_hub::mojom::GmailReferenceDataView, send_validation>(
  in_gmail,
  value_fragment);
  
MOJO_INTERNAL_CHECK_SERIALIZATION(
  send_validation,
  !(value_fragment.is_null()),
  mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
  "null gmail in SourceReference union");
    fragment->data.f_gmail.Set(
      value_fragment.is_null() ? nullptr : value_fragment.data());
    break;
  }
  case ::browser::context_hub::mojom::SourceReferenceDataView::Tag::kPhotos: {
    decltype(Traits::photos(input))
    in_photos = Traits::photos(input);
    mojo::internal::MessageFragment<
      typename decltype(fragment->data.f_photos)::BaseType>
    value_fragment(fragment.message());
        
mojo::internal::Serialize<::browser::context_hub::mojom::PhotosReferenceDataView, send_validation>(
  in_photos,
  value_fragment);
  
MOJO_INTERNAL_CHECK_SERIALIZATION(
  send_validation,
  !(value_fragment.is_null()),
  mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
  "null photos in SourceReference union");
    fragment->data.f_photos.Set(
      value_fragment.is_null() ? nullptr : value_fragment.data());
    break;
  }
}
  }
};
template <typename MaybeConstUserType, SendValidation send_validation>
struct SendValidationSerializer<::browser::context_hub::mojom::AutoTodoDataDataView, MaybeConstUserType, send_validation> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = UnionTraits<::browser::context_hub::mojom::AutoTodoDataDataView, UserType>;
  static void Serialize(MaybeConstUserType& input,
                        MessageFragment<::browser::context_hub::mojom::internal::AutoTodoData_Data>& fragment,
                        bool inlined) {
    
    if (CallIsNullIfExists<Traits>(input)) {
       if (inlined)
        fragment->set_null();
      return;
    }

if (!inlined)
  fragment.Allocate();

    // TODO(azani): Handle unknown and objects.
    // Set the not-null flag.
fragment->size = kUnionDataSize;
fragment->tag = Traits::GetTag(input);
switch (fragment->tag) {
  case ::browser::context_hub::mojom::AutoTodoDataDataView::Tag::kFirstParty: {
    decltype(Traits::first_party(input))
    in_first_party = Traits::first_party(input);
    mojo::internal::MessageFragment<
      typename decltype(fragment->data.f_first_party)::BaseType>
    value_fragment(fragment.message());
        
mojo::internal::Serialize<::browser::context_hub::mojom::FirstPartyDataDataView, send_validation>(
  in_first_party,
  value_fragment);
  
MOJO_INTERNAL_CHECK_SERIALIZATION(
  send_validation,
  !(value_fragment.is_null()),
  mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
  "null first_party in AutoTodoData union");
    fragment->data.f_first_party.Set(
      value_fragment.is_null() ? nullptr : value_fragment.data());
    break;
  }
  case ::browser::context_hub::mojom::AutoTodoDataDataView::Tag::kThirdParty: {
    decltype(Traits::third_party(input))
    in_third_party = Traits::third_party(input);
    mojo::internal::MessageFragment<
      typename decltype(fragment->data.f_third_party)::BaseType>
    value_fragment(fragment.message());
        
mojo::internal::Serialize<::browser::context_hub::mojom::ThirdPartyDataDataView, send_validation>(
  in_third_party,
  value_fragment);
  
MOJO_INTERNAL_CHECK_SERIALIZATION(
  send_validation,
  !(value_fragment.is_null()),
  mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
  "null third_party in AutoTodoData union");
    fragment->data.f_third_party.Set(
      value_fragment.is_null() ? nullptr : value_fragment.data());
    break;
  }
}
  }
};

}  // namespace mojo::internal

#endif  // CHROME_BROWSER_UI_WEBUI_CONTEXT_HUB_CONTEXT_HUB_MOJOM_SEND_VALIDATION_H_