<!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>