summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html')
-rw-r--r--testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html30
1 files changed, 30 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html b/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html
new file mode 100644
index 0000000000..2b70375a14
--- /dev/null
+++ b/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="i"></iframe>
+<body>
+<script>
+async_test(t => {
+ let starting_history_length = history.length;
+ let iframe_url = (new URL("/common/blank.html", location.href)).href;
+ i.src = iframe_url;
+
+ history.pushState("a", "", "#a");
+ assert_equals(history.length, starting_history_length + 1, "First history length");
+
+ i.onload = t.step_func(() => {
+ assert_equals(history.length, starting_history_length + 1, "Second history length");
+ assert_equals(i.contentWindow.location.href, iframe_url);
+ assert_equals(location.hash, "#a");
+ history.back();
+ // Wait a while for a back navigation. Since all of the possible outcomes
+ // are either same-document or navigating to about:blank, this doesn't need
+ // to wait terribly long.
+ t.step_timeout(t.step_func_done(() => {
+ assert_equals(location.hash, "", "top frame should have navigated back");
+ assert_equals(i.contentWindow.location.href, iframe_url, "iframe should not have navigated");
+ }), 100);
+ });
+}, "pushState() in parent while child is doing initial navigation, then go back");
+</script>
+</body>