// services/network/public/mojom/first_party_sets.mojom-blink.cc is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-private-field"
#endif

#include "services/network/public/mojom/first_party_sets.mojom-blink.h"
#include <stdint.h>
#include <utility>
#include "mojo/public/cpp/bindings/lib/default_construct_tag_internal.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/lib/validate_params.h"
#include "mojo/public/cpp/bindings/lib/validation_errors.h"
#include "mojo/public/cpp/bindings/mojo_buildflags.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value.h"

#include "services/network/public/mojom/first_party_sets.mojom-params-data.h"
#include "services/network/public/mojom/first_party_sets.mojom-shared-message-ids.h"

#include "services/network/public/mojom/first_party_sets.mojom-blink-import-headers.h"
#include "services/network/public/mojom/first_party_sets.mojom-blink-test-utils.h"
#include "mojo/public/cpp/bindings/lib/wtf_serialization.h"


namespace network::mojom::blink {
FirstPartySetEntry::FirstPartySetEntry()
    : primary(),
      site_type() {}

FirstPartySetEntry::FirstPartySetEntry(
    const ::blink::BlinkSchemefulSite& primary_in,
    SiteType site_type_in)
    : primary(std::move(primary_in)),
      site_type(std::move(site_type_in)) {}

FirstPartySetEntry::~FirstPartySetEntry() = default;

void FirstPartySetEntry::WriteIntoTrace(
    perfetto::TracedValue traced_context) const {
  [[maybe_unused]] auto dict = std::move(traced_context).WriteDictionary();
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "primary"), this->primary,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type const ::blink::BlinkSchemefulSite&>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "site_type"), this->site_type,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type SiteType>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
}

bool FirstPartySetEntry::Validate(
    const void* data,
    mojo::internal::ValidationContext* validation_context) {
  return Data_::Validate(data, validation_context);
}
FirstPartySetMetadata::FirstPartySetMetadata()
    : frame_entry(),
      top_frame_entry() {}

FirstPartySetMetadata::FirstPartySetMetadata(
    FirstPartySetEntryPtr frame_entry_in,
    FirstPartySetEntryPtr top_frame_entry_in)
    : frame_entry(std::move(frame_entry_in)),
      top_frame_entry(std::move(top_frame_entry_in)) {}

FirstPartySetMetadata::~FirstPartySetMetadata() = default;

void FirstPartySetMetadata::WriteIntoTrace(
    perfetto::TracedValue traced_context) const {
  [[maybe_unused]] auto dict = std::move(traced_context).WriteDictionary();
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "frame_entry"), this->frame_entry,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type FirstPartySetEntryPtr>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "top_frame_entry"), this->top_frame_entry,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type FirstPartySetEntryPtr>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
}

bool FirstPartySetMetadata::Validate(
    const void* data,
    mojo::internal::ValidationContext* validation_context) {
  return Data_::Validate(data, validation_context);
}
FirstPartySetEntryOverride::FirstPartySetEntryOverride()
    : entry() {}

FirstPartySetEntryOverride::FirstPartySetEntryOverride(
    FirstPartySetEntryPtr entry_in)
    : entry(std::move(entry_in)) {}

FirstPartySetEntryOverride::~FirstPartySetEntryOverride() = default;

void FirstPartySetEntryOverride::WriteIntoTrace(
    perfetto::TracedValue traced_context) const {
  [[maybe_unused]] auto dict = std::move(traced_context).WriteDictionary();
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "entry"), this->entry,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type FirstPartySetEntryPtr>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
}

bool FirstPartySetEntryOverride::Validate(
    const void* data,
    mojo::internal::ValidationContext* validation_context) {
  return Data_::Validate(data, validation_context);
}
FirstPartySetsContextConfig::FirstPartySetsContextConfig()
    : customizations(),
      aliases() {}

FirstPartySetsContextConfig::FirstPartySetsContextConfig(
    ::blink::HashMap<::blink::BlinkSchemefulSite, FirstPartySetEntryOverridePtr> customizations_in,
    const ::blink::HashMap<::blink::BlinkSchemefulSite, ::blink::BlinkSchemefulSite>& aliases_in)
    : customizations(std::move(customizations_in)),
      aliases(std::move(aliases_in)) {}

