From a5ac3a97181ab0144f4c6c191c42f31e2a2becd5 Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Tue, 22 Oct 2024 21:57:44 +0000 Subject: [PATCH] Bug 1925059 [wpt PR 48650] - [shared storage] Implement interestGroup(), a=testonly Automatic update from web-platform-tests [shared storage] Implement interestGroup() Add interestGroups() to the shared storage worklet, to return the Protected Audience interest groups associated with the shared storage origin's owner, with some additional metadata. Implement this behind a runtime feature, which is implicitly controlled by a Finch flag. Explainer PR: https://github.com/WICG/shared-storage/pull/180 Spec PR(s): 1) https://github.com/WICG/turtledove/pull/1299 2) https://github.com/WICG/shared-storage/pull/203 Bug: 367992703 Binary-Size: Size increase is unavoidable. Fuchsia-Binary-Size: Size increase is unavoidable. Change-Id: I5fc5767fa53a91f021d64a871a6dd9cb88f4431c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5696046 Reviewed-by: Daniel Cheng Commit-Queue: Yao Xiao Cr-Commit-Position: refs/heads/main{#1369483} -- wpt-commits: eb87bbbacf996ab46607538a72ea0adaee229e7a wpt-pr: 48650 UltraBlame original commit: 94a35dfacf6d42d04039e6c44dc8f2c1c3ff56c3 --- .../interest-groups.tentative.https.sub.html | 339 ++++++++++++++++++ .../shared-storage/resources/simple-module.js | 135 +++++++ 2 files changed, 474 insertions(+) create mode 100644 testing/web-platform/tests/shared-storage/interest-groups.tentative.https.sub.html diff --git a/testing/web-platform/tests/shared-storage/interest-groups.tentative.https.sub.html b/testing/web-platform/tests/shared-storage/interest-groups.tentative.https.sub.html new file mode 100644 index 0000000000000..4f98c40971519 --- /dev/null +++ b/testing/web-platform/tests/shared-storage/interest-groups.tentative.https.sub.html @@ -0,0 +1,339 @@ +< +! +doctype +html +> +< +script +src += +" +/ +resources +/ +testharness +. +js +" +> +< +/ +script +> +< +script +src += +" +/ +resources +/ +testharnessreport +. +js +" +> +< +/ +script +> +< +script +src += +" +/ +common +/ +utils +. +js +" +> +< +/ +script +> +< +script +src += +" +/ +shared +- +storage +/ +resources +/ +util +. +js +" +> +< +/ +script +> +< +script +src += +" +/ +fenced +- +frame +/ +resources +/ +utils +. +js +" +> +< +/ +script +> +< +body +> +< +script +> +' +use +strict +' +; +promise_test +( +async +t += +> +{ +const +ig += +{ +owner +: +window +. +location +. +origin +name +: +' +default +name +' +lifetimeMs +: +100000 +} +; +await +navigator +. +joinAdInterestGroup +( +ig +) +; +await +sharedStorage +. +worklet +. +addModule +( +' +resources +/ +simple +- +module +. +js +' +) +; +const +ancestor_key += +token +( +) +; +let +url0 += +generateURL +( +" +/ +shared +- +storage +/ +resources +/ +frame0 +. +html +" +[ +ancestor_key +] +) +; +let +url1 += +generateURL +( +" +/ +shared +- +storage +/ +resources +/ +frame1 +. +html +" +[ +ancestor_key +] +) +; +let +select_url_result += +await +sharedStorage +. +selectURL +( +" +verify +- +interest +- +groups +" +[ +{ +url +: +url0 +} +{ +url +: +url1 +} +] +{ +data +: +{ +' +expectedOwner +' +: +ig +. +owner +' +expectedName +' +: +ig +. +name +} +resolveToConfig +: +true +} +) +; +assert_true +( +validateSelectURLResult +( +select_url_result +true +) +) +; +attachFencedFrame +( +select_url_result +' +opaque +- +ads +' +) +; +const +result += +await +nextValueFromServer +( +ancestor_key +) +; +/ +/ +This +indicates +that +interestGroups +( +) +returns +expected +result +. +assert_equals +( +result +" +frame1_loaded +" +) +; +} +' +Basic +test +for +interestGroups +( +) +in +the +shared +storage +worklet +' +) +; +< +/ +script +> +< +/ +body +> diff --git a/testing/web-platform/tests/shared-storage/resources/simple-module.js b/testing/web-platform/tests/shared-storage/resources/simple-module.js index 6258f6d074fa9..06710c8555a4e 100644 --- a/testing/web-platform/tests/shared-storage/resources/simple-module.js +++ b/testing/web-platform/tests/shared-storage/resources/simple-module.js @@ -283,6 +283,129 @@ return ; } } +class +VerifyInterestGroups +{ +async +run +( +urls +data +) +{ +if +( +data +& +& +data +. +hasOwnProperty +( +' +expectedOwner +' +) +& +& +data +. +hasOwnProperty +( +' +expectedName +' +) +) +{ +const +groups += +await +interestGroups +( +) +; +if +( +groups +. +length +! += += +1 +) +{ +return +- +1 +; +} +if +( +groups +[ +0 +] +[ +" +owner +" +] +! += += +data +[ +' +expectedOwner +' +] +) +{ +return +- +1 +; +} +if +( +groups +[ +0 +] +[ +" +name +" +] +! += += +data +[ +' +expectedName +' +] +) +{ +return +- +1 +; +} +return +1 +; +} +return +- +1 +; +} +} register ( ' @@ -345,3 +468,15 @@ found VerifyKeyNotFound ) ; +register +( +' +verify +- +interest +- +groups +' +VerifyInterestGroups +) +;