diff options
Diffstat (limited to 'testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html')
-rw-r--r-- | testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html b/testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html new file mode 100644 index 0000000000..5fe649d172 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/windows/noreferrer-window-name.html @@ -0,0 +1,86 @@ +<!doctype html> +<title>rel=noreferrer and reuse of names</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> + async_test(function(t) { + localStorage.clear() + + function makeHyperlink(n) { + var hyperlink = document.body.appendChild(document.createElement("a")) + hyperlink.rel = "noreferrer" + hyperlink.target = "sufficientlyrandomwindownameamiright" + hyperlink.href = "resources/noreferrer-window-name.html#" + n + return hyperlink + } + + var hyperlink1 = makeHyperlink(1), + hyperlink2 = makeHyperlink(2) + + t.add_cleanup(function() { + localStorage.setItem("x", "close") + localStorage.clear() + document.body.removeChild(hyperlink1) + document.body.removeChild(hyperlink2) + }) + + addEventListener("storage", function(e) { + t.step(function() { + if(localStorage.getItem("window1") && localStorage.getItem("window2")) { + localStorage.setItem("x", "close") + t.done() + } + }) + }) + + hyperlink1.click() + hyperlink2.click() + }, "Following a noreferrer link with a named target should not cause creation of a window that can be targeted by another noreferrer link with the same named target"); + + async_test(function(t) { + var ifr = document.createElement("iframe"); + ifr.name = "sufficientlyrandomwindownameamiright2"; + ifr.onload = t.step_func(function() { + var hyperlink = document.body.appendChild(document.createElement("a")); + t.add_cleanup(function() { + hyperlink.remove(); + }); + hyperlink.rel = "noreferrer"; + hyperlink.href = URL.createObjectURL(new Blob(["hello subframe"], + { type: "text/html"})); + hyperlink.target = "sufficientlyrandomwindownameamiright2"; + ifr.onload = t.step_func_done(function() { + assert_equals(ifr.contentDocument.documentElement.textContent, + "hello subframe"); + }); + hyperlink.click(); + }); + document.body.appendChild(ifr); + t.add_cleanup(function() { + ifr.remove(); + }); + }, "Targeting a rel=noreferrer link at an existing named subframe should work"); + + async_test(function(t) { + var win = window.open("", "sufficientlyrandomwindownameamiright3"); + t.add_cleanup(function() { + win.close(); + }); + + var hyperlink = document.body.appendChild(document.createElement("a")); + t.add_cleanup(function() { + hyperlink.remove(); + }); + hyperlink.rel = "noreferrer"; + hyperlink.href = URL.createObjectURL(new Blob(["hello window"], + { type: "text/html"})); + hyperlink.target = "sufficientlyrandomwindownameamiright3"; + win.onload = t.step_func_done(function() { + assert_equals(win.document.documentElement.textContent, + "hello window"); + }); + hyperlink.click(); + }, "Targeting a rel=noreferrer link at an existing named window should work"); +</script> |