blob: 559ae244ff34510fe5391cedb0d7af4ffc9039eb [file] [log] [blame]
// third_party/blink/public/mojom/blob/blob_url_store.mojom.cc is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2013 The Chromium Authors. All rights reserved.
// 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 "third_party/blink/public/mojom/blob/blob_url_store.mojom.h"
#include <math.h>
#include <stdint.h>
#include <utility>
#include "base/debug/alias.h"
#include "base/hash/md5_constexpr.h"
#include "base/run_loop.h"
#include "base/strings/string_number_conversions.h"
#include "base/trace_event/trace_event.h"
#include "base/trace_event/typed_macros.h"
#include "mojo/public/cpp/bindings/lib/generated_code_util.h"
#include "mojo/public/cpp/bindings/lib/message_internal.h"
#include "mojo/public/cpp/bindings/lib/send_message_helper.h"
#include "mojo/public/cpp/bindings/lib/proxy_to_responder.h"
#include "mojo/public/cpp/bindings/lib/serialization_util.h"
#include "mojo/public/cpp/bindings/lib/unserialized_message_context.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 "mojo/public/interfaces/bindings/interface_control_messages.mojom.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value.h"
#include "third_party/blink/public/mojom/blob/blob_url_store.mojom-params-data.h"
#include "third_party/blink/public/mojom/blob/blob_url_store.mojom-shared-message-ids.h"
#include "third_party/blink/public/mojom/blob/blob_url_store.mojom-import-headers.h"
#include "third_party/blink/public/mojom/blob/blob_url_store.mojom-test-utils.h"
#ifndef THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLOB_BLOB_URL_STORE_MOJOM_JUMBO_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_BLOB_BLOB_URL_STORE_MOJOM_JUMBO_H_
#endif
namespace blink {
namespace mojom {
const char BlobURLStore::Name_[] = "blink.mojom.BlobURLStore";
std::pair<uint32_t, const void*> BlobURLStore::MessageToMethodInfo_(mojo::Message& message) {
switch (message.name()) {
case internal::kBlobURLStore_Register_Name: {
constexpr uint32_t value = base::MD5Hash32Constexpr(
"(Impl)blink::mojom::BlobURLStore::Register");
#if BUILDFLAG(IS_FUCHSIA)
return std::make_pair(value, nullptr);
#else
return std::make_pair(value, reinterpret_cast<const void*>(&BlobURLStore::Register_Sym::IPCSymbol));
#endif // BUILDFLAG(IS_FUCHSIA)
}
case internal::kBlobURLStore_Revoke_Name: {
constexpr uint32_t value = base::MD5Hash32Constexpr(
"(Impl)blink::mojom::BlobURLStore::Revoke");
#if BUILDFLAG(IS_FUCHSIA)
return std::make_pair(value, nullptr);
#else
return std::make_pair(value, reinterpret_cast<const void*>(&BlobURLStore::Revoke_Sym::IPCSymbol));
#endif // BUILDFLAG(IS_FUCHSIA)
}
case internal::kBlobURLStore_Resolve_Name: {
constexpr uint32_t value = base::MD5Hash32Constexpr(
"(Impl)blink::mojom::BlobURLStore::Resolve");
#if BUILDFLAG(IS_FUCHSIA)
return std::make_pair(value, nullptr);
#else
return std::make_pair(value, reinterpret_cast<const void*>(&BlobURLStore::Resolve_Sym::IPCSymbol));
#endif // BUILDFLAG(IS_FUCHSIA)
}
case internal::kBlobURLStore_ResolveAsURLLoaderFactory_Name: {
constexpr uint32_t value = base::MD5Hash32Constexpr(
"(Impl)blink::mojom::BlobURLStore::ResolveAsURLLoaderFactory");
#if BUILDFLAG(IS_FUCHSIA)
return std::make_pair(value, nullptr);
#else
return std::make_pair(value, reinterpret_cast<const void*>(&BlobURLStore::ResolveAsURLLoaderFactory_Sym::IPCSymbol));
#endif // BUILDFLAG(IS_FUCHSIA)
}
case internal::kBlobURLStore_ResolveForNavigation_Name: {
constexpr uint32_t value = base::MD5Hash32Constexpr(
"(Impl)blink::mojom::BlobURLStore::ResolveForNavigation");
#if BUILDFLAG(IS_FUCHSIA)
return std::make_pair(value, nullptr);
#else
return std::make_pair(value, reinterpret_cast<const void*>(&BlobURLStore::ResolveForNavigation_Sym::IPCSymbol));
#endif // BUILDFLAG(IS_FUCHSIA)
}
}
return std::make_pair(0, nullptr);
}
const char* BlobURLStore::MessageToMethodName_(mojo::Message& message) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
bool is_response = message.has_flag(mojo::Message::kFlagIsResponse);
if (!is_response) {
switch (message.name()) {
case internal::kBlobURLStore_Register_Name:
return "Receive blink::mojom::BlobURLStore::Register";
case internal::kBlobURLStore_Revoke_Name:
return "Receive blink::mojom::BlobURLStore::Revoke";
case internal::kBlobURLStore_Resolve_Name:
return "Receive blink::mojom::BlobURLStore::Resolve";
case internal::kBlobURLStore_ResolveAsURLLoaderFactory_Name:
return "Receive blink::mojom::BlobURLStore::ResolveAsURLLoaderFactory";
case internal::kBlobURLStore_ResolveForNavigation_Name:
return "Receive blink::mojom::BlobURLStore::ResolveForNavigation";
}
} else {
switch (message.name()) {
case internal::kBlobURLStore_Register_Name:
return "Receive reply blink::mojom::BlobURLStore::Register";
case internal::kBlobURLStore_Revoke_Name:
return "Receive reply blink::mojom::BlobURLStore::Revoke";
case internal::kBlobURLStore_Resolve_Name:
return "Receive reply blink::mojom::BlobURLStore::Resolve";
case internal::kBlobURLStore_ResolveAsURLLoaderFactory_Name:
return "Receive reply blink::mojom::BlobURLStore::ResolveAsURLLoaderFactory";
case internal::kBlobURLStore_ResolveForNavigation_Name:
return "Receive reply blink::mojom::BlobURLStore::ResolveForNavigation";
}
}
return "Receive unknown mojo message";
#else
bool is_response = message.has_flag(mojo::Message::kFlagIsResponse);
if (is_response) {
return "Receive mojo reply";
} else {
return "Receive mojo message";
}
#endif // BUILDFLAG(MOJO_TRACE_ENABLED)
}
#if !BUILDFLAG(IS_FUCHSIA)
void BlobURLStore::Register_Sym::IPCSymbol() {
// This method's address is used for indetifiying the mojo method name after
// symblozation. So each IPCSymbol should have a unique address.
NO_CODE_FOLDING();
}
void BlobURLStore::Revoke_Sym::IPCSymbol() {
// This method's address is used for indetifiying the mojo method name after
// symblozation. So each IPCSymbol should have a unique address.
NO_CODE_FOLDING();
}
void BlobURLStore::Resolve_Sym::IPCSymbol() {
// This method's address is used for indetifiying the mojo method name after
// symblozation. So each IPCSymbol should have a unique address.
NO_CODE_FOLDING();
}
void BlobURLStore::ResolveAsURLLoaderFactory_Sym::IPCSymbol() {
// This method's address is used for indetifiying the mojo method name after
// symblozation. So each IPCSymbol should have a unique address.
NO_CODE_FOLDING();
}
void BlobURLStore::ResolveForNavigation_Sym::IPCSymbol() {
// This method's address is used for indetifiying the mojo method name after
// symblozation. So each IPCSymbol should have a unique address.
NO_CODE_FOLDING();
}
# endif // !BUILDFLAG(IS_FUCHSIA)
bool BlobURLStore::Register(::mojo::PendingRemote<::blink::mojom::Blob> blob, const ::GURL& url, const ::base::UnguessableToken& unsafe_agent_cluster_id, const absl::optional<::net::SchemefulSite>& unsafe_top_level_site) {
NOTREACHED();
return false;
}
class BlobURLStore_Register_HandleSyncResponse
: public mojo::MessageReceiver {
public:
BlobURLStore_Register_HandleSyncResponse(
bool* result)
: result_(result) {
DCHECK(!*result_);
}
BlobURLStore_Register_HandleSyncResponse(const BlobURLStore_Register_HandleSyncResponse&) = delete;
BlobURLStore_Register_HandleSyncResponse& operator=(const BlobURLStore_Register_HandleSyncResponse&) = delete;
bool Accept(mojo::Message* message) override;
private:
bool* result_;};
class BlobURLStore_Register_ForwardToCallback
: public mojo::MessageReceiver {
public:
BlobURLStore_Register_ForwardToCallback(
BlobURLStore::RegisterCallback callback
) : callback_(std::move(callback)) {
}
BlobURLStore_Register_ForwardToCallback(const BlobURLStore_Register_ForwardToCallback&) = delete;
BlobURLStore_Register_ForwardToCallback& operator=(const BlobURLStore_Register_ForwardToCallback&) = delete;
bool Accept(mojo::Message* message) override;
private:
BlobURLStore::RegisterCallback callback_;
};
class BlobURLStore_Resolve_ForwardToCallback
: public mojo::MessageReceiver {
public:
BlobURLStore_Resolve_ForwardToCallback(
BlobURLStore::ResolveCallback callback
) : callback_(std::move(callback)) {
}
BlobURLStore_Resolve_ForwardToCallback(const BlobURLStore_Resolve_ForwardToCallback&) = delete;
BlobURLStore_Resolve_ForwardToCallback& operator=(const BlobURLStore_Resolve_ForwardToCallback&) = delete;
bool Accept(mojo::Message* message) override;
private:
BlobURLStore::ResolveCallback callback_;
};
class BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback
: public mojo::MessageReceiver {
public:
BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback(
BlobURLStore::ResolveAsURLLoaderFactoryCallback callback
) : callback_(std::move(callback)) {
}
BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback(const BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback&) = delete;
BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback& operator=(const BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback&) = delete;
bool Accept(mojo::Message* message) override;
private:
BlobURLStore::ResolveAsURLLoaderFactoryCallback callback_;
};
class BlobURLStore_ResolveForNavigation_ForwardToCallback
: public mojo::MessageReceiver {
public:
BlobURLStore_ResolveForNavigation_ForwardToCallback(
BlobURLStore::ResolveForNavigationCallback callback
) : callback_(std::move(callback)) {
}
BlobURLStore_ResolveForNavigation_ForwardToCallback(const BlobURLStore_ResolveForNavigation_ForwardToCallback&) = delete;
BlobURLStore_ResolveForNavigation_ForwardToCallback& operator=(const BlobURLStore_ResolveForNavigation_ForwardToCallback&) = delete;
bool Accept(mojo::Message* message) override;
private:
BlobURLStore::ResolveForNavigationCallback callback_;
};
BlobURLStoreProxy::BlobURLStoreProxy(mojo::MessageReceiverWithResponder* receiver)
: receiver_(receiver) {
}
bool BlobURLStoreProxy::Register(
::mojo::PendingRemote<::blink::mojom::Blob> param_blob, const ::GURL& param_url, const ::base::UnguessableToken& param_unsafe_agent_cluster_id, const absl::optional<::net::SchemefulSite>& param_unsafe_top_level_site) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT_BEGIN1(
"mojom", "Call blink::mojom::BlobURLStore::Register (sync)", "input_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("blob"), param_blob,
"<value of type ::mojo::PendingRemote<::blink::mojom::Blob>>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("url"), param_url,
"<value of type const ::GURL&>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_agent_cluster_id"), param_unsafe_agent_cluster_id,
"<value of type const ::base::UnguessableToken&>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_top_level_site"), param_unsafe_top_level_site,
"<value of type const absl::optional<::net::SchemefulSite>&>");
});
#else
TRACE_EVENT0("mojom", "BlobURLStore::Register");
#endif
const bool kExpectsResponse = true;
const bool kIsSync = true;
const bool kAllowInterrupt =
true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_Register_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_Register_Params_Data> params(
message);
params.Allocate();
mojo::internal::Serialize<mojo::InterfacePtrDataView<::blink::mojom::BlobInterfaceBase>>(
param_blob, &params->blob, &params.message());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
!mojo::internal::IsHandleOrInterfaceValid(params->blob),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
"invalid blob in BlobURLStore.Register request");
mojo::internal::MessageFragment<
typename decltype(params->url)::BaseType> url_fragment(
params.message());
mojo::internal::Serialize<::url::mojom::UrlDataView>(
param_url, url_fragment);
params->url.Set(
url_fragment.is_null() ? nullptr : url_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->url.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null url in BlobURLStore.Register request");
mojo::internal::MessageFragment<
typename decltype(params->unsafe_agent_cluster_id)::BaseType> unsafe_agent_cluster_id_fragment(
params.message());
mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
param_unsafe_agent_cluster_id, unsafe_agent_cluster_id_fragment);
params->unsafe_agent_cluster_id.Set(
unsafe_agent_cluster_id_fragment.is_null() ? nullptr : unsafe_agent_cluster_id_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->unsafe_agent_cluster_id.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null unsafe_agent_cluster_id in BlobURLStore.Register request");
mojo::internal::MessageFragment<
typename decltype(params->unsafe_top_level_site)::BaseType> unsafe_top_level_site_fragment(
params.message());
mojo::internal::Serialize<::network::mojom::SchemefulSiteDataView>(
param_unsafe_top_level_site, unsafe_top_level_site_fragment);
params->unsafe_top_level_site.Set(
unsafe_top_level_site_fragment.is_null() ? nullptr : unsafe_top_level_site_fragment.data());
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("Register");
#endif
bool result = false;
std::unique_ptr<mojo::MessageReceiver> responder(
new BlobURLStore_Register_HandleSyncResponse(
&result));
::mojo::internal::SendMessage(*receiver_, message, std::move(responder));
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT_END0("mojom", "BlobURLStore::Register");
#endif
return result;
}
void BlobURLStoreProxy::Register(
::mojo::PendingRemote<::blink::mojom::Blob> in_blob, const ::GURL& in_url, const ::base::UnguessableToken& in_unsafe_agent_cluster_id, const absl::optional<::net::SchemefulSite>& in_unsafe_top_level_site, RegisterCallback callback) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send blink::mojom::BlobURLStore::Register", "input_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("blob"), in_blob,
"<value of type ::mojo::PendingRemote<::blink::mojom::Blob>>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("url"), in_url,
"<value of type const ::GURL&>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_agent_cluster_id"), in_unsafe_agent_cluster_id,
"<value of type const ::base::UnguessableToken&>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_top_level_site"), in_unsafe_top_level_site,
"<value of type const absl::optional<::net::SchemefulSite>&>");
});
#endif
const bool kExpectsResponse = true;
const bool kIsSync = false;
const bool kAllowInterrupt = true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_Register_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_Register_Params_Data> params(
message);
params.Allocate();
mojo::internal::Serialize<mojo::InterfacePtrDataView<::blink::mojom::BlobInterfaceBase>>(
in_blob, &params->blob, &params.message());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
!mojo::internal::IsHandleOrInterfaceValid(params->blob),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
"invalid blob in BlobURLStore.Register request");
mojo::internal::MessageFragment<
typename decltype(params->url)::BaseType> url_fragment(
params.message());
mojo::internal::Serialize<::url::mojom::UrlDataView>(
in_url, url_fragment);
params->url.Set(
url_fragment.is_null() ? nullptr : url_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->url.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null url in BlobURLStore.Register request");
mojo::internal::MessageFragment<
typename decltype(params->unsafe_agent_cluster_id)::BaseType> unsafe_agent_cluster_id_fragment(
params.message());
mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
in_unsafe_agent_cluster_id, unsafe_agent_cluster_id_fragment);
params->unsafe_agent_cluster_id.Set(
unsafe_agent_cluster_id_fragment.is_null() ? nullptr : unsafe_agent_cluster_id_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->unsafe_agent_cluster_id.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null unsafe_agent_cluster_id in BlobURLStore.Register request");
mojo::internal::MessageFragment<
typename decltype(params->unsafe_top_level_site)::BaseType> unsafe_top_level_site_fragment(
params.message());
mojo::internal::Serialize<::network::mojom::SchemefulSiteDataView>(
in_unsafe_top_level_site, unsafe_top_level_site_fragment);
params->unsafe_top_level_site.Set(
unsafe_top_level_site_fragment.is_null() ? nullptr : unsafe_top_level_site_fragment.data());
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("Register");
#endif
std::unique_ptr<mojo::MessageReceiver> responder(
new BlobURLStore_Register_ForwardToCallback(
std::move(callback)));
::mojo::internal::SendMessage(*receiver_, message, std::move(responder));
}
void BlobURLStoreProxy::Revoke(
const ::GURL& in_url) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send blink::mojom::BlobURLStore::Revoke", "input_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("url"), in_url,
"<value of type const ::GURL&>");
});
#endif
const bool kExpectsResponse = false;
const bool kIsSync = false;
const bool kAllowInterrupt = true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_Revoke_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_Revoke_Params_Data> params(
message);
params.Allocate();
mojo::internal::MessageFragment<
typename decltype(params->url)::BaseType> url_fragment(
params.message());
mojo::internal::Serialize<::url::mojom::UrlDataView>(
in_url, url_fragment);
params->url.Set(
url_fragment.is_null() ? nullptr : url_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->url.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null url in BlobURLStore.Revoke request");
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("Revoke");
#endif
// This return value may be ignored as false implies the Connector has
// encountered an error, which will be visible through other means.
::mojo::internal::SendMessage(*receiver_, message);
}
void BlobURLStoreProxy::Resolve(
const ::GURL& in_url, ResolveCallback callback) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send blink::mojom::BlobURLStore::Resolve", "input_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("url"), in_url,
"<value of type const ::GURL&>");
});
#endif
const bool kExpectsResponse = true;
const bool kIsSync = false;
const bool kAllowInterrupt = true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_Resolve_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_Resolve_Params_Data> params(
message);
params.Allocate();
mojo::internal::MessageFragment<
typename decltype(params->url)::BaseType> url_fragment(
params.message());
mojo::internal::Serialize<::url::mojom::UrlDataView>(
in_url, url_fragment);
params->url.Set(
url_fragment.is_null() ? nullptr : url_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->url.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null url in BlobURLStore.Resolve request");
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("Resolve");
#endif
std::unique_ptr<mojo::MessageReceiver> responder(
new BlobURLStore_Resolve_ForwardToCallback(
std::move(callback)));
::mojo::internal::SendMessage(*receiver_, message, std::move(responder));
}
void BlobURLStoreProxy::ResolveAsURLLoaderFactory(
const ::GURL& in_url, ::mojo::PendingReceiver<::network::mojom::URLLoaderFactory> in_factory, ResolveAsURLLoaderFactoryCallback callback) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send blink::mojom::BlobURLStore::ResolveAsURLLoaderFactory", "input_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("url"), in_url,
"<value of type const ::GURL&>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("factory"), in_factory,
"<value of type ::mojo::PendingReceiver<::network::mojom::URLLoaderFactory>>");
});
#endif
const bool kExpectsResponse = true;
const bool kIsSync = false;
const bool kAllowInterrupt = true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_ResolveAsURLLoaderFactory_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_ResolveAsURLLoaderFactory_Params_Data> params(
message);
params.Allocate();
mojo::internal::MessageFragment<
typename decltype(params->url)::BaseType> url_fragment(
params.message());
mojo::internal::Serialize<::url::mojom::UrlDataView>(
in_url, url_fragment);
params->url.Set(
url_fragment.is_null() ? nullptr : url_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->url.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null url in BlobURLStore.ResolveAsURLLoaderFactory request");
mojo::internal::Serialize<mojo::InterfaceRequestDataView<::network::mojom::URLLoaderFactoryInterfaceBase>>(
in_factory, &params->factory, &params.message());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
!mojo::internal::IsHandleOrInterfaceValid(params->factory),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
"invalid factory in BlobURLStore.ResolveAsURLLoaderFactory request");
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("ResolveAsURLLoaderFactory");
#endif
std::unique_ptr<mojo::MessageReceiver> responder(
new BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback(
std::move(callback)));
::mojo::internal::SendMessage(*receiver_, message, std::move(responder));
}
void BlobURLStoreProxy::ResolveForNavigation(
const ::GURL& in_url, ::mojo::PendingReceiver<BlobURLToken> in_token, ResolveForNavigationCallback callback) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send blink::mojom::BlobURLStore::ResolveForNavigation", "input_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("url"), in_url,
"<value of type const ::GURL&>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("token"), in_token,
"<value of type ::mojo::PendingReceiver<BlobURLToken>>");
});
#endif
const bool kExpectsResponse = true;
const bool kIsSync = false;
const bool kAllowInterrupt = true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_ResolveForNavigation_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_ResolveForNavigation_Params_Data> params(
message);
params.Allocate();
mojo::internal::MessageFragment<
typename decltype(params->url)::BaseType> url_fragment(
params.message());
mojo::internal::Serialize<::url::mojom::UrlDataView>(
in_url, url_fragment);
params->url.Set(
url_fragment.is_null() ? nullptr : url_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->url.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null url in BlobURLStore.ResolveForNavigation request");
mojo::internal::Serialize<mojo::InterfaceRequestDataView<::blink::mojom::BlobURLTokenInterfaceBase>>(
in_token, &params->token, &params.message());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
!mojo::internal::IsHandleOrInterfaceValid(params->token),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
"invalid token in BlobURLStore.ResolveForNavigation request");
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("ResolveForNavigation");
#endif
std::unique_ptr<mojo::MessageReceiver> responder(
new BlobURLStore_ResolveForNavigation_ForwardToCallback(
std::move(callback)));
::mojo::internal::SendMessage(*receiver_, message, std::move(responder));
}
class BlobURLStore_Register_ProxyToResponder : public ::mojo::internal::ProxyToResponder {
public:
static BlobURLStore::RegisterCallback CreateCallback(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
std::unique_ptr<BlobURLStore_Register_ProxyToResponder> proxy(
new BlobURLStore_Register_ProxyToResponder(
message, std::move(responder)));
return base::BindOnce(&BlobURLStore_Register_ProxyToResponder::Run,
std::move(proxy));
}
~BlobURLStore_Register_ProxyToResponder() {
#if DCHECK_IS_ON()
if (responder_) {
// If we're being destroyed without being run, we want to ensure the
// binding endpoint has been closed. This checks for that asynchronously.
// We pass a bound generated callback to handle the response so that any
// resulting DCHECK stack will have useful interface type information.
responder_->IsConnectedAsync(base::BindOnce(&OnIsConnectedComplete));
}
#endif
}
private:
BlobURLStore_Register_ProxyToResponder(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder)
: ::mojo::internal::ProxyToResponder(message, std::move(responder)) {
}
#if DCHECK_IS_ON()
static void OnIsConnectedComplete(bool connected) {
DCHECK(!connected)
<< "BlobURLStore::RegisterCallback was destroyed without "
<< "first either being run or its corresponding binding being closed. "
<< "It is an error to drop response callbacks which still correspond "
<< "to an open interface pipe.";
}
#endif
void Run(
);
};
bool BlobURLStore_Register_ForwardToCallback::Accept(
mojo::Message* message) {
DCHECK(message->is_serialized());
internal::BlobURLStore_Register_ResponseParams_Data* params =
reinterpret_cast<
internal::BlobURLStore_Register_ResponseParams_Data*>(
message->mutable_payload());
bool success = true;
BlobURLStore_Register_ResponseParamsDataView input_data_view(params, message);
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 0, true);
return false;
}
if (!callback_.is_null())
std::move(callback_).Run();
return true;
}
void BlobURLStore_Register_ProxyToResponder::Run(
) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT0("mojom", "Send reply blink::mojom::BlobURLStore::Register");
#endif
const uint32_t kFlags = mojo::Message::kFlagIsResponse |
((is_sync_) ? mojo::Message::kFlagIsSync : 0) |
((true) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_Register_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_Register_ResponseParams_Data> params(
message);
params.Allocate();
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("Register");
#endif
message.set_request_id(request_id_);
message.set_trace_nonce(trace_nonce_);
::mojo::internal::SendMessage(*responder_, message);
// SendMessage fails silently if the responder connection is closed,
// or if the message is malformed.
//
// TODO(darin): If Accept() returns false due to a malformed message, that
// may be good reason to close the connection. However, we don't have a
// way to do that from here. We should add a way.
responder_ = nullptr;
}
bool BlobURLStore_Register_HandleSyncResponse::Accept(
mojo::Message* message) {
DCHECK(message->is_serialized());
internal::BlobURLStore_Register_ResponseParams_Data* params =
reinterpret_cast<internal::BlobURLStore_Register_ResponseParams_Data*>(
message->mutable_payload());
bool success = true;
BlobURLStore_Register_ResponseParamsDataView input_data_view(params, message);
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 0, true);
return false;
}
*result_ = true;
return true;
}
class BlobURLStore_Resolve_ProxyToResponder : public ::mojo::internal::ProxyToResponder {
public:
static BlobURLStore::ResolveCallback CreateCallback(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
std::unique_ptr<BlobURLStore_Resolve_ProxyToResponder> proxy(
new BlobURLStore_Resolve_ProxyToResponder(
message, std::move(responder)));
return base::BindOnce(&BlobURLStore_Resolve_ProxyToResponder::Run,
std::move(proxy));
}
~BlobURLStore_Resolve_ProxyToResponder() {
#if DCHECK_IS_ON()
if (responder_) {
// If we're being destroyed without being run, we want to ensure the
// binding endpoint has been closed. This checks for that asynchronously.
// We pass a bound generated callback to handle the response so that any
// resulting DCHECK stack will have useful interface type information.
responder_->IsConnectedAsync(base::BindOnce(&OnIsConnectedComplete));
}
#endif
}
private:
BlobURLStore_Resolve_ProxyToResponder(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder)
: ::mojo::internal::ProxyToResponder(message, std::move(responder)) {
}
#if DCHECK_IS_ON()
static void OnIsConnectedComplete(bool connected) {
DCHECK(!connected)
<< "BlobURLStore::ResolveCallback was destroyed without "
<< "first either being run or its corresponding binding being closed. "
<< "It is an error to drop response callbacks which still correspond "
<< "to an open interface pipe.";
}
#endif
void Run(
::mojo::PendingRemote<::blink::mojom::Blob> in_blob, const absl::optional<::base::UnguessableToken>& in_unsafe_agent_cluster_id);
};
bool BlobURLStore_Resolve_ForwardToCallback::Accept(
mojo::Message* message) {
DCHECK(message->is_serialized());
internal::BlobURLStore_Resolve_ResponseParams_Data* params =
reinterpret_cast<
internal::BlobURLStore_Resolve_ResponseParams_Data*>(
message->mutable_payload());
bool success = true;
::mojo::PendingRemote<::blink::mojom::Blob> p_blob{};
absl::optional<::base::UnguessableToken> p_unsafe_agent_cluster_id{};
BlobURLStore_Resolve_ResponseParamsDataView input_data_view(params, message);
if (success) {
p_blob =
input_data_view.TakeBlob<decltype(p_blob)>();
}
if (success && !input_data_view.ReadUnsafeAgentClusterId(&p_unsafe_agent_cluster_id))
success = false;
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 2, true);
return false;
}
if (!callback_.is_null())
std::move(callback_).Run(
std::move(p_blob),
std::move(p_unsafe_agent_cluster_id));
return true;
}
void BlobURLStore_Resolve_ProxyToResponder::Run(
::mojo::PendingRemote<::blink::mojom::Blob> in_blob, const absl::optional<::base::UnguessableToken>& in_unsafe_agent_cluster_id) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send reply blink::mojom::BlobURLStore::Resolve", "async_response_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("blob"), in_blob,
"<value of type ::mojo::PendingRemote<::blink::mojom::Blob>>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_agent_cluster_id"), in_unsafe_agent_cluster_id,
"<value of type const absl::optional<::base::UnguessableToken>&>");
});
#endif
const uint32_t kFlags = mojo::Message::kFlagIsResponse |
((is_sync_) ? mojo::Message::kFlagIsSync : 0) |
((true) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_Resolve_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_Resolve_ResponseParams_Data> params(
message);
params.Allocate();
mojo::internal::Serialize<mojo::InterfacePtrDataView<::blink::mojom::BlobInterfaceBase>>(
in_blob, &params->blob, &params.message());
mojo::internal::MessageFragment<
typename decltype(params->unsafe_agent_cluster_id)::BaseType> unsafe_agent_cluster_id_fragment(
params.message());
mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
in_unsafe_agent_cluster_id, unsafe_agent_cluster_id_fragment);
params->unsafe_agent_cluster_id.Set(
unsafe_agent_cluster_id_fragment.is_null() ? nullptr : unsafe_agent_cluster_id_fragment.data());
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("Resolve");
#endif
message.set_request_id(request_id_);
message.set_trace_nonce(trace_nonce_);
::mojo::internal::SendMessage(*responder_, message);
// SendMessage fails silently if the responder connection is closed,
// or if the message is malformed.
//
// TODO(darin): If Accept() returns false due to a malformed message, that
// may be good reason to close the connection. However, we don't have a
// way to do that from here. We should add a way.
responder_ = nullptr;
}
class BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder : public ::mojo::internal::ProxyToResponder {
public:
static BlobURLStore::ResolveAsURLLoaderFactoryCallback CreateCallback(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
std::unique_ptr<BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder> proxy(
new BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder(
message, std::move(responder)));
return base::BindOnce(&BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder::Run,
std::move(proxy));
}
~BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder() {
#if DCHECK_IS_ON()
if (responder_) {
// If we're being destroyed without being run, we want to ensure the
// binding endpoint has been closed. This checks for that asynchronously.
// We pass a bound generated callback to handle the response so that any
// resulting DCHECK stack will have useful interface type information.
responder_->IsConnectedAsync(base::BindOnce(&OnIsConnectedComplete));
}
#endif
}
private:
BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder)
: ::mojo::internal::ProxyToResponder(message, std::move(responder)) {
}
#if DCHECK_IS_ON()
static void OnIsConnectedComplete(bool connected) {
DCHECK(!connected)
<< "BlobURLStore::ResolveAsURLLoaderFactoryCallback was destroyed without "
<< "first either being run or its corresponding binding being closed. "
<< "It is an error to drop response callbacks which still correspond "
<< "to an open interface pipe.";
}
#endif
void Run(
const absl::optional<::base::UnguessableToken>& in_unsafe_agent_cluster_id, const absl::optional<::net::SchemefulSite>& in_unsafe_top_level_site);
};
bool BlobURLStore_ResolveAsURLLoaderFactory_ForwardToCallback::Accept(
mojo::Message* message) {
DCHECK(message->is_serialized());
internal::BlobURLStore_ResolveAsURLLoaderFactory_ResponseParams_Data* params =
reinterpret_cast<
internal::BlobURLStore_ResolveAsURLLoaderFactory_ResponseParams_Data*>(
message->mutable_payload());
bool success = true;
absl::optional<::base::UnguessableToken> p_unsafe_agent_cluster_id{};
absl::optional<::net::SchemefulSite> p_unsafe_top_level_site{};
BlobURLStore_ResolveAsURLLoaderFactory_ResponseParamsDataView input_data_view(params, message);
if (success && !input_data_view.ReadUnsafeAgentClusterId(&p_unsafe_agent_cluster_id))
success = false;
if (success && !input_data_view.ReadUnsafeTopLevelSite(&p_unsafe_top_level_site))
success = false;
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 3, true);
return false;
}
if (!callback_.is_null())
std::move(callback_).Run(
std::move(p_unsafe_agent_cluster_id),
std::move(p_unsafe_top_level_site));
return true;
}
void BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder::Run(
const absl::optional<::base::UnguessableToken>& in_unsafe_agent_cluster_id, const absl::optional<::net::SchemefulSite>& in_unsafe_top_level_site) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send reply blink::mojom::BlobURLStore::ResolveAsURLLoaderFactory", "async_response_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_agent_cluster_id"), in_unsafe_agent_cluster_id,
"<value of type const absl::optional<::base::UnguessableToken>&>");
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_top_level_site"), in_unsafe_top_level_site,
"<value of type const absl::optional<::net::SchemefulSite>&>");
});
#endif
const uint32_t kFlags = mojo::Message::kFlagIsResponse |
((is_sync_) ? mojo::Message::kFlagIsSync : 0) |
((true) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_ResolveAsURLLoaderFactory_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_ResolveAsURLLoaderFactory_ResponseParams_Data> params(
message);
params.Allocate();
mojo::internal::MessageFragment<
typename decltype(params->unsafe_agent_cluster_id)::BaseType> unsafe_agent_cluster_id_fragment(
params.message());
mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
in_unsafe_agent_cluster_id, unsafe_agent_cluster_id_fragment);
params->unsafe_agent_cluster_id.Set(
unsafe_agent_cluster_id_fragment.is_null() ? nullptr : unsafe_agent_cluster_id_fragment.data());
mojo::internal::MessageFragment<
typename decltype(params->unsafe_top_level_site)::BaseType> unsafe_top_level_site_fragment(
params.message());
mojo::internal::Serialize<::network::mojom::SchemefulSiteDataView>(
in_unsafe_top_level_site, unsafe_top_level_site_fragment);
params->unsafe_top_level_site.Set(
unsafe_top_level_site_fragment.is_null() ? nullptr : unsafe_top_level_site_fragment.data());
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("ResolveAsURLLoaderFactory");
#endif
message.set_request_id(request_id_);
message.set_trace_nonce(trace_nonce_);
::mojo::internal::SendMessage(*responder_, message);
// SendMessage fails silently if the responder connection is closed,
// or if the message is malformed.
//
// TODO(darin): If Accept() returns false due to a malformed message, that
// may be good reason to close the connection. However, we don't have a
// way to do that from here. We should add a way.
responder_ = nullptr;
}
class BlobURLStore_ResolveForNavigation_ProxyToResponder : public ::mojo::internal::ProxyToResponder {
public:
static BlobURLStore::ResolveForNavigationCallback CreateCallback(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
std::unique_ptr<BlobURLStore_ResolveForNavigation_ProxyToResponder> proxy(
new BlobURLStore_ResolveForNavigation_ProxyToResponder(
message, std::move(responder)));
return base::BindOnce(&BlobURLStore_ResolveForNavigation_ProxyToResponder::Run,
std::move(proxy));
}
~BlobURLStore_ResolveForNavigation_ProxyToResponder() {
#if DCHECK_IS_ON()
if (responder_) {
// If we're being destroyed without being run, we want to ensure the
// binding endpoint has been closed. This checks for that asynchronously.
// We pass a bound generated callback to handle the response so that any
// resulting DCHECK stack will have useful interface type information.
responder_->IsConnectedAsync(base::BindOnce(&OnIsConnectedComplete));
}
#endif
}
private:
BlobURLStore_ResolveForNavigation_ProxyToResponder(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder)
: ::mojo::internal::ProxyToResponder(message, std::move(responder)) {
}
#if DCHECK_IS_ON()
static void OnIsConnectedComplete(bool connected) {
DCHECK(!connected)
<< "BlobURLStore::ResolveForNavigationCallback was destroyed without "
<< "first either being run or its corresponding binding being closed. "
<< "It is an error to drop response callbacks which still correspond "
<< "to an open interface pipe.";
}
#endif
void Run(
const absl::optional<::base::UnguessableToken>& in_unsafe_agent_cluster_id);
};
bool BlobURLStore_ResolveForNavigation_ForwardToCallback::Accept(
mojo::Message* message) {
DCHECK(message->is_serialized());
internal::BlobURLStore_ResolveForNavigation_ResponseParams_Data* params =
reinterpret_cast<
internal::BlobURLStore_ResolveForNavigation_ResponseParams_Data*>(
message->mutable_payload());
bool success = true;
absl::optional<::base::UnguessableToken> p_unsafe_agent_cluster_id{};
BlobURLStore_ResolveForNavigation_ResponseParamsDataView input_data_view(params, message);
if (success && !input_data_view.ReadUnsafeAgentClusterId(&p_unsafe_agent_cluster_id))
success = false;
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 4, true);
return false;
}
if (!callback_.is_null())
std::move(callback_).Run(
std::move(p_unsafe_agent_cluster_id));
return true;
}
void BlobURLStore_ResolveForNavigation_ProxyToResponder::Run(
const absl::optional<::base::UnguessableToken>& in_unsafe_agent_cluster_id) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send reply blink::mojom::BlobURLStore::ResolveForNavigation", "async_response_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("unsafe_agent_cluster_id"), in_unsafe_agent_cluster_id,
"<value of type const absl::optional<::base::UnguessableToken>&>");
});
#endif
const uint32_t kFlags = mojo::Message::kFlagIsResponse |
((is_sync_) ? mojo::Message::kFlagIsSync : 0) |
((true) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLStore_ResolveForNavigation_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLStore_ResolveForNavigation_ResponseParams_Data> params(
message);
params.Allocate();
mojo::internal::MessageFragment<
typename decltype(params->unsafe_agent_cluster_id)::BaseType> unsafe_agent_cluster_id_fragment(
params.message());
mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
in_unsafe_agent_cluster_id, unsafe_agent_cluster_id_fragment);
params->unsafe_agent_cluster_id.Set(
unsafe_agent_cluster_id_fragment.is_null() ? nullptr : unsafe_agent_cluster_id_fragment.data());
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLStore::Name_);
message.set_method_name("ResolveForNavigation");
#endif
message.set_request_id(request_id_);
message.set_trace_nonce(trace_nonce_);
::mojo::internal::SendMessage(*responder_, message);
// SendMessage fails silently if the responder connection is closed,
// or if the message is malformed.
//
// TODO(darin): If Accept() returns false due to a malformed message, that
// may be good reason to close the connection. However, we don't have a
// way to do that from here. We should add a way.
responder_ = nullptr;
}
// static
bool BlobURLStoreStubDispatch::Accept(
BlobURLStore* impl,
mojo::Message* message) {
switch (message->header()->name) {
case internal::kBlobURLStore_Register_Name: {
break;
}
case internal::kBlobURLStore_Revoke_Name: {
DCHECK(message->is_serialized());
internal::BlobURLStore_Revoke_Params_Data* params =
reinterpret_cast<internal::BlobURLStore_Revoke_Params_Data*>(
message->mutable_payload());
bool success = true;
::GURL p_url{};
BlobURLStore_Revoke_ParamsDataView input_data_view(params, message);
if (success && !input_data_view.ReadUrl(&p_url))
success = false;
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 1, false);
return false;
}
// A null |impl| means no implementation was bound.
DCHECK(impl);
impl->Revoke(
std::move(p_url));
return true;
}
case internal::kBlobURLStore_Resolve_Name: {
break;
}
case internal::kBlobURLStore_ResolveAsURLLoaderFactory_Name: {
break;
}
case internal::kBlobURLStore_ResolveForNavigation_Name: {
break;
}
}
return false;
}
// static
bool BlobURLStoreStubDispatch::AcceptWithResponder(
BlobURLStore* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
[[maybe_unused]] const bool message_is_sync =
message->has_flag(mojo::Message::kFlagIsSync);
[[maybe_unused]] const uint64_t request_id = message->request_id();
switch (message->header()->name) {
case internal::kBlobURLStore_Register_Name: {
internal::BlobURLStore_Register_Params_Data* params =
reinterpret_cast<
internal::BlobURLStore_Register_Params_Data*>(
message->mutable_payload());
bool success = true;
::mojo::PendingRemote<::blink::mojom::Blob> p_blob{};
::GURL p_url{};
::base::UnguessableToken p_unsafe_agent_cluster_id{};
absl::optional<::net::SchemefulSite> p_unsafe_top_level_site{};
BlobURLStore_Register_ParamsDataView input_data_view(params, message);
if (success) {
p_blob =
input_data_view.TakeBlob<decltype(p_blob)>();
}
if (success && !input_data_view.ReadUrl(&p_url))
success = false;
if (success && !input_data_view.ReadUnsafeAgentClusterId(&p_unsafe_agent_cluster_id))
success = false;
if (success && !input_data_view.ReadUnsafeTopLevelSite(&p_unsafe_top_level_site))
success = false;
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 0, false);
return false;
}
BlobURLStore::RegisterCallback callback =
BlobURLStore_Register_ProxyToResponder::CreateCallback(
*message, std::move(responder));
// A null |impl| means no implementation was bound.
DCHECK(impl);
impl->Register(
std::move(p_blob),
std::move(p_url),
std::move(p_unsafe_agent_cluster_id),
std::move(p_unsafe_top_level_site), std::move(callback));
return true;
}
case internal::kBlobURLStore_Revoke_Name: {
break;
}
case internal::kBlobURLStore_Resolve_Name: {
internal::BlobURLStore_Resolve_Params_Data* params =
reinterpret_cast<
internal::BlobURLStore_Resolve_Params_Data*>(
message->mutable_payload());
bool success = true;
::GURL p_url{};
BlobURLStore_Resolve_ParamsDataView input_data_view(params, message);
if (success && !input_data_view.ReadUrl(&p_url))
success = false;
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 2, false);
return false;
}
BlobURLStore::ResolveCallback callback =
BlobURLStore_Resolve_ProxyToResponder::CreateCallback(
*message, std::move(responder));
// A null |impl| means no implementation was bound.
DCHECK(impl);
impl->Resolve(
std::move(p_url), std::move(callback));
return true;
}
case internal::kBlobURLStore_ResolveAsURLLoaderFactory_Name: {
internal::BlobURLStore_ResolveAsURLLoaderFactory_Params_Data* params =
reinterpret_cast<
internal::BlobURLStore_ResolveAsURLLoaderFactory_Params_Data*>(
message->mutable_payload());
bool success = true;
::GURL p_url{};
::mojo::PendingReceiver<::network::mojom::URLLoaderFactory> p_factory{};
BlobURLStore_ResolveAsURLLoaderFactory_ParamsDataView input_data_view(params, message);
if (success && !input_data_view.ReadUrl(&p_url))
success = false;
if (success) {
p_factory =
input_data_view.TakeFactory<decltype(p_factory)>();
}
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 3, false);
return false;
}
BlobURLStore::ResolveAsURLLoaderFactoryCallback callback =
BlobURLStore_ResolveAsURLLoaderFactory_ProxyToResponder::CreateCallback(
*message, std::move(responder));
// A null |impl| means no implementation was bound.
DCHECK(impl);
impl->ResolveAsURLLoaderFactory(
std::move(p_url),
std::move(p_factory), std::move(callback));
return true;
}
case internal::kBlobURLStore_ResolveForNavigation_Name: {
internal::BlobURLStore_ResolveForNavigation_Params_Data* params =
reinterpret_cast<
internal::BlobURLStore_ResolveForNavigation_Params_Data*>(
message->mutable_payload());
bool success = true;
::GURL p_url{};
::mojo::PendingReceiver<BlobURLToken> p_token{};
BlobURLStore_ResolveForNavigation_ParamsDataView input_data_view(params, message);
if (success && !input_data_view.ReadUrl(&p_url))
success = false;
if (success) {
p_token =
input_data_view.TakeToken<decltype(p_token)>();
}
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLStore::Name_, 4, false);
return false;
}
BlobURLStore::ResolveForNavigationCallback callback =
BlobURLStore_ResolveForNavigation_ProxyToResponder::CreateCallback(
*message, std::move(responder));
// A null |impl| means no implementation was bound.
DCHECK(impl);
impl->ResolveForNavigation(
std::move(p_url),
std::move(p_token), std::move(callback));
return true;
}
}
return false;
}
static const mojo::internal::GenericValidationInfo kBlobURLStoreValidationInfo[] = {
{&internal::BlobURLStore_Register_Params_Data::Validate,
&internal::BlobURLStore_Register_ResponseParams_Data::Validate},
{&internal::BlobURLStore_Revoke_Params_Data::Validate,
nullptr /* no response */},
{&internal::BlobURLStore_Resolve_Params_Data::Validate,
&internal::BlobURLStore_Resolve_ResponseParams_Data::Validate},
{&internal::BlobURLStore_ResolveAsURLLoaderFactory_Params_Data::Validate,
&internal::BlobURLStore_ResolveAsURLLoaderFactory_ResponseParams_Data::Validate},
{&internal::BlobURLStore_ResolveForNavigation_Params_Data::Validate,
&internal::BlobURLStore_ResolveForNavigation_ResponseParams_Data::Validate},
};
bool BlobURLStoreRequestValidator::Accept(mojo::Message* message) {
const char* name = ::blink::mojom::BlobURLStore::Name_;
return mojo::internal::ValidateRequestGenericPacked(message, name, kBlobURLStoreValidationInfo);
}
bool BlobURLStoreResponseValidator::Accept(mojo::Message* message) {
const char* name = ::blink::mojom::BlobURLStore::Name_;
return mojo::internal::ValidateResponseGenericPacked(message, name, kBlobURLStoreValidationInfo);
}
const char BlobURLToken::Name_[] = "blink.mojom.BlobURLToken";
std::pair<uint32_t, const void*> BlobURLToken::MessageToMethodInfo_(mojo::Message& message) {
switch (message.name()) {
case internal::kBlobURLToken_Clone_Name: {
constexpr uint32_t value = base::MD5Hash32Constexpr(
"(Impl)blink::mojom::BlobURLToken::Clone");
#if BUILDFLAG(IS_FUCHSIA)
return std::make_pair(value, nullptr);
#else
return std::make_pair(value, reinterpret_cast<const void*>(&BlobURLToken::Clone_Sym::IPCSymbol));
#endif // BUILDFLAG(IS_FUCHSIA)
}
case internal::kBlobURLToken_GetToken_Name: {
constexpr uint32_t value = base::MD5Hash32Constexpr(
"(Impl)blink::mojom::BlobURLToken::GetToken");
#if BUILDFLAG(IS_FUCHSIA)
return std::make_pair(value, nullptr);
#else
return std::make_pair(value, reinterpret_cast<const void*>(&BlobURLToken::GetToken_Sym::IPCSymbol));
#endif // BUILDFLAG(IS_FUCHSIA)
}
}
return std::make_pair(0, nullptr);
}
const char* BlobURLToken::MessageToMethodName_(mojo::Message& message) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
bool is_response = message.has_flag(mojo::Message::kFlagIsResponse);
if (!is_response) {
switch (message.name()) {
case internal::kBlobURLToken_Clone_Name:
return "Receive blink::mojom::BlobURLToken::Clone";
case internal::kBlobURLToken_GetToken_Name:
return "Receive blink::mojom::BlobURLToken::GetToken";
}
} else {
switch (message.name()) {
case internal::kBlobURLToken_Clone_Name:
return "Receive reply blink::mojom::BlobURLToken::Clone";
case internal::kBlobURLToken_GetToken_Name:
return "Receive reply blink::mojom::BlobURLToken::GetToken";
}
}
return "Receive unknown mojo message";
#else
bool is_response = message.has_flag(mojo::Message::kFlagIsResponse);
if (is_response) {
return "Receive mojo reply";
} else {
return "Receive mojo message";
}
#endif // BUILDFLAG(MOJO_TRACE_ENABLED)
}
#if !BUILDFLAG(IS_FUCHSIA)
void BlobURLToken::Clone_Sym::IPCSymbol() {
// This method's address is used for indetifiying the mojo method name after
// symblozation. So each IPCSymbol should have a unique address.
NO_CODE_FOLDING();
}
void BlobURLToken::GetToken_Sym::IPCSymbol() {
// This method's address is used for indetifiying the mojo method name after
// symblozation. So each IPCSymbol should have a unique address.
NO_CODE_FOLDING();
}
# endif // !BUILDFLAG(IS_FUCHSIA)
class BlobURLToken_GetToken_ForwardToCallback
: public mojo::MessageReceiver {
public:
BlobURLToken_GetToken_ForwardToCallback(
BlobURLToken::GetTokenCallback callback
) : callback_(std::move(callback)) {
}
BlobURLToken_GetToken_ForwardToCallback(const BlobURLToken_GetToken_ForwardToCallback&) = delete;
BlobURLToken_GetToken_ForwardToCallback& operator=(const BlobURLToken_GetToken_ForwardToCallback&) = delete;
bool Accept(mojo::Message* message) override;
private:
BlobURLToken::GetTokenCallback callback_;
};
BlobURLTokenProxy::BlobURLTokenProxy(mojo::MessageReceiverWithResponder* receiver)
: receiver_(receiver) {
}
void BlobURLTokenProxy::Clone(
::mojo::PendingReceiver<BlobURLToken> in_token) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send blink::mojom::BlobURLToken::Clone", "input_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("token"), in_token,
"<value of type ::mojo::PendingReceiver<BlobURLToken>>");
});
#endif
const bool kExpectsResponse = false;
const bool kIsSync = false;
const bool kAllowInterrupt = true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLToken_Clone_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLToken_Clone_Params_Data> params(
message);
params.Allocate();
mojo::internal::Serialize<mojo::InterfaceRequestDataView<::blink::mojom::BlobURLTokenInterfaceBase>>(
in_token, &params->token, &params.message());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
!mojo::internal::IsHandleOrInterfaceValid(params->token),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
"invalid token in BlobURLToken.Clone request");
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLToken::Name_);
message.set_method_name("Clone");
#endif
// This return value may be ignored as false implies the Connector has
// encountered an error, which will be visible through other means.
::mojo::internal::SendMessage(*receiver_, message);
}
void BlobURLTokenProxy::GetToken(
GetTokenCallback callback) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT0("mojom", "Send blink::mojom::BlobURLToken::GetToken");
#endif
const bool kExpectsResponse = true;
const bool kIsSync = false;
const bool kAllowInterrupt = true;
const uint32_t kFlags =
((kExpectsResponse) ? mojo::Message::kFlagExpectsResponse : 0) |
((kIsSync) ? mojo::Message::kFlagIsSync : 0) |
((kAllowInterrupt) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLToken_GetToken_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLToken_GetToken_Params_Data> params(
message);
params.Allocate();
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLToken::Name_);
message.set_method_name("GetToken");
#endif
std::unique_ptr<mojo::MessageReceiver> responder(
new BlobURLToken_GetToken_ForwardToCallback(
std::move(callback)));
::mojo::internal::SendMessage(*receiver_, message, std::move(responder));
}
class BlobURLToken_GetToken_ProxyToResponder : public ::mojo::internal::ProxyToResponder {
public:
static BlobURLToken::GetTokenCallback CreateCallback(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
std::unique_ptr<BlobURLToken_GetToken_ProxyToResponder> proxy(
new BlobURLToken_GetToken_ProxyToResponder(
message, std::move(responder)));
return base::BindOnce(&BlobURLToken_GetToken_ProxyToResponder::Run,
std::move(proxy));
}
~BlobURLToken_GetToken_ProxyToResponder() {
#if DCHECK_IS_ON()
if (responder_) {
// If we're being destroyed without being run, we want to ensure the
// binding endpoint has been closed. This checks for that asynchronously.
// We pass a bound generated callback to handle the response so that any
// resulting DCHECK stack will have useful interface type information.
responder_->IsConnectedAsync(base::BindOnce(&OnIsConnectedComplete));
}
#endif
}
private:
BlobURLToken_GetToken_ProxyToResponder(
::mojo::Message& message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder)
: ::mojo::internal::ProxyToResponder(message, std::move(responder)) {
}
#if DCHECK_IS_ON()
static void OnIsConnectedComplete(bool connected) {
DCHECK(!connected)
<< "BlobURLToken::GetTokenCallback was destroyed without "
<< "first either being run or its corresponding binding being closed. "
<< "It is an error to drop response callbacks which still correspond "
<< "to an open interface pipe.";
}
#endif
void Run(
const ::base::UnguessableToken& in_token);
};
bool BlobURLToken_GetToken_ForwardToCallback::Accept(
mojo::Message* message) {
DCHECK(message->is_serialized());
internal::BlobURLToken_GetToken_ResponseParams_Data* params =
reinterpret_cast<
internal::BlobURLToken_GetToken_ResponseParams_Data*>(
message->mutable_payload());
bool success = true;
::base::UnguessableToken p_token{};
BlobURLToken_GetToken_ResponseParamsDataView input_data_view(params, message);
if (success && !input_data_view.ReadToken(&p_token))
success = false;
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLToken::Name_, 1, true);
return false;
}
if (!callback_.is_null())
std::move(callback_).Run(
std::move(p_token));
return true;
}
void BlobURLToken_GetToken_ProxyToResponder::Run(
const ::base::UnguessableToken& in_token) {
#if BUILDFLAG(MOJO_TRACE_ENABLED)
TRACE_EVENT1(
"mojom", "Send reply blink::mojom::BlobURLToken::GetToken", "async_response_parameters",
[&](perfetto::TracedValue context){
auto dict = std::move(context).WriteDictionary();
perfetto::WriteIntoTracedValueWithFallback(
dict.AddItem("token"), in_token,
"<value of type const ::base::UnguessableToken&>");
});
#endif
const uint32_t kFlags = mojo::Message::kFlagIsResponse |
((is_sync_) ? mojo::Message::kFlagIsSync : 0) |
((true) ? 0 : mojo::Message::kFlagNoInterrupt);
mojo::Message message(
internal::kBlobURLToken_GetToken_Name, kFlags, 0, 0, nullptr);
mojo::internal::MessageFragment<
::blink::mojom::internal::BlobURLToken_GetToken_ResponseParams_Data> params(
message);
params.Allocate();
mojo::internal::MessageFragment<
typename decltype(params->token)::BaseType> token_fragment(
params.message());
mojo::internal::Serialize<::mojo_base::mojom::UnguessableTokenDataView>(
in_token, token_fragment);
params->token.Set(
token_fragment.is_null() ? nullptr : token_fragment.data());
MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
params->token.is_null(),
mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
"null token in ");
#if defined(ENABLE_IPC_FUZZER)
message.set_interface_name(BlobURLToken::Name_);
message.set_method_name("GetToken");
#endif
message.set_request_id(request_id_);
message.set_trace_nonce(trace_nonce_);
::mojo::internal::SendMessage(*responder_, message);
// SendMessage fails silently if the responder connection is closed,
// or if the message is malformed.
//
// TODO(darin): If Accept() returns false due to a malformed message, that
// may be good reason to close the connection. However, we don't have a
// way to do that from here. We should add a way.
responder_ = nullptr;
}
// static
bool BlobURLTokenStubDispatch::Accept(
BlobURLToken* impl,
mojo::Message* message) {
switch (message->header()->name) {
case internal::kBlobURLToken_Clone_Name: {
DCHECK(message->is_serialized());
internal::BlobURLToken_Clone_Params_Data* params =
reinterpret_cast<internal::BlobURLToken_Clone_Params_Data*>(
message->mutable_payload());
bool success = true;
::mojo::PendingReceiver<BlobURLToken> p_token{};
BlobURLToken_Clone_ParamsDataView input_data_view(params, message);
if (success) {
p_token =
input_data_view.TakeToken<decltype(p_token)>();
}
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLToken::Name_, 0, false);
return false;
}
// A null |impl| means no implementation was bound.
DCHECK(impl);
impl->Clone(
std::move(p_token));
return true;
}
case internal::kBlobURLToken_GetToken_Name: {
break;
}
}
return false;
}
// static
bool BlobURLTokenStubDispatch::AcceptWithResponder(
BlobURLToken* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
[[maybe_unused]] const bool message_is_sync =
message->has_flag(mojo::Message::kFlagIsSync);
[[maybe_unused]] const uint64_t request_id = message->request_id();
switch (message->header()->name) {
case internal::kBlobURLToken_Clone_Name: {
break;
}
case internal::kBlobURLToken_GetToken_Name: {
internal::BlobURLToken_GetToken_Params_Data* params =
reinterpret_cast<
internal::BlobURLToken_GetToken_Params_Data*>(
message->mutable_payload());
bool success = true;
BlobURLToken_GetToken_ParamsDataView input_data_view(params, message);
if (!success) {
ReportValidationErrorForMessage(
message,
mojo::internal::VALIDATION_ERROR_DESERIALIZATION_FAILED,
BlobURLToken::Name_, 1, false);
return false;
}
BlobURLToken::GetTokenCallback callback =
BlobURLToken_GetToken_ProxyToResponder::CreateCallback(
*message, std::move(responder));
// A null |impl| means no implementation was bound.
DCHECK(impl);
impl->GetToken(std::move(callback));
return true;
}
}
return false;
}
static const mojo::internal::GenericValidationInfo kBlobURLTokenValidationInfo[] = {
{&internal::BlobURLToken_Clone_Params_Data::Validate,
nullptr /* no response */},
{&internal::BlobURLToken_GetToken_Params_Data::Validate,
&internal::BlobURLToken_GetToken_ResponseParams_Data::Validate},
};
bool BlobURLTokenRequestValidator::Accept(mojo::Message* message) {
const char* name = ::blink::mojom::BlobURLToken::Name_;
return mojo::internal::ValidateRequestGenericPacked(message, name, kBlobURLTokenValidationInfo);
}
bool BlobURLTokenResponseValidator::Accept(mojo::Message* message) {
const char* name = ::blink::mojom::BlobURLToken::Name_;
return mojo::internal::ValidateResponseGenericPacked(message, name, kBlobURLTokenValidationInfo);
}
} // namespace mojom
} // namespace blink
namespace mojo {
} // namespace mojo
// Symbols declared in the -test-utils.h header are defined here instead of a
// separate .cc file to save compile time.
namespace blink {
namespace mojom {
void BlobURLStoreInterceptorForTesting::Register(::mojo::PendingRemote<::blink::mojom::Blob> blob, const ::GURL& url, const ::base::UnguessableToken& unsafe_agent_cluster_id, const absl::optional<::net::SchemefulSite>& unsafe_top_level_site, RegisterCallback callback) {
GetForwardingInterface()->Register(std::move(blob), std::move(url), std::move(unsafe_agent_cluster_id), std::move(unsafe_top_level_site), std::move(callback));
}
void BlobURLStoreInterceptorForTesting::Revoke(const ::GURL& url) {
GetForwardingInterface()->Revoke(std::move(url));
}
void BlobURLStoreInterceptorForTesting::Resolve(const ::GURL& url, ResolveCallback callback) {
GetForwardingInterface()->Resolve(std::move(url), std::move(callback));
}
void BlobURLStoreInterceptorForTesting::ResolveAsURLLoaderFactory(const ::GURL& url, ::mojo::PendingReceiver<::network::mojom::URLLoaderFactory> factory, ResolveAsURLLoaderFactoryCallback callback) {
GetForwardingInterface()->ResolveAsURLLoaderFactory(std::move(url), std::move(factory), std::move(callback));
}
void BlobURLStoreInterceptorForTesting::ResolveForNavigation(const ::GURL& url, ::mojo::PendingReceiver<BlobURLToken> token, ResolveForNavigationCallback callback) {
GetForwardingInterface()->ResolveForNavigation(std::move(url), std::move(token), std::move(callback));
}
BlobURLStoreAsyncWaiter::BlobURLStoreAsyncWaiter(
BlobURLStore* proxy) : proxy_(proxy) {}
BlobURLStoreAsyncWaiter::~BlobURLStoreAsyncWaiter() = default;
void BlobURLStoreAsyncWaiter::Register(
::mojo::PendingRemote<::blink::mojom::Blob> blob, const ::GURL& url, const ::base::UnguessableToken& unsafe_agent_cluster_id, const absl::optional<::net::SchemefulSite>& unsafe_top_level_site) {
base::RunLoop loop;
proxy_->Register(std::move(blob),std::move(url),std::move(unsafe_agent_cluster_id),std::move(unsafe_top_level_site),
base::BindOnce(
[](base::RunLoop* loop) {
loop->Quit();
},
&loop));
loop.Run();
}
void BlobURLStoreAsyncWaiter::Resolve(
const ::GURL& url, ::mojo::PendingRemote<::blink::mojom::Blob>* out_blob, absl::optional<::base::UnguessableToken>* out_unsafe_agent_cluster_id) {
base::RunLoop loop;
proxy_->Resolve(std::move(url),
base::BindOnce(
[](base::RunLoop* loop,
::mojo::PendingRemote<::blink::mojom::Blob>* out_blob
,
absl::optional<::base::UnguessableToken>* out_unsafe_agent_cluster_id
,
::mojo::PendingRemote<::blink::mojom::Blob> blob,
const absl::optional<::base::UnguessableToken>& unsafe_agent_cluster_id) {*out_blob = std::move(blob);*out_unsafe_agent_cluster_id = std::move(unsafe_agent_cluster_id);
loop->Quit();
},
&loop,
out_blob,
out_unsafe_agent_cluster_id));
loop.Run();
}
void BlobURLStoreAsyncWaiter::ResolveAsURLLoaderFactory(
const ::GURL& url, ::mojo::PendingReceiver<::network::mojom::URLLoaderFactory> factory, absl::optional<::base::UnguessableToken>* out_unsafe_agent_cluster_id, absl::optional<::net::SchemefulSite>* out_unsafe_top_level_site) {
base::RunLoop loop;
proxy_->ResolveAsURLLoaderFactory(std::move(url),std::move(factory),
base::BindOnce(
[](base::RunLoop* loop,
absl::optional<::base::UnguessableToken>* out_unsafe_agent_cluster_id
,
absl::optional<::net::SchemefulSite>* out_unsafe_top_level_site
,
const absl::optional<::base::UnguessableToken>& unsafe_agent_cluster_id,
const absl::optional<::net::SchemefulSite>& unsafe_top_level_site) {*out_unsafe_agent_cluster_id = std::move(unsafe_agent_cluster_id);*out_unsafe_top_level_site = std::move(unsafe_top_level_site);
loop->Quit();
},
&loop,
out_unsafe_agent_cluster_id,
out_unsafe_top_level_site));
loop.Run();
}
void BlobURLStoreAsyncWaiter::ResolveForNavigation(
const ::GURL& url, ::mojo::PendingReceiver<BlobURLToken> token, absl::optional<::base::UnguessableToken>* out_unsafe_agent_cluster_id) {
base::RunLoop loop;
proxy_->ResolveForNavigation(std::move(url),std::move(token),
base::BindOnce(
[](base::RunLoop* loop,
absl::optional<::base::UnguessableToken>* out_unsafe_agent_cluster_id
,
const absl::optional<::base::UnguessableToken>& unsafe_agent_cluster_id) {*out_unsafe_agent_cluster_id = std::move(unsafe_agent_cluster_id);
loop->Quit();
},
&loop,
out_unsafe_agent_cluster_id));
loop.Run();
}
void BlobURLTokenInterceptorForTesting::Clone(::mojo::PendingReceiver<BlobURLToken> token) {
GetForwardingInterface()->Clone(std::move(token));
}
void BlobURLTokenInterceptorForTesting::GetToken(GetTokenCallback callback) {
GetForwardingInterface()->GetToken(std::move(callback));
}
BlobURLTokenAsyncWaiter::BlobURLTokenAsyncWaiter(
BlobURLToken* proxy) : proxy_(proxy) {}
BlobURLTokenAsyncWaiter::~BlobURLTokenAsyncWaiter() = default;
void BlobURLTokenAsyncWaiter::GetToken(
::base::UnguessableToken* out_token) {
base::RunLoop loop;
proxy_->GetToken(
base::BindOnce(
[](base::RunLoop* loop,
::base::UnguessableToken* out_token
,
const ::base::UnguessableToken& token) {*out_token = std::move(token);
loop->Quit();
},
&loop,
out_token));
loop.Run();
}
} // namespace mojom
} // namespace blink
#if defined(__clang__)
#pragma clang diagnostic pop
#endif