summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fenced-frame/fragment-navigation.https.html
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/fenced-frame/fragment-navigation.https.html
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/fenced-frame/fragment-navigation.https.html')
-rw-r--r--testing/web-platform/tests/fenced-frame/fragment-navigation.https.html50
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fenced-frame/fragment-navigation.https.html b/testing/web-platform/tests/fenced-frame/fragment-navigation.https.html
new file mode 100644
index 0000000000..1d548e35da
--- /dev/null
+++ b/testing/web-platform/tests/fenced-frame/fragment-navigation.https.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<title>Test that embedder-initiated fragment navigations are forced to be cross-document.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<script>
+async function runTest(first_url_opaque, second_url_opaque) {
+ const frame = await attachFencedFrameContext({generator_api: 'fledge'});
+ let base_url = frame.src;
+ let fragment_url = base_url + "#foo";
+
+ if (first_url_opaque) {
+ base_url = await generateURNFromFledge(base_url, []);
+ }
+
+ if (second_url_opaque) {
+ fragment_url = await generateURNFromFledge(fragment_url, []);
+ }
+
+ // Start the fenced frame at about:blank.
+ await frame.execute(() => {
+ window.executor.suspend(() => { location.href = "about:blank"; });
+ });
+
+ // Navigate the fenced frame to the base url from the embedder, and then
+ // suspend the remote executor.
+ frame.src = base_url;
+ await frame.execute(() => { window.executor.suspend(() => {}); });
+
+ // Navigate the fenced frame to the fragment url from the embedder. Now
+ // the remote executor will only exist if the navigation wasn't considered
+ // same-document.
+ frame.src = fragment_url;
+ await frame.execute(() => {});
+}
+
+promise_test(async () => { await runTest(true, true); },
+ "opaque to opaque fragment navigation");
+promise_test(async () => { await runTest(true, false); },
+ "opaque to transparent fragment navigation");
+promise_test(async () => { await runTest(false, true); },
+ "transparent to opaque fragment navigation");
+promise_test(async () => { await runTest(false, false); },
+ "transparent to transparent fragment navigation");
+</script>
+</body>