Files
firefox/testing/web-platform/tests/shared-storage/select-url-saved-query-same-origin-multi-query.tentative.https.sub.html
Blink WPT Bot 014e7a255c Bug 1927941 [wpt PR 48868] - Shared Storage: Support saved queries in selectURL, a=testonly
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
2024-10-30 16:10:46 +00:00

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>