Skip to content

Commit

Permalink
Correct <form target=_blank> tests for noopener defaulting
Browse files Browse the repository at this point in the history
See whatwg/html#7256 for context.
  • Loading branch information
annevk committed Oct 25, 2021
1 parent 3311333 commit 2c3823e
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
<body>
<form action='/content-security-policy/support/postmessage-pass-to-opener.html'
id='form_id'
target="_blank">
target="_blank"
rel="opener">
</form>

<p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,9 @@
</script>
</head>
<body onload="OnDocumentLoaded();">
<form id="form" method="GET" target="_blank">
<form id="form" method="GET" target="_blank" rel="opener">
<input type="hidden" name="message" value="DocumentNotBlocked">
<input type="submit" id="submit">
</form>
</body>
</html>

Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@
</script>
</head>
<body onload="OnDocumentLoaded();">
<form id="form" method="POST" target="_blank">
<form id="form" method="POST" target="_blank" rel="opener">
<input type="submit" id="submit">
</form>
</body>
</html>

Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
function formUsesTargetBlank(submitter) {
if (submitter.formTarget && submitter.formTarget === "_blank") {
return true;
}
if (submitter.form && submitter.form.target === "_blank") {
return true;
}
if (submitter.target && submitter.target === "_blank") {
return true;
}
if (submitter.getRootNode().querySelector("base").target === "_blank") {
return true;
}
return false;
}

function relTester(submitter, channelInput, title) {
[
{
Expand Down Expand Up @@ -51,7 +67,8 @@ function relTester(submitter, channelInput, title) {
} else {
assert_equals(e.data.referrer, "", "referrer");
}
if (relTest.exposed === "all") {
// When rel is not explicitly given, account for target=_blank defaulting to noopener
if (relTest.exposed === "all" && !(relTest.rel === "" && formUsesTargetBlank(submitter))) {
assert_true(e.data.haveOpener, "opener");
} else {
assert_false(e.data.haveOpener, "opener");
Expand Down

0 comments on commit 2c3823e

Please sign in to comment.