diff options
Diffstat (limited to 'testing/web-platform/tests/html/browsers/history/the-history-interface/history_reload_referrer-2.html')
-rw-r--r-- | testing/web-platform/tests/html/browsers/history/the-history-interface/history_reload_referrer-2.html | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/history/the-history-interface/history_reload_referrer-2.html b/testing/web-platform/tests/html/browsers/history/the-history-interface/history_reload_referrer-2.html new file mode 100644 index 0000000000..d85517a15f --- /dev/null +++ b/testing/web-platform/tests/html/browsers/history/the-history-interface/history_reload_referrer-2.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<html> + <head> + <title> + Ensure referrer header persists after + history.pushState/replaceState/fragment navigation and reload + </title> + </head> + <body> + <a id="fragment" href="#fragment">fragment</a> + <noscript><p>Enable JavaScript and reload</p></noscript> + <div id="log"></div> + <script type="text/javascript"> + const step = localStorage.getItem("history_reload_referrer_step") || "1"; + localStorage.setItem("history_reload_referrer_step", parseInt(step) + 1); + + var httpReferer = unescape("{{headers[referer]}}"); + var expectedReferrer = location.href.replace( + /\/[^\/]*$/, + "\/history_reload_referrer-1.html" + ); + + parent.test(function () { + parent.assert_equals(httpReferer, expectedReferrer); + }, `Step ${step}: Checking HTTP referrer (is "${httpReferer}")`); + parent.test(function () { + parent.assert_equals(document.referrer, expectedReferrer); + }, `Step ${step}: Checking document.referrer (is "${httpReferer}")`); + + switch (step) { + case "1": + history.pushState("", "", location); + location.reload(); + break; + + case "2": + history.replaceState("", "", location); + location.reload(); + break; + + case "3": + document.getElementById("fragment").click(); + location.reload(); + break; + + case "4": + localStorage.removeItem("history_reload_referrer_step"); + parent.done(); + break; + + default: + throw new Error(`Unexpected step "${step}"`); + } + </script> + </body> +</html> |