FLEDGE: Enable change of component ad limit to 40 by default
...in prep for stable 100% launch via experiment config. Bug: 324445653 Change-Id: Ib36f0ab68fbafe7183cb4a86fc0f929e58c1e303 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5448765 Reviewed-by: Mason Freed <masonf@chromium.org> Reviewed-by: Russ Hamilton <behamilton@google.com> Commit-Queue: Maks Orlovich <morlovich@chromium.org> Cr-Commit-Position: refs/heads/main@{#1313767}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
79881999ee
commit
284a01365f
content/services/auction_worklet
testing/variations
third_party/blink
@ -1861,67 +1861,12 @@ TEST_F(BidderWorkletTest, GenerateBidReturnValueAdComponents) {
|
||||
{"https://url.test/ generateBid() adComponents entry: Required field "
|
||||
"'url' is undefined."});
|
||||
|
||||
// By default up to 20 values in the output adComponents output array are
|
||||
// By default up to 40 values in the output adComponents output array are
|
||||
// allowed (And they can all be the same URL).
|
||||
ASSERT_EQ(blink::MaxAdAuctionAdComponents(), 20u)
|
||||
ASSERT_EQ(blink::MaxAdAuctionAdComponents(), 40u)
|
||||
<< "Unexpected value of MaxAdAuctionAdComponents()";
|
||||
RunGenerateBidWithReturnValueExpectingResult(
|
||||
R"({ad: "ad",
|
||||
bid:1,
|
||||
render:"https://response.test/",
|
||||
adComponents:[
|
||||
"https://ad_component.test/" /* 1 */,
|
||||
"https://ad_component.test/" /* 2 */,
|
||||
"https://ad_component.test/" /* 3 */,
|
||||
"https://ad_component.test/" /* 4 */,
|
||||
"https://ad_component.test/" /* 5 */,
|
||||
"https://ad_component.test/" /* 6 */,
|
||||
"https://ad_component.test/" /* 7 */,
|
||||
"https://ad_component.test/" /* 8 */,
|
||||
"https://ad_component.test/" /* 9 */,
|
||||
"https://ad_component.test/" /* 10 */,
|
||||
"https://ad_component.test/" /* 11 */,
|
||||
"https://ad_component.test/" /* 12 */,
|
||||
"https://ad_component.test/" /* 13 */,
|
||||
"https://ad_component.test/" /* 14 */,
|
||||
"https://ad_component.test/" /* 15 */,
|
||||
"https://ad_component.test/" /* 16 */,
|
||||
"https://ad_component.test/" /* 17 */,
|
||||
"https://ad_component.test/" /* 18 */,
|
||||
"https://ad_component.test/" /* 19 */,
|
||||
"https://ad_component.test/" /* 20 */,
|
||||
]})",
|
||||
mojom::BidderWorkletBid::New(
|
||||
auction_worklet::mojom::BidRole::kUnenforcedKAnon, "\"ad\"", 1,
|
||||
/*bid_currency=*/std::nullopt,
|
||||
/*ad_cost=*/std::nullopt,
|
||||
blink::AdDescriptor(GURL("https://response.test/")),
|
||||
/*ad_component_descriptors=*/
|
||||
std::vector<blink::AdDescriptor>{
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 1 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 2 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 3 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 4 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 5 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 6 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 7 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 8 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 9 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 10 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 11 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 12 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 13 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 14 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 15 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 16 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 17 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 18 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 19 */,
|
||||
blink::AdDescriptor(GURL("https://ad_component.test/")) /* 20 */,
|
||||
},
|
||||
/*modeling_signals=*/std::nullopt, base::TimeDelta()));
|
||||
|
||||
// Results with 21 or more values are rejected.
|
||||
std::vector<blink::AdDescriptor> expected_descriptors(
|
||||
40u, blink::AdDescriptor(GURL("https://ad_component.test/")));
|
||||
RunGenerateBidWithReturnValueExpectingResult(
|
||||
R"({ad: "ad",
|
||||
bid:1,
|
||||
@ -1948,10 +1893,85 @@ TEST_F(BidderWorkletTest, GenerateBidReturnValueAdComponents) {
|
||||
"https://ad_component.test/" /* 19 */,
|
||||
"https://ad_component.test/" /* 20 */,
|
||||
"https://ad_component.test/" /* 21 */,
|
||||
"https://ad_component.test/" /* 22 */,
|
||||
"https://ad_component.test/" /* 23 */,
|
||||
"https://ad_component.test/" /* 24 */,
|
||||
"https://ad_component.test/" /* 25 */,
|
||||
"https://ad_component.test/" /* 26 */,
|
||||
"https://ad_component.test/" /* 27 */,
|
||||
"https://ad_component.test/" /* 28 */,
|
||||
"https://ad_component.test/" /* 29 */,
|
||||
"https://ad_component.test/" /* 30 */,
|
||||
"https://ad_component.test/" /* 31 */,
|
||||
"https://ad_component.test/" /* 32 */,
|
||||
"https://ad_component.test/" /* 33 */,
|
||||
"https://ad_component.test/" /* 34 */,
|
||||
"https://ad_component.test/" /* 35 */,
|
||||
"https://ad_component.test/" /* 36 */,
|
||||
"https://ad_component.test/" /* 37 */,
|
||||
"https://ad_component.test/" /* 38 */,
|
||||
"https://ad_component.test/" /* 39 */,
|
||||
"https://ad_component.test/" /* 40 */,
|
||||
]})",
|
||||
mojom::BidderWorkletBid::New(
|
||||
auction_worklet::mojom::BidRole::kUnenforcedKAnon, "\"ad\"", 1,
|
||||
/*bid_currency=*/std::nullopt,
|
||||
/*ad_cost=*/std::nullopt,
|
||||
blink::AdDescriptor(GURL("https://response.test/")),
|
||||
std::move(expected_descriptors),
|
||||
/*modeling_signals=*/std::nullopt, base::TimeDelta()));
|
||||
|
||||
// Results with 41 or more values are rejected.
|
||||
RunGenerateBidWithReturnValueExpectingResult(
|
||||
R"({ad: "ad",
|
||||
bid:1,
|
||||
render:"https://response.test/",
|
||||
adComponents:[
|
||||
"https://ad_component.test/" /* 1 */,
|
||||
"https://ad_component.test/" /* 2 */,
|
||||
"https://ad_component.test/" /* 3 */,
|
||||
"https://ad_component.test/" /* 4 */,
|
||||
"https://ad_component.test/" /* 5 */,
|
||||
"https://ad_component.test/" /* 6 */,
|
||||
"https://ad_component.test/" /* 7 */,
|
||||
"https://ad_component.test/" /* 8 */,
|
||||
"https://ad_component.test/" /* 9 */,
|
||||
"https://ad_component.test/" /* 10 */,
|
||||
"https://ad_component.test/" /* 11 */,
|
||||
"https://ad_component.test/" /* 12 */,
|
||||
"https://ad_component.test/" /* 13 */,
|
||||
"https://ad_component.test/" /* 14 */,
|
||||
"https://ad_component.test/" /* 15 */,
|
||||
"https://ad_component.test/" /* 16 */,
|
||||
"https://ad_component.test/" /* 17 */,
|
||||
"https://ad_component.test/" /* 18 */,
|
||||
"https://ad_component.test/" /* 19 */,
|
||||
"https://ad_component.test/" /* 20 */,
|
||||
"https://ad_component.test/" /* 21 */,
|
||||
"https://ad_component.test/" /* 22 */,
|
||||
"https://ad_component.test/" /* 23 */,
|
||||
"https://ad_component.test/" /* 24 */,
|
||||
"https://ad_component.test/" /* 25 */,
|
||||
"https://ad_component.test/" /* 26 */,
|
||||
"https://ad_component.test/" /* 27 */,
|
||||
"https://ad_component.test/" /* 28 */,
|
||||
"https://ad_component.test/" /* 29 */,
|
||||
"https://ad_component.test/" /* 30 */,
|
||||
"https://ad_component.test/" /* 31 */,
|
||||
"https://ad_component.test/" /* 32 */,
|
||||
"https://ad_component.test/" /* 33 */,
|
||||
"https://ad_component.test/" /* 34 */,
|
||||
"https://ad_component.test/" /* 35 */,
|
||||
"https://ad_component.test/" /* 36 */,
|
||||
"https://ad_component.test/" /* 37 */,
|
||||
"https://ad_component.test/" /* 38 */,
|
||||
"https://ad_component.test/" /* 39 */,
|
||||
"https://ad_component.test/" /* 40 */,
|
||||
"https://ad_component.test/" /* 41 */,
|
||||
]})",
|
||||
/*expected_bids=*/mojom::BidderWorkletBidPtr(),
|
||||
/*expected_data_version=*/std::nullopt,
|
||||
{"https://url.test/ generateBid() bid adComponents with over 20 "
|
||||
{"https://url.test/ generateBid() bid adComponents with over 40 "
|
||||
"items."});
|
||||
}
|
||||
|
||||
@ -2568,10 +2588,10 @@ TEST_F(BidderWorkletTest, GenerateBidSetBidThrows) {
|
||||
|
||||
// Up to 20 values in the output adComponents output array are allowed (And
|
||||
// they can all be the same URL).
|
||||
ASSERT_EQ(blink::MaxAdAuctionAdComponents(), 20u)
|
||||
ASSERT_EQ(blink::MaxAdAuctionAdComponents(), 40u)
|
||||
<< "Unexpected value of MaxAdAuctionAdComponents";
|
||||
|
||||
// Results with 21 or more values are rejected.
|
||||
// Results with 41 or more values are rejected.
|
||||
RunGenerateBidWithJavascriptExpectingResult(
|
||||
R"(function generateBid() {
|
||||
setBid({ad: "ad",
|
||||
@ -2599,12 +2619,32 @@ TEST_F(BidderWorkletTest, GenerateBidSetBidThrows) {
|
||||
"https://ad_component.test/" /* 19 */,
|
||||
"https://ad_component.test/" /* 20 */,
|
||||
"https://ad_component.test/" /* 21 */,
|
||||
"https://ad_component.test/" /* 22 */,
|
||||
"https://ad_component.test/" /* 23 */,
|
||||
"https://ad_component.test/" /* 24 */,
|
||||
"https://ad_component.test/" /* 25 */,
|
||||
"https://ad_component.test/" /* 26 */,
|
||||
"https://ad_component.test/" /* 27 */,
|
||||
"https://ad_component.test/" /* 28 */,
|
||||
"https://ad_component.test/" /* 29 */,
|
||||
"https://ad_component.test/" /* 30 */,
|
||||
"https://ad_component.test/" /* 31 */,
|
||||
"https://ad_component.test/" /* 32 */,
|
||||
"https://ad_component.test/" /* 33 */,
|
||||
"https://ad_component.test/" /* 34 */,
|
||||
"https://ad_component.test/" /* 35 */,
|
||||
"https://ad_component.test/" /* 36 */,
|
||||
"https://ad_component.test/" /* 37 */,
|
||||
"https://ad_component.test/" /* 38 */,
|
||||
"https://ad_component.test/" /* 39 */,
|
||||
"https://ad_component.test/" /* 40 */,
|
||||
"https://ad_component.test/" /* 41 */,
|
||||
]});
|
||||
return {ad: "not_reached", bid: 4, render:"https://response.test/2"};
|
||||
})",
|
||||
/*expected_bids=*/mojom::BidderWorkletBidPtr(),
|
||||
/*expected_data_version=*/std::nullopt,
|
||||
{"https://url.test/:2 Uncaught TypeError: bid adComponents with over 20 "
|
||||
{"https://url.test/:2 Uncaught TypeError: bid adComponents with over 40 "
|
||||
"items."});
|
||||
|
||||
// ------------
|
||||
@ -2900,7 +2940,7 @@ TEST_F(BidderWorkletMultiBidTest, TargetNumAdComponents) {
|
||||
/*expected_data_version=*/std::nullopt,
|
||||
/*expected_errors=*/
|
||||
{"https://url.test/ generateBid() bid targetNumAdComponents larger than "
|
||||
"component ad limit of 20."});
|
||||
"component ad limit of 40."});
|
||||
|
||||
// Must provide at least as much as target.
|
||||
RunGenerateBidWithReturnValueExpectingResult(
|
||||
@ -5289,10 +5329,9 @@ TEST_F(BidderWorkletTest, GenerateBidBrowserSignalSellerOrigin) {
|
||||
}
|
||||
|
||||
TEST_F(BidderWorkletTest, GenerateBidBrowserSignalsAdComponentsLimit) {
|
||||
// Without limit changed, the feature detection signal is not set, for best
|
||||
// backwards compatibility.
|
||||
// Default is now limit of 40.
|
||||
RunGenerateBidExpectingExpressionIsTrue(
|
||||
"!('adComponentsLimit' in browserSignals)");
|
||||
"browserSignals.adComponentsLimit === 40");
|
||||
}
|
||||
|
||||
TEST_F(BidderWorkletCustomAdComponentLimitTest,
|
||||
|
@ -17367,30 +17367,6 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"ProtectedAudiences40ComponentAds": [
|
||||
{
|
||||
"platforms": [
|
||||
"android",
|
||||
"chromeos",
|
||||
"chromeos_lacros",
|
||||
"fuchsia",
|
||||
"linux",
|
||||
"mac",
|
||||
"windows"
|
||||
],
|
||||
"experiments": [
|
||||
{
|
||||
"name": "Enabled",
|
||||
"params": {
|
||||
"FledgeAdComponentLimit": "40"
|
||||
},
|
||||
"enable_features": [
|
||||
"FledgeCustomMaxAuctionAdComponents"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ProtectedAudiencesHeaderDirectFromSellerSignalsStudy": [
|
||||
{
|
||||
"platforms": [
|
||||
|
3
third_party/blink/common/features.cc
vendored
3
third_party/blink/common/features.cc
vendored
@ -1006,8 +1006,7 @@ BASE_FEATURE(kFledgeSplitTrustedSignalsFetchingURL,
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
|
||||
const base::FeatureParam<int> kFledgeCustomMaxAuctionAdComponentsValue{
|
||||
&kFledgeCustomMaxAuctionAdComponents, "FledgeAdComponentLimit",
|
||||
kMaxAdAuctionAdComponentsDefault};
|
||||
&kFledgeCustomMaxAuctionAdComponents, "FledgeAdComponentLimit", 40};
|
||||
|
||||
BASE_FEATURE(kFledgeNumberBidderWorkletGroupByOriginContextsToKeep,
|
||||
"FledgeBidderWorkletGroupByOriginContextsToKeep",
|
||||
|
@ -1752,6 +1752,7 @@
|
||||
},
|
||||
{
|
||||
name: "FledgeCustomMaxAuctionAdComponents",
|
||||
status: "stable",
|
||||
},
|
||||
{
|
||||
// Enables using a 'deprecatedRenderURLReplacements' field within the
|
||||
|
Reference in New Issue
Block a user