Fenced Frames: [2/N] Fledge `runAdAuction()` yields a FencedFrameConfig
This CL typemaps the following:
- blink.mojom.Opaque
- blink.mojom.AdAuctionData
- blink.SharedStorageBudgetMetadata
All in preparation of typemapping the blink.mojom.PotentiallyOpaque[Foo]
structs so that we can pass blink.mojom.RedactedFencedFrameConfig
directly into Blink IPCs. This will enable FLEDGE's `runAdAuction()`
web API to return a Promise<FencedFrameConfig>.
Bug: 1347953
Change-Id: I990d4687793904299608df0ad4c0e01084b32d27
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4085208
Commit-Queue: Dominic Farolino <dom@chromium.org>
Reviewed-by: Garrett Tanzer <gtanzer@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1081699}
diff --git a/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc b/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc
index ade96c9..c86eb25 100644
--- a/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc
+++ b/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc
@@ -10,6 +10,31 @@
namespace mojo {
// static
+blink::mojom::Opaque
+EnumTraits<blink::mojom::Opaque, blink::FencedFrame::Opaque>::ToMojom(
+ blink::FencedFrame::Opaque input) {
+ switch (input) {
+ case blink::FencedFrame::Opaque::kOpaque:
+ return blink::mojom::Opaque::kOpaque;
+ }
+ NOTREACHED();
+ return blink::mojom::Opaque::kOpaque;
+}
+
+// static
+bool EnumTraits<blink::mojom::Opaque, blink::FencedFrame::Opaque>::FromMojom(
+ blink::mojom::Opaque input,
+ blink::FencedFrame::Opaque* out) {
+ switch (input) {
+ case blink::mojom::Opaque::kOpaque:
+ *out = blink::FencedFrame::Opaque::kOpaque;
+ return true;
+ }
+ NOTREACHED();
+ return false;
+}
+
+// static
blink::mojom::ReportingDestination
EnumTraits<blink::mojom::ReportingDestination,
blink::FencedFrame::ReportingDestination>::
@@ -71,6 +96,58 @@
return false;
}
+// static
+const url::Origin& StructTraits<blink::mojom::AdAuctionDataDataView,
+ blink::FencedFrame::AdAuctionData>::
+ interest_group_owner(const blink::FencedFrame::AdAuctionData& input) {
+ return input.interest_group_owner;
+}
+// static
+const std::string& StructTraits<blink::mojom::AdAuctionDataDataView,
+ blink::FencedFrame::AdAuctionData>::
+ interest_group_name(const blink::FencedFrame::AdAuctionData& input) {
+ return input.interest_group_name;
+}
+
+// static
+bool StructTraits<blink::mojom::AdAuctionDataDataView,
+ blink::FencedFrame::AdAuctionData>::
+ Read(blink::mojom::AdAuctionDataDataView data,
+ blink::FencedFrame::AdAuctionData* out_data) {
+ if (!data.ReadInterestGroupOwner(&out_data->interest_group_owner) ||
+ !data.ReadInterestGroupName(&out_data->interest_group_name)) {
+ return false;
+ }
+ return true;
+}
+
+// static
+const url::Origin&
+StructTraits<blink::mojom::SharedStorageBudgetMetadataDataView,
+ blink::FencedFrame::SharedStorageBudgetMetadata>::
+ origin(const blink::FencedFrame::SharedStorageBudgetMetadata& input) {
+ return input.origin;
+}
+// static
+double StructTraits<blink::mojom::SharedStorageBudgetMetadataDataView,
+ blink::FencedFrame::SharedStorageBudgetMetadata>::
+ budget_to_charge(
+ const blink::FencedFrame::SharedStorageBudgetMetadata& input) {
+ return input.budget_to_charge;
+}
+
+// static
+bool StructTraits<blink::mojom::SharedStorageBudgetMetadataDataView,
+ blink::FencedFrame::SharedStorageBudgetMetadata>::
+ Read(blink::mojom::SharedStorageBudgetMetadataDataView data,
+ blink::FencedFrame::SharedStorageBudgetMetadata* out_data) {
+ if (!data.ReadOrigin(&out_data->origin)) {
+ return false;
+ }
+ out_data->budget_to_charge = data.budget_to_charge();
+ return true;
+}
+
blink::mojom::PotentiallyOpaqueURLPtr
StructTraits<blink::mojom::FencedFrameConfigDataView,
blink::FencedFrame::RedactedFencedFrameConfig>::
@@ -80,7 +157,7 @@
}
if (!config.mapped_url_->potentially_opaque_value.has_value()) {
return blink::mojom::PotentiallyOpaqueURL::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueURL::NewTransparent(
*config.mapped_url_->potentially_opaque_value);
@@ -96,14 +173,10 @@
}
if (!config.ad_auction_data_->potentially_opaque_value.has_value()) {
return blink::mojom::PotentiallyOpaqueAdAuctionData::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueAdAuctionData::NewTransparent(
- blink::mojom::AdAuctionData::New(
- config.ad_auction_data_->potentially_opaque_value
- ->interest_group_owner,
- config.ad_auction_data_->potentially_opaque_value
- ->interest_group_name));
+ *config.ad_auction_data_->potentially_opaque_value);
}
blink::mojom::PotentiallyOpaqueConfigVectorPtr
@@ -116,7 +189,7 @@
}
if (!config.nested_configs_->potentially_opaque_value.has_value()) {
return blink::mojom::PotentiallyOpaqueConfigVector::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
auto nested_config_vector =
blink::mojom::PotentiallyOpaqueConfigVector::NewTransparent({});
@@ -138,14 +211,11 @@
if (!config.shared_storage_budget_metadata_->potentially_opaque_value
.has_value()) {
return blink::mojom::PotentiallyOpaqueSharedStorageBudgetMetadata::
- NewOpaque(blink::mojom::Opaque::kOpaque);
+ NewOpaque(blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueSharedStorageBudgetMetadata::
- NewTransparent(blink::mojom::SharedStorageBudgetMetadata::New(
- config.shared_storage_budget_metadata_->potentially_opaque_value
- ->origin,
- config.shared_storage_budget_metadata_->potentially_opaque_value
- ->budget_to_charge));
+ NewTransparent(
+ *config.shared_storage_budget_metadata_->potentially_opaque_value);
}
blink::mojom::PotentiallyOpaqueReportingMetadataPtr
@@ -158,7 +228,7 @@
}
if (!config.reporting_metadata_->potentially_opaque_value.has_value()) {
return blink::mojom::PotentiallyOpaqueReportingMetadata::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueReportingMetadata::NewTransparent(
*config.reporting_metadata_->potentially_opaque_value);
@@ -193,9 +263,7 @@
if (ad_auction_data) {
if (ad_auction_data->is_transparent()) {
out_config->ad_auction_data_.emplace(
- absl::make_optional(blink::FencedFrame::AdAuctionData{
- ad_auction_data->get_transparent()->interest_group_owner,
- ad_auction_data->get_transparent()->interest_group_name}));
+ absl::make_optional(ad_auction_data->get_transparent()));
} else {
out_config->ad_auction_data_.emplace(absl::nullopt);
}
@@ -214,11 +282,8 @@
}
if (shared_storage_budget_metadata) {
if (shared_storage_budget_metadata->is_transparent()) {
- out_config->shared_storage_budget_metadata_.emplace(
- absl::make_optional(blink::FencedFrame::SharedStorageBudgetMetadata{
- shared_storage_budget_metadata->get_transparent()->origin,
- shared_storage_budget_metadata->get_transparent()
- ->budget_to_charge}));
+ out_config->shared_storage_budget_metadata_.emplace(absl::make_optional(
+ shared_storage_budget_metadata->get_transparent()));
} else {
out_config->shared_storage_budget_metadata_.emplace(absl::nullopt);
}
@@ -244,7 +309,7 @@
}
if (!properties.mapped_url_->potentially_opaque_value.has_value()) {
return blink::mojom::PotentiallyOpaqueURL::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueURL::NewTransparent(
*properties.mapped_url_->potentially_opaque_value);
@@ -260,14 +325,10 @@
}
if (!properties.ad_auction_data_->potentially_opaque_value.has_value()) {
return blink::mojom::PotentiallyOpaqueAdAuctionData::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueAdAuctionData::NewTransparent(
- blink::mojom::AdAuctionData::New(
- properties.ad_auction_data_->potentially_opaque_value
- ->interest_group_owner,
- properties.ad_auction_data_->potentially_opaque_value
- ->interest_group_name));
+ *properties.ad_auction_data_->potentially_opaque_value);
}
blink::mojom::PotentiallyOpaqueURNConfigVectorPtr
@@ -281,7 +342,7 @@
if (!properties.nested_urn_config_pairs_->potentially_opaque_value
.has_value()) {
return blink::mojom::PotentiallyOpaqueURNConfigVector::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
auto nested_urn_config_vector =
blink::mojom::PotentiallyOpaqueURNConfigVector::NewTransparent({});
@@ -305,14 +366,11 @@
if (!properties.shared_storage_budget_metadata_->potentially_opaque_value
.has_value()) {
return blink::mojom::PotentiallyOpaqueSharedStorageBudgetMetadata::
- NewOpaque(blink::mojom::Opaque::kOpaque);
+ NewOpaque(blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueSharedStorageBudgetMetadata::
- NewTransparent(blink::mojom::SharedStorageBudgetMetadata::New(
- properties.shared_storage_budget_metadata_->potentially_opaque_value
- ->origin,
- properties.shared_storage_budget_metadata_->potentially_opaque_value
- ->budget_to_charge));
+ NewTransparent(*properties.shared_storage_budget_metadata_
+ ->potentially_opaque_value);
}
blink::mojom::PotentiallyOpaqueReportingMetadataPtr
@@ -325,7 +383,7 @@
}
if (!properties.reporting_metadata_->potentially_opaque_value.has_value()) {
return blink::mojom::PotentiallyOpaqueReportingMetadata::NewOpaque(
- blink::mojom::Opaque::kOpaque);
+ blink::FencedFrame::Opaque::kOpaque);
}
return blink::mojom::PotentiallyOpaqueReportingMetadata::NewTransparent(
*properties.reporting_metadata_->potentially_opaque_value);
@@ -359,9 +417,7 @@
if (ad_auction_data) {
if (ad_auction_data->is_transparent()) {
out_properties->ad_auction_data_.emplace(
- absl::make_optional(blink::FencedFrame::AdAuctionData{
- ad_auction_data->get_transparent()->interest_group_owner,
- ad_auction_data->get_transparent()->interest_group_name}));
+ absl::make_optional(ad_auction_data->get_transparent()));
} else {
out_properties->ad_auction_data_.emplace(absl::nullopt);
}
@@ -384,10 +440,8 @@
if (shared_storage_budget_metadata) {
if (shared_storage_budget_metadata->is_transparent()) {
out_properties->shared_storage_budget_metadata_.emplace(
- absl::make_optional(blink::FencedFrame::SharedStorageBudgetMetadata{
- shared_storage_budget_metadata->get_transparent()->origin,
- shared_storage_budget_metadata->get_transparent()
- ->budget_to_charge}));
+ absl::make_optional(
+ shared_storage_budget_metadata->get_transparent()));
} else {
out_properties->shared_storage_budget_metadata_.emplace(absl::nullopt);
}
diff --git a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h
index 636a251..17381b5 100644
--- a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h
+++ b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h
@@ -26,6 +26,12 @@
namespace blink::FencedFrame {
+// This is used to represent the "opaque" union variant of "PotentiallyOpaque"
+// mojom types.
+enum class Opaque {
+ kOpaque,
+};
+
enum ReportingDestination {
kBuyer,
kSeller,
@@ -43,7 +49,7 @@
metadata;
};
-struct AdAuctionData {
+struct BLINK_COMMON_EXPORT AdAuctionData {
url::Origin interest_group_owner;
std::string interest_group_name;
};
diff --git a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h
index e29d4d1..123301cc 100644
--- a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h
+++ b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h
@@ -5,6 +5,7 @@
#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_FENCED_FRAME_REDACTED_FENCED_FRAME_CONFIG_MOJOM_TRAITS_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FENCED_FRAME_REDACTED_FENCED_FRAME_CONFIG_MOJOM_TRAITS_H_
+#include "mojo/public/cpp/bindings/enum_traits.h"
#include "third_party/blink/public/common/common_export.h"
#include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h"
#include "third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom-forward.h"
@@ -13,6 +14,14 @@
template <>
struct BLINK_COMMON_EXPORT
+ EnumTraits<blink::mojom::Opaque, blink::FencedFrame::Opaque> {
+ static blink::mojom::Opaque ToMojom(blink::FencedFrame::Opaque input);
+ static bool FromMojom(blink::mojom::Opaque input,
+ blink::FencedFrame::Opaque* out);
+};
+
+template <>
+struct BLINK_COMMON_EXPORT
EnumTraits<blink::mojom::ReportingDestination,
blink::FencedFrame::ReportingDestination> {
static blink::mojom::ReportingDestination ToMojom(
@@ -34,6 +43,31 @@
};
template <>
+struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::AdAuctionDataDataView,
+ blink::FencedFrame::AdAuctionData> {
+ static const url::Origin& interest_group_owner(
+ const blink::FencedFrame::AdAuctionData& input);
+ static const std::string& interest_group_name(
+ const blink::FencedFrame::AdAuctionData& input);
+
+ static bool Read(blink::mojom::AdAuctionDataDataView data,
+ blink::FencedFrame::AdAuctionData* out_data);
+};
+
+template <>
+struct BLINK_COMMON_EXPORT
+ StructTraits<blink::mojom::SharedStorageBudgetMetadataDataView,
+ blink::FencedFrame::SharedStorageBudgetMetadata> {
+ static const url::Origin& origin(
+ const blink::FencedFrame::SharedStorageBudgetMetadata& input);
+ static double budget_to_charge(
+ const blink::FencedFrame::SharedStorageBudgetMetadata& input);
+
+ static bool Read(blink::mojom::SharedStorageBudgetMetadataDataView data,
+ blink::FencedFrame::SharedStorageBudgetMetadata* out_data);
+};
+
+template <>
struct BLINK_COMMON_EXPORT
StructTraits<blink::mojom::FencedFrameConfigDataView,
blink::FencedFrame::RedactedFencedFrameConfig> {
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn
index 19798ef9..f869087 100644
--- a/third_party/blink/public/mojom/BUILD.gn
+++ b/third_party/blink/public/mojom/BUILD.gn
@@ -599,6 +599,18 @@
{
types = [
{
+ mojom = "blink.mojom.Opaque"
+ cpp = "::blink::FencedFrame::Opaque"
+ },
+ {
+ mojom = "blink.mojom.AdAuctionData"
+ cpp = "::blink::FencedFrame::AdAuctionData"
+ },
+ {
+ mojom = "blink.mojom.SharedStorageBudgetMetadata"
+ cpp = "::blink::FencedFrame::SharedStorageBudgetMetadata"
+ },
+ {
mojom = "blink.mojom.ReportingDestination"
cpp = "::blink::FencedFrame::ReportingDestination"
},