summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fenced-frame/csp-blocked.https.html
diff options
context:
space:
mode:
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.html84
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>