FirstPartySetsContextConfig::~FirstPartySetsContextConfig() = default;

void FirstPartySetsContextConfig::WriteIntoTrace(
    perfetto::TracedValue traced_context) const {
  [[maybe_unused]] auto dict = std::move(traced_context).WriteDictionary();
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "customizations"), this->customizations,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type ::blink::HashMap<::blink::BlinkSchemefulSite, FirstPartySetEntryOverridePtr>>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "aliases"), this->aliases,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type const ::blink::HashMap<::blink::BlinkSchemefulSite, ::blink::BlinkSchemefulSite>&>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
}

bool FirstPartySetsContextConfig::Validate(
    const void* data,
    mojo::internal::ValidationContext* validation_context) {
  return Data_::Validate(data, validation_context);
}
FirstPartySetsCacheFilter::FirstPartySetsCacheFilter()
    : filter(),
      browser_run_id() {}

FirstPartySetsCacheFilter::FirstPartySetsCacheFilter(
    const ::blink::HashMap<::blink::BlinkSchemefulSite, int64_t>& filter_in,
    std::optional<int64_t> browser_run_id_in)
    : filter(std::move(filter_in)),
      browser_run_id(std::move(browser_run_id_in)) {}

FirstPartySetsCacheFilter::~FirstPartySetsCacheFilter() = default;

void FirstPartySetsCacheFilter::WriteIntoTrace(
    perfetto::TracedValue traced_context) const {
  [[maybe_unused]] auto dict = std::move(traced_context).WriteDictionary();
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "filter"), this->filter,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type const ::blink::HashMap<::blink::BlinkSchemefulSite, int64_t>&>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "browser_run_id"), this->browser_run_id,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type std::optional<int64_t>>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
}

bool FirstPartySetsCacheFilter::Validate(
    const void* data,
    mojo::internal::ValidationContext* validation_context) {
  return Data_::Validate(data, validation_context);
}
GlobalFirstPartySets::GlobalFirstPartySets()
    : public_sets_version(),
      public_config(),
      manual_config() {}

GlobalFirstPartySets::GlobalFirstPartySets(
    const ::base::Version& public_sets_version_in,
    FirstPartySetsContextConfigPtr public_config_in,
    FirstPartySetsContextConfigPtr manual_config_in)
    : public_sets_version(std::move(public_sets_version_in)),
      public_config(std::move(public_config_in)),
      manual_config(std::move(manual_config_in)) {}

GlobalFirstPartySets::~GlobalFirstPartySets() = default;

void GlobalFirstPartySets::WriteIntoTrace(
    perfetto::TracedValue traced_context) const {
  [[maybe_unused]] auto dict = std::move(traced_context).WriteDictionary();
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "public_sets_version"), this->public_sets_version,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type const ::base::Version&>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "public_config"), this->public_config,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type FirstPartySetsContextConfigPtr>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
  perfetto::WriteIntoTracedValueWithFallback(
    dict.AddItem(
      "manual_config"), this->manual_config,
#if BUILDFLAG(MOJO_TRACE_ENABLED)
      "<value of type FirstPartySetsContextConfigPtr>"
#else
      "<value>"
#endif  // BUILDFLAG(MOJO_TRACE_ENABLED)
    );
}

bool GlobalFirstPartySets::Validate(
    const void* data,
    mojo::internal::ValidationContext* validation_context) {
  return Data_::Validate(data, validation_context);
}


}  // network::mojom::blink


