summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html
parentInitial commit. (diff)
downloadfirefox-esr-upstream.tar.xz
firefox-esr-upstream.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html')
-rw-r--r--testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html78
1 files changed, 78 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html b/testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html
new file mode 100644
index 0000000000..da64304031
--- /dev/null
+++ b/testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<script src="/common/utils.js"></script>
+<title>history-length-outer-page-navigation-not-reflected-in-fenced</title>
+
+<body>
+<script>
+const fenced_history_length_key = token();
+const outer_page_ready_for_next_navigation_key = token();
+
+async function runTest(embed_scope_reporting) {
+ const kAssertionDesc = "history.length Should never reflect the length " +
+ "of joint session history that occured outside " +
+ "of the fenced frame tree. history.length will " +
+ "always return 1."
+
+ ////////////// BEGIN NAVIGATIONS
+ // This block performs a sequence of 'kNavigationLimit' navigations in:
+ // -- the outer page
+ const kNavigationLimit = 5
+
+ const url = new URL(location.href);
+
+ // First, perform some real navigations as well as history.pushState to this
+ // same page. Normally this would increase `history.length`.
+ if (url.searchParams.get("navigationCount") == null)
+ url.searchParams.append("navigationCount", 1);
+
+ let navigationCount = parseInt(url.searchParams.get("navigationCount"));
+
+ if (navigationCount <= kNavigationLimit) {
+ url.searchParams.set('navigationCount', ++navigationCount);
+ location.href = url;
+ history.pushState({} , "");
+ return;
+ }
+ ////////////// END
+
+ // Append an iframe to the outer page for subsequent navigations within
+ // the iframe
+ const iframe = document.createElement('iframe');
+ const embed_scope_iframe = "outer_page::iframe";
+ iframe.src = generateURL("resources/history-length-outer-page-navigation-" +
+ "not-reflected-in-fenced-inner.html",
+ [fenced_history_length_key, outer_page_ready_for_next_navigation_key,
+ embed_scope_iframe, null]);
+ document.body.append(iframe);
+
+ await nextValueFromServer(outer_page_ready_for_next_navigation_key);
+
+ // Append a fenced frame to observe 'history.length' and report it back
+ // to the outer page
+ const embed_scope_fenced_frame = "outer_page::fenced_frame";
+ attachFencedFrame(generateURL(
+ "resources/history-length-outer-page-navigation-" +
+ "not-reflected-in-fenced-inner.html",
+ [fenced_history_length_key, outer_page_ready_for_next_navigation_key,
+ embed_scope_fenced_frame, embed_scope_reporting])
+ );
+
+ // Wait for the 'embed_scope_reporting' to report 'history.length'
+ let result = await nextValueFromServer(fenced_history_length_key);
+ assert_equals(result, "PASS > " + " history.length: 1", kAssertionDesc);
+}
+
+promise_test(async () => {
+ await runTest("outer_page::fenced_frame");
+}, "history.length should not reflect navigations within outer page in " +
+ "fenced frame");
+
+promise_test(async () => {
+ await runTest("outer_page::fenced_frame::iframe");
+}, "history.length should not reflect navigations within outer page in " +
+ "fenced frame nexted iframe");
+</script>
+</body>