diff options
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.html | 36 |
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> |