namespace mojo {


// static
bool StructTraits<::network::mojom::blink::FirstPartySetEntry::DataView, ::network::mojom::blink::FirstPartySetEntryPtr>::Read(
    ::network::mojom::blink::FirstPartySetEntry::DataView input,
    ::network::mojom::blink::FirstPartySetEntryPtr* output) {
  bool success = true;
  ::network::mojom::blink::FirstPartySetEntryPtr result(::network::mojom::blink::FirstPartySetEntry::New());
  
      if (success && !input.ReadPrimary(&result->primary))
        success = false;
      if (success && !input.ReadSiteType(&result->site_type))
        success = false;
  *output = std::move(result);
  return success;
}


// static
bool StructTraits<::network::mojom::blink::FirstPartySetMetadata::DataView, ::network::mojom::blink::FirstPartySetMetadataPtr>::Read(
    ::network::mojom::blink::FirstPartySetMetadata::DataView input,
    ::network::mojom::blink::FirstPartySetMetadataPtr* output) {
  bool success = true;
  ::network::mojom::blink::FirstPartySetMetadataPtr result(::network::mojom::blink::FirstPartySetMetadata::New());
  
      if (success && !input.ReadFrameEntry(&result->frame_entry))
        success = false;
      if (success && !input.ReadTopFrameEntry(&result->top_frame_entry))
        success = false;
  *output = std::move(result);
  return success;
}


// static
bool StructTraits<::network::mojom::blink::FirstPartySetEntryOverride::DataView, ::network::mojom::blink::FirstPartySetEntryOverridePtr>::Read(
    ::network::mojom::blink::FirstPartySetEntryOverride::DataView input,
    ::network::mojom::blink::FirstPartySetEntryOverridePtr* output) {
  bool success = true;
  ::network::mojom::blink::FirstPartySetEntryOverridePtr result(::network::mojom::blink::FirstPartySetEntryOverride::New());
  
      if (success && !input.ReadEntry(&result->entry))
        success = false;
  *output = std::move(result);
  return success;
}


// static
bool StructTraits<::network::mojom::blink::FirstPartySetsContextConfig::DataView, ::network::mojom::blink::FirstPartySetsContextConfigPtr>::Read(
    ::network::mojom::blink::FirstPartySetsContextConfig::DataView input,
    ::network::mojom::blink::FirstPartySetsContextConfigPtr* output) {
  bool success = true;
  ::network::mojom::blink::FirstPartySetsContextConfigPtr result(::network::mojom::blink::FirstPartySetsContextConfig::New());
  
      if (success && !input.ReadCustomizations(&result->customizations))
        success = false;
      if (success && !input.ReadAliases(&result->aliases))
        success = false;
  *output = std::move(result);
  return success;
}


// static
bool StructTraits<::network::mojom::blink::FirstPartySetsCacheFilter::DataView, ::network::mojom::blink::FirstPartySetsCacheFilterPtr>::Read(
    ::network::mojom::blink::FirstPartySetsCacheFilter::DataView input,
    ::network::mojom::blink::FirstPartySetsCacheFilterPtr* output) {
  bool success = true;
  ::network::mojom::blink::FirstPartySetsCacheFilterPtr result(::network::mojom::blink::FirstPartySetsCacheFilter::New());
  
      if (success && !input.ReadFilter(&result->filter))
        success = false;
      if (success) {
        result->browser_run_id = input.browser_run_id();
      }
  *output = std::move(result);
  return success;
}


// static
bool StructTraits<::network::mojom::blink::GlobalFirstPartySets::DataView, ::network::mojom::blink::GlobalFirstPartySetsPtr>::Read(
    ::network::mojom::blink::GlobalFirstPartySets::DataView input,
    ::network::mojom::blink::GlobalFirstPartySetsPtr* output) {
  bool success = true;
  ::network::mojom::blink::GlobalFirstPartySetsPtr result(::network::mojom::blink::GlobalFirstPartySets::New());
  
      if (success && !input.ReadPublicSetsVersion(&result->public_sets_version))
        success = false;
      if (success && !input.ReadPublicConfig(&result->public_config))
        success = false;
      if (success && !input.ReadManualConfig(&result->manual_config))
        success = false;
  *output = std::move(result);
  return success;
}

}  // namespace mojo


// Symbols declared in the -test-utils.h header are defined here instead of a
// separate .cc file to save compile time.


namespace network::mojom::blink {




}  // network::mojom::blink


#if defined(__clang__)
#pragma clang diagnostic pop
#endif