62 lines
2.4 KiB
HTML
62 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 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>
|