Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!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 expectSavedKey = "expectsaved";
const expectSuccessKey = "expectsuccess";
let url0 = new URL(
"/shared-storage/" +
"resources/select-url-saved-query-inner.https.sub.html",
location.href);
// We don't expect success because the operation definition has an
// intentional error and will reject. Hence the default index (0) will be
// returned and will also be stored for later use.
url0.searchParams.append(queryKey, "query");
url0.searchParams.append(mockResultKey, "2");
url0.searchParams.append(moduleNameKey, "erroneous-function-module");
url0.searchParams.append(urlCountKey, "4");
url0.searchParams.append(expectSavedKey, "false");
url0.searchParams.append(expectSuccessKey, "false");
await attachIFrameWithEventListenerForSelectURLStatus(url0);
// Re-using the query will retrieve the default index.
let url1 = url0;
url1.searchParams.delete(expectSavedKey);
url1.searchParams.append(expectSavedKey, "true");
await attachIFrameWithEventListenerForSelectURLStatus(url1);
// Verify that worklet was run exactly once.
const ancestorKey = token();
const urls = generateUrls(2, "/shared-storage/resources/frame",
[ancestorKey]);
const worklet = await sharedStorage.createWorklet(
'/shared-storage/resources/erroneous-function-module.js');
let config = await worklet.selectURL('verify-run-attempts', urls,
{resolveToConfig: true});
assert_true(config instanceof FencedFrameConfig);
attachFencedFrame(config, 'opaque-ads');
const result = await nextValueFromServer(ancestorKey);
assert_equals(result, 'frame1_loaded', "expected 1 run attempt");
}, 'for selectURL(), a saved query stores the default index on rejection.');
</script>
</body>