diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html | |
parent | Initial commit. (diff) | |
download | firefox-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.html | 78 |
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> |