diff options
Diffstat (limited to 'testing/web-platform/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html')
-rw-r--r-- | testing/web-platform/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/testing/web-platform/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html b/testing/web-platform/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html new file mode 100644 index 0000000000..b71c368704 --- /dev/null +++ b/testing/web-platform/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html @@ -0,0 +1,63 @@ +<!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'; + +function getCrossSiteURL(url) { + return new URL(url.toString().replace(location.origin, + get_host_info().HTTPS_NOTSAMESITE_ORIGIN)); +} + +promise_test(async () => { + const ancestorKey = token(); + const perOriginBitLimit = 6; + const bitsKey = "bits"; + + let url0 = generateURL( + "/shared-storage-selecturl-limit/" + + "resources/run-url-selection-operation-limit-inner.https.html", + [ancestorKey]); + + // The per site per pageload limit is 6 bits. + url0.searchParams.append(bitsKey, perOriginBitLimit.toString()); + attachIFrame(url0); + const result0 = await nextValueFromServer(ancestorKey); + assert_equals(result0, "run_url_selection_limit_inner_succeeded"); + + let url1 = generateURL( + "/shared-storage-selecturl-limit/" + + "resources/run-url-selection-operation-limit-inner.https.html", + [ancestorKey]); + + // The overall pageload budget should have 3 bits remaining, as we have set + // it to start at 9. + url1.searchParams.append(bitsKey, "3"); + url1 = getCrossSiteURL(url1); + attachIFrame(url1); + const result1 = await nextValueFromServer(ancestorKey); + assert_equals(result1, "run_url_selection_limit_inner_succeeded"); + + let url2 = generateURL( + "/shared-storage-selecturl-limit/" + + "resources/run-url-selection-operation-limit-inner.https.html", + [ancestorKey]); + + // Since the overall per pageload limit is 9 bits here, it should have + // already been reached, even though `url2`'s site should have 3 bits + // remaining in the per-site budget, since it is same-site with `url1`. + url2.searchParams.append(bitsKey, "0"); + url2 = getCrossSiteURL(url2); + attachIFrame(url2); + const result2 = await nextValueFromServer(ancestorKey); + assert_equals(result2, "run_url_selection_limit_inner_succeeded"); +}, 'selectURL() with overall per-pageload limit'); +</script> +</body> |