Files
firefox/testing/web-platform/tests/shared-storage/select-url-on-two-worklets.tentative.https.sub.html
Yao Xiao 562baf5285 Bug 1875220 [wpt PR 44060] - [shared storage] Allow creating multiple worklets per Window context, a=testonly
Automatic update from web-platform-tests
[shared storage] Allow creating multiple worklets per Window context

Explainer PR: https://github.com/WICG/shared-storage/pull/130

How:
- Introduce sharedStorage.createWorklet() method. In this patch,
we still restrict the script to same origin. Ultimately, we will
support cross-origin script/worklet (for the createWorklet() API).
- Also, move the document service Remote to a window supplement
class: This is a forward-looking change (e.g. it'll enable
constructing the worklet via `new SharedStorageWorklet()` / not
needing to exist along with the `sharedStorage` object, although
this isn't in the current proposal).

Bug: 1218540
Change-Id: I5bf64bdf6648a76875748b194e5dbceeb1400624
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5209102
Reviewed-by: Dominic Farolino <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Commit-Queue: Yao Xiao <[email protected]>
Reviewed-by: Cammie Smith Barnes <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1257412}

--

wpt-commits: a973f277c12becac99d26f79d1a51e3f2efd452a
wpt-pr: 44060
2024-02-13 08:17:44 +00:00

47 lines
1.9 KiB
HTML

<!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 () => {
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 worklet0 = await sharedStorage.createWorklet("/shared-storage/resources/simple-module.js");
let worklet1 = await sharedStorage.createWorklet("/shared-storage/resources/simple-module.js");
let select_url_result0 = await worklet0.selectURL(
"increment-global-variable-and-return-original-value-operation",
[{url: url0}, {url: url1}], {resolveToConfig: true, keepAlive: true});
assert_true(validateSelectURLResult(select_url_result0, true));
attachFencedFrame(select_url_result0, 'opaque-ads');
const result0 = await nextValueFromServer(ancestor_key);
assert_equals(result0, "frame0_loaded");
let select_url_result1 = await worklet1.selectURL(
"increment-global-variable-and-return-original-value-operation",
[{url: url0}, {url: url1}], {resolveToConfig: true, keepAlive: true});
assert_true(validateSelectURLResult(select_url_result1, true));
attachFencedFrame(select_url_result1, 'opaque-ads');
const result1 = await nextValueFromServer(ancestor_key);
// This indicates that the prior worklet0.selectURL and worklet1.selectURL ran
// in two different worklet environments, as they did not share the global
// variable.
assert_equals(result1, "frame0_loaded");
}, 'selectURL() on two explicitly created SharedStorageWorklet. The two ' +
'calls should run in two different worklet environments.');
</script>
</body>