summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js')
-rw-r--r--testing/web-platform/tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js b/testing/web-platform/tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js
new file mode 100644
index 0000000000..ccaa41f9ef
--- /dev/null
+++ b/testing/web-platform/tests/html/anonymous-iframe/require-corp-embed-anonymous-iframe.tentative.https.window.js
@@ -0,0 +1,49 @@
+// META: script=/common/utils.js
+
+promise_test(async t => {
+ let iframe_allowed = (iframe) => new Promise(async resolve => {
+ window.addEventListener("message", t.step_func(msg => {
+ if (msg.source !== iframe.contentWindow) return;
+ assert_equals(msg.data, "loaded",
+ "Unexpected message from broadcast channel.");
+ resolve(true);
+ }));
+
+ // To see whether the iframe was blocked, we check whether it
+ // becomes cross-origin (since error pages are loaded cross-origin).
+ await t.step_wait(() => {
+ try {
+ // Accessing contentWindow.location.href cross-origin throws.
+ iframe.contentWindow.location.href === null;
+ return false;
+ } catch {
+ return true;
+ }
+ });
+ resolve(false);
+ });
+
+ // Create a credentialless child iframe.
+ const child = document.createElement("iframe");
+ child.credentialless = true;
+ t.add_cleanup(() => child.remove());
+
+ child.src = "/html/cross-origin-embedder-policy/resources/" +
+ "navigate-none.sub.html?postMessageTo=top";
+ document.body.append(child);
+
+ assert_true(await iframe_allowed(child),
+ "The credentialless iframe should be allowed.");
+
+ // Create a child of the credentialless iframe. Even if the grandchild
+ // does not have the 'credentialless' attribute set, it inherits the
+ // credentialless property from the parent.
+ const grandchild = child.contentDocument.createElement("iframe");
+
+ grandchild.src = "/html/cross-origin-embedder-policy/resources/" +
+ "navigate-none.sub.html?postMessageTo=top";
+ child.contentDocument.body.append(grandchild);
+
+ assert_true(await iframe_allowed(grandchild),
+ "The child of the credentialless iframe should be allowed.");
+}, 'Loading a credentialless iframe with COEP: require-corp is allowed.');