Skip to content

Commit e81ca20

Browse files
annevkfoolip
authored andcommitted
HTML: target=_blank implies noopener; opener support (#15188)
For whatwg/html#4330.
1 parent 91b5bfb commit e81ca20

File tree

3 files changed

+84
-11
lines changed

3 files changed

+84
-11
lines changed
+17-11
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,34 @@
22
<html>
33
<head>
44
<meta charset=utf-8>
5-
<title>Test behavior of rel="noopener" links</title>
5+
<title>Test behavior of target=_blank links</title>
66
<script src=/resources/testharness.js></script>
77
<script src=/resources/testharnessreport.js></script>
88
</head>
99
<body>
10-
<a href="support/target_blank_iplicit_noopener.html?a1" id="a1" rel="noopener" target="_blank">Click me</a>
11-
<a href="support/target_blank_iplicit_noopener.html?a2" id="a2" rel="opener" target="_blank">Click me</a>
12-
<a href="support/target_blank_iplicit_noopener.html?a3" id="a3" target="_blank">Click me</a>
13-
<a href="support/target_blank_iplicit_noopener.html?a4" id="a4" rel="opener noopener" target="_blank">Click me</a>
14-
<a href="support/target_blank_iplicit_noopener.html?a5" id="a5" rel="noopener opener" target="_blank">Click me</a>
10+
<a href="support/target_blank_implicit_noopener.html?a1" id="a1" rel="noopener" target="_blank">Click me</a>
11+
<a href="support/target_blank_implicit_noopener.html?a2" id="a2" rel="opener" target="_blank">Click me</a>
12+
<a href="support/target_blank_implicit_noopener.html?a3" id="a3" target="_blank">Click me</a>
13+
<a href="support/target_blank_implicit_noopener.html?a4" id="a4" rel="opener noopener" target="_blank">Click me</a>
14+
<a href="support/target_blank_implicit_noopener.html?a5" id="a5" rel="noopener opener" target="_blank">Click me</a>
15+
<a href="support/target_blank_implicit_noopener.html?a6" id="a6" rel="noreferrer" target="_blank">Click me</a>
16+
<a href="support/target_blank_implicit_noopener.html?a7" id="a7" rel="opener noreferrer" target="_blank">Click me</a>
17+
<a href="support/target_blank_implicit_noopener.html?a8" id="a8" rel="noopener opener noreferrer" target="_blank">Click me</a>
1518

1619
<img src="/images/threecolors.png" />
17-
<area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area1" id="area1" rel="noopener" target="_blank" />
20+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area1" id="area1" rel="noopener" target="_blank" />
1821
</img>
1922
<img src="/images/threecolors.png" />
20-
<area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area2" id="area2" rel="opener" target="_blank" />
23+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area2" id="area2" rel="opener" target="_blank" />
2124
</img>
2225
<img src="/images/threecolors.png" />
23-
<area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area3" id="area3" target="_blank" />
26+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area3" id="area3" target="_blank" />
2427
</img>
2528
<img src="/images/threecolors.png" />
26-
<area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area4" id="area4" rel="opener noopener" target="_blank" />
29+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area4" id="area4" rel="opener noopener" target="_blank" />
2730
</img>
2831
<img src="/images/threecolors.png" />
29-
<area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area5" id="area5" rel="noopener opener" target="_blank" />
32+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area5" id="area5" rel="noopener opener" target="_blank" />
3033
</img>
3134

3235
<script>
@@ -37,6 +40,9 @@
3740
{ id: "a3", hasOpener: false, name: "Anchor element with target=_blank with implicit rel=noopener" },
3841
{ id: "a4", hasOpener: false, name: "Anchor element with target=_blank with rel=opener+noopener" },
3942
{ id: "a5", hasOpener: false, name: "Anchor element with target=_blank with rel=noopener+opener" },
43+
{ id: "a6", hasOpener: false, name: "Anchor element with target=_blank with rel=noreferrer" },
44+
{ id: "a7", hasOpener: false, name: "Anchor element with target=_blank with rel=opener+noreferrer" },
45+
{ id: "a8", hasOpener: false, name: "Anchor element with target=_blank with rel=noopener+opener+noreferrer" },
4046
{ id: "area1", hasOpener: false, name: "Area element with target=_blank with rel=noopener" },
4147
{ id: "area2", hasOpener: true, name: "Area element with target=_blank with rel=opener" },
4248
{ id: "area3", hasOpener: false, name: "Area element with target=_blank with implicit rel=noopener" },
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset=utf-8>
5+
<title>Test behavior of base target=_blank links</title>
6+
<script src=/resources/testharness.js></script>
7+
<script src=/resources/testharnessreport.js></script>
8+
<base target=_blank>
9+
</head>
10+
<body>
11+
<a href="support/target_blank_implicit_noopener.html?a1" id="a1" rel="noopener">Click me</a>
12+
<a href="support/target_blank_implicit_noopener.html?a2" id="a2" rel="opener">Click me</a>
13+
<a href="support/target_blank_implicit_noopener.html?a3" id="a3">Click me</a>
14+
<a href="support/target_blank_implicit_noopener.html?a4" id="a4" rel="opener noopener">Click me</a>
15+
<a href="support/target_blank_implicit_noopener.html?a5" id="a5" rel="noopener opener">Click me</a>
16+
<a href="support/target_blank_implicit_noopener.html?a6" id="a6" rel="noreferrer">Click me</a>
17+
<a href="support/target_blank_implicit_noopener.html?a7" id="a7" rel="opener noreferrer">Click me</a>
18+
<a href="support/target_blank_implicit_noopener.html?a8" id="a8" rel="noopener opener noreferrer">Click me</a>
19+
20+
<img src="/images/threecolors.png" />
21+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area1" id="area1" rel="noopener">
22+
</img>
23+
<img src="/images/threecolors.png" />
24+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area2" id="area2" rel="opener">
25+
</img>
26+
<img src="/images/threecolors.png" />
27+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area3" id="area3">
28+
</img>
29+
<img src="/images/threecolors.png" />
30+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area4" id="area4" rel="opener noopener">
31+
</img>
32+
<img src="/images/threecolors.png" />
33+
<area shape="rect" coords="0,0,99,50" href="support/target_blank_implicit_noopener.html?area5" id="area5" rel="noopener opener">
34+
</img>
35+
36+
<script>
37+
38+
let tests = [
39+
{ id: "a1", hasOpener: false, name: "Anchor element with base target=_blank with rel=noopener" },
40+
{ id: "a2", hasOpener: true, name: "Anchor element with base target=_blank with rel=opener" },
41+
{ id: "a3", hasOpener: false, name: "Anchor element with base target=_blank with implicit rel=noopener" },
42+
{ id: "a4", hasOpener: false, name: "Anchor element with base target=_blank with rel=opener+noopener" },
43+
{ id: "a5", hasOpener: false, name: "Anchor element with base target=_blank with rel=noopener+opener" },
44+
{ id: "a6", hasOpener: false, name: "Anchor element with base target=_blank with rel=noreferrer" },
45+
{ id: "a7", hasOpener: false, name: "Anchor element with base target=_blank with rel=opener+noreferrer" },
46+
{ id: "a8", hasOpener: false, name: "Anchor element with base target=_blank with rel=noopener+opener+noreferrer" },
47+
{ id: "area1", hasOpener: false, name: "Area element with base target=_blank with rel=noopener" },
48+
{ id: "area2", hasOpener: true, name: "Area element with base target=_blank with rel=opener" },
49+
{ id: "area3", hasOpener: false, name: "Area element with base target=_blank with implicit rel=noopener" },
50+
{ id: "area4", hasOpener: false, name: "Area element with base target=_blank with rel=opener+noopener" },
51+
{ id: "area5", hasOpener: false, name: "Area element with base target=_blank with rel=noopener+opener" },
52+
];
53+
54+
tests.forEach(data => {
55+
async_test(
56+
test => {
57+
let bc = new BroadcastChannel(data.id);
58+
bc.addEventListener("message", test.step_func_done(e => {
59+
assert_equals(e.data.hasOpener, data.hasOpener);
60+
}), {once: true});
61+
62+
document.getElementById(data.id).click();
63+
}, data.name);
64+
});
65+
</script>
66+
</body>
67+
</html>

0 commit comments

Comments
 (0)