// chrome/browser/ui/webui/feed_internals/feed_internals.mojom-shared.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2016 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_FEED_INTERNALS_FEED_INTERNALS_MOJOM_SHARED_H_
#define CHROME_BROWSER_UI_WEBUI_FEED_INTERNALS_FEED_INTERNALS_MOJOM_SHARED_H_

#include <stdint.h>

#include <functional>
#include <iosfwd>
#include <type_traits>
#include <utility>
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"
#include "mojo/public/cpp/system/message_pipe.h"

#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"

#include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom-shared-internal.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"
#include "mojo/public/cpp/bindings/lib/interface_serialization.h"
#include "mojo/public/cpp/system/data_pipe.h"



#include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom-data-view.h"  // IWYU pragma: export




namespace std {

}  // namespace std

namespace mojo {


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::feed_internals::mojom::PropertiesDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::feed_internals::mojom::PropertiesDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::feed_internals::mojom::internal::Properties_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

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

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

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

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

    decltype(Traits::load_stream_status(input)) in_load_stream_status = Traits::load_stream_status(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->load_stream_status)::BaseType> load_stream_status_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_load_stream_status,
      load_stream_status_fragment);

    fragment->load_stream_status.Set(
        load_stream_status_fragment.is_null() ? nullptr : load_stream_status_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->load_stream_status.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null load_stream_status in Properties struct");

    decltype(Traits::feed_fetch_url(input)) in_feed_fetch_url = Traits::feed_fetch_url(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->feed_fetch_url)::BaseType> feed_fetch_url_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::url::mojom::UrlDataView>(
      in_feed_fetch_url,
      feed_fetch_url_fragment);

    fragment->feed_fetch_url.Set(
        feed_fetch_url_fragment.is_null() ? nullptr : feed_fetch_url_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->feed_fetch_url.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null feed_fetch_url in Properties struct");

    decltype(Traits::feed_actions_url(input)) in_feed_actions_url = Traits::feed_actions_url(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->feed_actions_url)::BaseType> feed_actions_url_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::url::mojom::UrlDataView>(
      in_feed_actions_url,
      feed_actions_url_fragment);

    fragment->feed_actions_url.Set(
        feed_actions_url_fragment.is_null() ? nullptr : feed_actions_url_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->feed_actions_url.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null feed_actions_url in Properties struct");
  }

  static bool Deserialize(::feed_internals::mojom::internal::Properties_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::feed_internals::mojom::PropertiesDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal


namespace internal {

template <typename MaybeConstUserType>
struct Serializer<::feed_internals::mojom::LastFetchPropertiesDataView, MaybeConstUserType> {
  using UserType = typename std::remove_const<MaybeConstUserType>::type;
  using Traits = StructTraits<::feed_internals::mojom::LastFetchPropertiesDataView, UserType>;

  static void Serialize(
      MaybeConstUserType& input,
      mojo::internal::MessageFragment<::feed_internals::mojom::internal::LastFetchProperties_Data>& fragment) {
    if (CallIsNullIfExists<Traits>(input))
      return;
    fragment.Allocate();

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

    decltype(Traits::last_fetch_trigger(input)) in_last_fetch_trigger = Traits::last_fetch_trigger(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->last_fetch_trigger)::BaseType> last_fetch_trigger_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_last_fetch_trigger,
      last_fetch_trigger_fragment);

    fragment->last_fetch_trigger.Set(
        last_fetch_trigger_fragment.is_null() ? nullptr : last_fetch_trigger_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->last_fetch_trigger.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null last_fetch_trigger in LastFetchProperties struct");

    decltype(Traits::last_fetch_time(input)) in_last_fetch_time = Traits::last_fetch_time(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->last_fetch_time)::BaseType> last_fetch_time_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeDeltaDataView>(
      in_last_fetch_time,
      last_fetch_time_fragment);

    fragment->last_fetch_time.Set(
        last_fetch_time_fragment.is_null() ? nullptr : last_fetch_time_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->last_fetch_time.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null last_fetch_time in LastFetchProperties struct");

    decltype(Traits::refresh_suppress_time(input)) in_refresh_suppress_time = Traits::refresh_suppress_time(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->refresh_suppress_time)::BaseType> refresh_suppress_time_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeDeltaDataView>(
      in_refresh_suppress_time,
      refresh_suppress_time_fragment);

    fragment->refresh_suppress_time.Set(
        refresh_suppress_time_fragment.is_null() ? nullptr : refresh_suppress_time_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->refresh_suppress_time.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null refresh_suppress_time in LastFetchProperties struct");

    decltype(Traits::last_bless_nonce(input)) in_last_bless_nonce = Traits::last_bless_nonce(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->last_bless_nonce)::BaseType> last_bless_nonce_fragment(
            fragment.message());
    
    mojo::internal::Serialize<mojo::StringDataView>(
      in_last_bless_nonce,
      last_bless_nonce_fragment);

    fragment->last_bless_nonce.Set(
        last_bless_nonce_fragment.is_null() ? nullptr : last_bless_nonce_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->last_bless_nonce.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null last_bless_nonce in LastFetchProperties struct");

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

    decltype(Traits::last_action_upload_time(input)) in_last_action_upload_time = Traits::last_action_upload_time(input);
    mojo::internal::MessageFragment<
        typename decltype(fragment->last_action_upload_time)::BaseType> last_action_upload_time_fragment(
            fragment.message());
    
    mojo::internal::Serialize<::mojo_base::mojom::TimeDeltaDataView>(
      in_last_action_upload_time,
      last_action_upload_time_fragment);

    fragment->last_action_upload_time.Set(
        last_action_upload_time_fragment.is_null() ? nullptr : last_action_upload_time_fragment.data());

    
    MOJO_INTERNAL_CHECK_SERIALIZATION(
      mojo::internal::SendValidation::kDefault,
      !(fragment->last_action_upload_time.is_null()),
      mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
      "null last_action_upload_time in LastFetchProperties struct");
  }

  static bool Deserialize(::feed_internals::mojom::internal::LastFetchProperties_Data* input,
                          UserType* output,
                          Message* message) {
    if (!input)
      return CallSetToNullIfExists<Traits>(output);

    ::feed_internals::mojom::LastFetchPropertiesDataView data_view(input, message);
    return CallTraitsRead<Traits>(data_view, output);
  }
};

}  // namespace internal

}  // namespace mojo


namespace feed_internals::mojom {

inline void PropertiesDataView::GetLoadStreamStatusDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->load_stream_status.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void PropertiesDataView::GetFeedFetchUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->feed_fetch_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}
inline void PropertiesDataView::GetFeedActionsUrlDataView(
    ::url::mojom::UrlDataView* output) {
  auto pointer = data_->feed_actions_url.Get();
  *output = ::url::mojom::UrlDataView(pointer, message_);
}


inline void LastFetchPropertiesDataView::GetLastFetchTriggerDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->last_fetch_trigger.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void LastFetchPropertiesDataView::GetLastFetchTimeDataView(
    ::mojo_base::mojom::TimeDeltaDataView* output) {
  auto pointer = data_->last_fetch_time.Get();
  *output = ::mojo_base::mojom::TimeDeltaDataView(pointer, message_);
}
inline void LastFetchPropertiesDataView::GetRefreshSuppressTimeDataView(
    ::mojo_base::mojom::TimeDeltaDataView* output) {
  auto pointer = data_->refresh_suppress_time.Get();
  *output = ::mojo_base::mojom::TimeDeltaDataView(pointer, message_);
}
inline void LastFetchPropertiesDataView::GetLastBlessNonceDataView(
    mojo::StringDataView* output) {
  auto pointer = data_->last_bless_nonce.Get();
  *output = mojo::StringDataView(pointer, message_);
}
inline void LastFetchPropertiesDataView::GetLastActionUploadTimeDataView(
    ::mojo_base::mojom::TimeDeltaDataView* output) {
  auto pointer = data_->last_action_upload_time.Get();
  *output = ::mojo_base::mojom::TimeDeltaDataView(pointer, message_);
}



}  // feed_internals::mojom

// Declare TraceFormatTraits for enums, which should be defined in ::perfetto
// namespace.

#endif  // CHROME_BROWSER_UI_WEBUI_FEED_INTERNALS_FEED_INTERNALS_MOJOM_SHARED_H_