diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html new file mode 100644 index 0000000000..95ab1c81fb --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html @@ -0,0 +1,78 @@ +<!doctype html> +<meta charset=utf-8> +<title>Test behavior of rel="noopener" links</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<iframe name="oursubframe"></iframe> +<a href="support/noopener-target-2.html" rel="noopener" target="ourpopup"></a> +<a href="support/noopener-target-2.html" rel="noopener" target="oursubframe"></a> +<script> +var tests = []; +// First test the special targets +function target1Loaded(win) { + // Find the relevant test + var test = tests.find((t) => t.openedWindow == win); + test.step(function() { + assert_equals(win.opener, window); + win.close(); + test.done(); + }); +} +/** + * Test that <a rel="noopener"> targeted at one of _self, _parent, _top does the + * load in the appropriate existing browsing context instead of opening a new + * one. The test is run in a separate popup window we open and which we can + * navigate without causing the test harness going into conniptions. + */ +for (var target of ["self", "parent", "top"]) { + var t = async_test("Check that rel=noopener with target=_" + target + " does a normal load"); + tests.push(t); + t.openedWindow = window.open("support/noopener-popup.html"); + t.targetName = target; + t.openedWindow.onload = t.step_func(function() { + this.openedWindow.findLink(this.targetName).click(); + }); +} + +/** + * And now check that a noopener load targeted at something other than one of + * the three special targets above is still able to reuse existing things with the + * given name. We do this in two ways. First, by opening a window named + * "ourpopup" and then doing a load via <a rel="noopener" target="ourpopup"> and + * verifying that the load happens in a window with a null opener, etc, while + * the opener of the thing we opened is not modified. And second, by targeting + * <a rel="noopener"> at a name that an existing subframe has, and ensuring that + * this subframe is not navigated. + */ +var t1 = async_test("Check that targeting of rel=noopener with a given name reuses an existing window with that name"); +var w; +t1.add_cleanup(function() { w.close(); }); +var channel = new BroadcastChannel("ourpopup"); +channel.onmessage = t1.step_func_done(function(e) { + var data = e.data; + assert_true(data.hasOpener); + assert_false(data.hasParent); + assert_equals(data.name, "ourpopup"); + assert_equals(w.opener, window); + assert_not_equals(w.location.href, "about:blank"); +}); +t1.step(function() { + w = window.open("", "ourpopup"); + assert_equals(w.opener, window); + document.querySelectorAll("a")[0].click(); +}); + +var t2 = async_test("Check that targeting of rel=noopener with a given name reuses an existing subframe with that name"); +var channel = new BroadcastChannel("oursubframe"); +channel.onmessage = t2.step_func_done(function(e) { + var data = e.data; + assert_false(data.hasOpener); + assert_true(data.hasParent); + assert_equals(data.name, "oursubframe"); + assert_not_equals(document.querySelector("iframe").contentWindow.location.href, + "about:blank"); +}); +t2.step(function() { + document.querySelectorAll("a")[1].click(); +}); +</script> |