summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html')
-rw-r--r--testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html36
1 files changed, 36 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html
new file mode 100644
index 0000000000..d01ef4c77a
--- /dev/null
+++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>
+ Set location from a parent, then do a fragment navigation from within the
+ frame.
+</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe></iframe>
+<script>
+ promise_test(async test => {
+ // Wait for the DOM to be ready before inserting an <iframe> into it.
+ await new Promise(resolve => { onload = resolve });
+ // Insert an <iframe> and wait for a dummy document to be loaded into it.
+ let iframe = document.createElement("iframe");
+ iframe.src = "support/dummy.html";
+ let iframe_loaded = new Promise(resolve => { iframe.onload = resolve });
+ document.body.appendChild(iframe);
+ await iframe_loaded;
+ // The referrer is the main frame's URL since it initiated the iframe
+ // creation.
+ assert_equals(iframe.contentDocument.referrer, document.URL);
+ // Do a fragment navigation from the frame, which will fire the
+ // 'hashchange' function.
+ let hash_changed = new Promise(resolve => {
+ iframe.contentWindow.onhashchange = resolve
+ });
+ let navigateScript = iframe.contentDocument.createElement("script");
+ navigateScript.innerHTML = "location.href = '#foo'";
+ iframe.contentDocument.body.appendChild(navigateScript);
+ await hash_changed;
+ // The referrer stays the same, even when the last navigation was
+ // initiated by the iframe (instead of the main frame document).
+ assert_equals(iframe.contentDocument.referrer, document.URL);
+ });
+</script>