mirror of
https://github.com/HeyPuter/firefox.git
synced 2026-11-13 20:14:57 -10:00
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
47 lines
1.9 KiB
HTML
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>
|