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: Support saved queries in selectURL (#48868) We add support for saved queries, keyed by (`data_origin`, `script_url`, `operation_name`, `query_name`). When a named query is first invoked, the per page budgets are charged as usual, the index result is stored for later in case the query is reused from the same page. On query reuse, the previously calculated and stored index result will be used to select the URL at that index in the current list, and the per page budgets will not be re-charged. When the page is destroyed, all associated saved queries are also destroyed. See explainer update at https://github.com/WICG/shared-storage/pull/176 and spec updates at https://github.com/WICG/shared-storage/pull/188 https://github.com/WICG/shared-storage/pull/202 Bug: 367440966 Change-Id: I89fd7e65cd14c9d60d6ac53906f95593a2259a37 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5868889 Reviewed-by: Ken Buchanan <[email protected]> Reviewed-by: Yao Xiao <[email protected]> Commit-Queue: Cammie Smith Barnes <[email protected]> Cr-Commit-Position: refs/heads/main@{#1375507} Co-authored-by: Camillia Smith Barnes <[email protected]> -- wpt-commits: 3c0bfa31dc842d0dbce0e377bfd39a4aa0ec4fd9 wpt-pr: 48868
67 lines
2.4 KiB
HTML
67 lines
2.4 KiB
HTML
<!doctype html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/common/utils.js"></script>
|
|
<script src="/common/get-host-info.sub.js"></script>
|
|
<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
|
|
<script src="/shared-storage/resources/util.js"></script>
|
|
<script src="/fenced-frame/resources/utils.js"></script>
|
|
|
|
<body>
|
|
<script>
|
|
'use strict';
|
|
|
|
// Note that we have set the site page bit limit to 6 and the overall page
|
|
// bit limit to 12.
|
|
|
|
promise_test(async () => {
|
|
const queryKey = "query";
|
|
const mockResultKey = "mockresult";
|
|
const urlCountKey = "urlcount";
|
|
const moduleNameKey = "module";
|
|
const operationNameKey = "operation";
|
|
const expectSavedKey = "expectsaved";
|
|
const expectSuccessKey = "expectsuccess";
|
|
|
|
let url0 = new URL(
|
|
"/shared-storage/" +
|
|
"resources/select-url-saved-query-inner.https.sub.html",
|
|
location.href);
|
|
|
|
// Initiate a query to be saved.
|
|
url0.searchParams.append(queryKey, "query0");
|
|
url0.searchParams.append(mockResultKey, "2");
|
|
url0.searchParams.append(moduleNameKey, "simple-module");
|
|
url0.searchParams.append(operationNameKey, "test-slow-url-selection-operation");
|
|
url0.searchParams.append(urlCountKey, "4");
|
|
url0.searchParams.append(expectSavedKey, "false");
|
|
url0.searchParams.append(expectSuccessKey, "true");
|
|
const promise0 = attachIFrameWithEventListenerForSelectURLStatus(url0);
|
|
|
|
// Initiate a second query to be saved without waiting for the first.
|
|
let url1 = url0;
|
|
url1.searchParams.delete(queryKey);
|
|
url1.searchParams.append(queryKey, "query1");
|
|
url1.searchParams.delete(mockResultKey);
|
|
url1.searchParams.append(mockResultKey, "1");
|
|
const promise1 = attachIFrameWithEventListenerForSelectURLStatus(url1);
|
|
|
|
// Reuse the first query while the initial two queries are still resolving.
|
|
let url2 = url0;
|
|
url2.searchParams.delete(expectSavedKey);
|
|
url2.searchParams.append(expectSavedKey, "true");
|
|
const promise2 = attachIFrameWithEventListenerForSelectURLStatus(url2);
|
|
|
|
// Reuse the second query.
|
|
let url3 = url1;
|
|
url3.searchParams.delete(expectSavedKey);
|
|
url3.searchParams.append(expectSavedKey, "true");
|
|
const promise3 = attachIFrameWithEventListenerForSelectURLStatus(url3);
|
|
|
|
// Wait for all the promises to resolve.
|
|
await Promise.all([promise0, promise1, promise2, promise3]);
|
|
|
|
}, 'for selectURL(), multiple saved queries can be handled simultaneously.');
|
|
</script>
|
|
</body>
|