diff options
Diffstat (limited to 'testing/web-platform/tests/fenced-frame/csp-blocked.https.html')
-rw-r--r-- | testing/web-platform/tests/fenced-frame/csp-blocked.https.html | 84 |
1 files changed, 51 insertions, 33 deletions
diff --git a/testing/web-platform/tests/fenced-frame/csp-blocked.https.html b/testing/web-platform/tests/fenced-frame/csp-blocked.https.html index 3826fdd7f4..197c624937 100644 --- a/testing/web-platform/tests/fenced-frame/csp-blocked.https.html +++ b/testing/web-platform/tests/fenced-frame/csp-blocked.https.html @@ -1,65 +1,83 @@ <!DOCTYPE html> <title>Test opaque fenced frame navigations with disallowed CSP blocked</title> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/utils.js"></script> <script src="resources/utils.js"></script> +<script src="/common/dispatcher/dispatcher.js"></script> <body> <script> +const blockedCSPs = [ + "'none'", + "'self'", + "data:", + "https://*", + "https://*:80", + "https://b.test:*" +]; for (const resolve_to_config of [true, false]) { - const blockedCSPs = ["'none'", "'self'", "data:", "https://*", "https://*:80", - "https://b.test:*"]; blockedCSPs.forEach((csp) => { - promise_test(async() => { - setupCSP(csp); - + promise_test(async(t) => { + const iframe = setupCSP(csp); const key = token(); - window.addEventListener('securitypolicyviolation', function(e) { - // Write to the server even though the listener is in the same file in - // the test below. - writeValueToServer(key, e.violatedDirective + ";" + e.blockedURI); - }, {once: true}); - attachFencedFrame(await runSelectURL("resources/embeddee.html", - [key], resolve_to_config)); + await iframe.execute(async(key, resolve_to_config, csp) => { + let promise = new Promise((resolve) => { + window.addEventListener('securitypolicyviolation', function(e) { + resolve(e.violatedDirective + ";" + e.blockedURI); + }, {once: true}); + }); - const result = await nextValueFromServer(key); - assert_equals(result, "fenced-frame-src;", - "The fenced frame should not load for CSP fenced-frame-src " + csp); - }, "Fenced frame blocked for CSP fenced-frame-src " + csp + " using " + - (resolve_to_config ? "config" : "urn:uuid")); + attachFencedFrame(await runSelectURL( + "/fenced-frame/resources/embeddee.html", [key], resolve_to_config)); - promise_test(async() => { - setupCSP(csp); - assert_false(navigator.canLoadAdAuctionFencedFrame()); - }, "Opaque-ads can load API returns false for " + csp + " using " + + await promise.then((result) => { + assert_equals(result, "fenced-frame-src;", + "The fenced frame should not load for CSP fenced-frame-src " + + csp); + }); + }, [key, resolve_to_config, csp]); + }, "Fenced frame blocked for CSP fenced-frame-src " + csp + " using " + (resolve_to_config ? "config" : "urn:uuid")); }); - promise_test(async() => { - setupCSP("*", "'self'"); - + promise_test(async(t) => { + const iframe = setupCSP("*", "'self'"); const key = token(); - window.addEventListener('securitypolicyviolation', function(e) { - // Write to the server even though the listener is in the same file in - // the test below. - writeValueToServer(key, e.violatedDirective + ";" + e.blockedURI); - }, {once: true}); - attachFencedFrame(await runSelectURL("resources/embeddee.html", - [key], resolve_to_config)); + await iframe.execute(async(key, resolve_to_config) => { + window.addEventListener('securitypolicyviolation', function(e) { + // Write to the server even though the listener is in the same file in + // the test below. + writeValueToServer(key, e.violatedDirective + ";" + e.blockedURI); + }, {once: true}); + attachFencedFrame(await runSelectURL("resources/embeddee.html", + [key], resolve_to_config)); + }, [key, resolve_to_config]); const result = await nextValueFromServer(key); assert_equals(result, "fenced-frame-src;", "The fenced frame should not load for CSP frame-src 'self' even if " + "another CSP allows loading a fenced frame."); - // Test the canLoadOpaqueURL API to ensure it arrives at the same result. - assert_false(navigator.canLoadAdAuctionFencedFrame()); + await iframe.execute(() => { + // Test the canLoadOpaqueURL API to ensure it arrives at the same result. + assert_false(navigator.canLoadAdAuctionFencedFrame()); + }); }, "Fenced frame not loaded using " + (resolve_to_config ? "config" : "urn:uuid") + " if any of CSPs in place disallow loading"); } + +blockedCSPs.forEach((csp) => { + promise_test(async() => { + const iframe = setupCSP(csp); + await iframe.execute(() => { + assert_false(navigator.canLoadAdAuctionFencedFrame()); + }) + }, "Opaque-ads can load API returns false for " + csp); +}); </script> </body> |