mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Update web-platform-tests to revision 21461a83c51b72bcff82476c1b79a26a194e7bab
This commit is contained in:
parent
ea206034ad
commit
f96f9a1b78
61 changed files with 1372 additions and 376 deletions
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<title><form rel> with <base target></title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src=resources/reltester.js></script>
|
||||
<base target=_blank>
|
||||
<div id=log></div>
|
||||
<form action=resources/endpoint.html><input type=hidden name=channelname></form>
|
||||
<script>
|
||||
const submitter = document.querySelector("form"),
|
||||
channelInput = document.querySelector("input");
|
||||
relTester(submitter, channelInput, "<base target>");
|
||||
</script>
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<title><form rel> with <button formtarget></title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src=resources/reltester.js></script>
|
||||
<div id=log></div>
|
||||
<form action=resources/endpoint.html><input type=hidden name=channelname><button type=submit formtarget=_blank></form>
|
||||
<script>
|
||||
const submitter = document.querySelector("button"),
|
||||
channelInput = document.querySelector("input");
|
||||
relTester(submitter, channelInput, "<button formtarget>");
|
||||
</script>
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<title><form rel target></title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src=resources/reltester.js></script>
|
||||
<div id=log></div>
|
||||
<form action=resources/endpoint.html target=_blank><input type=hidden name=channelname></form>
|
||||
<script>
|
||||
const submitter = document.querySelector("form"),
|
||||
channelInput = document.querySelector("input");
|
||||
relTester(submitter, channelInput, "<form target>");
|
||||
</script>
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<title><form rel> with <input formtarget></title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src=resources/reltester.js></script>
|
||||
<base target=_blank>
|
||||
<div id=log></div>
|
||||
<form action=resources/endpoint.html><input type=hidden name=channelname><input type=submit formtarget=_blank></form>
|
||||
<script>
|
||||
const submitter = document.querySelector("input[type=submit]"),
|
||||
channelInput = document.querySelector("input");
|
||||
relTester(submitter, channelInput, "<input formtarget>");
|
||||
</script>
|
|
@ -0,0 +1,11 @@
|
|||
<script>
|
||||
const channelName = new URL(location).searchParams.get("channelname"),
|
||||
channel = new BroadcastChannel(channelName);
|
||||
channel.postMessage({ haveOpener: window.opener !== null,
|
||||
referrer: document.referrer });
|
||||
// Because messages are not delivered synchronously and because closing a
|
||||
// browsing context prompts the eventual clearing of all task sources, this
|
||||
// document should not be closed until the opener document has confirmed
|
||||
// receipt.
|
||||
channel.onmessage = () => window.close();
|
||||
</script>
|
|
@ -0,0 +1,65 @@
|
|||
function relTester(submitter, channelInput, title) {
|
||||
[
|
||||
{
|
||||
rel: "",
|
||||
exposed: "all"
|
||||
},
|
||||
{
|
||||
rel: "noopener",
|
||||
exposed: "noopener"
|
||||
},
|
||||
{
|
||||
rel: "noreferrer",
|
||||
exposed: "noreferrer"
|
||||
},
|
||||
{
|
||||
rel: "opener",
|
||||
exposed: "all"
|
||||
},
|
||||
{
|
||||
rel: "noopener noreferrer",
|
||||
exposed: "noreferrer"
|
||||
},
|
||||
{
|
||||
rel: "noreferrer opener",
|
||||
exposed: "noreferrer"
|
||||
},
|
||||
{
|
||||
rel: "opener noopener",
|
||||
exposed: "noopener"
|
||||
}
|
||||
].forEach(relTest => {
|
||||
// Use promise_test to submit only after one test concluded
|
||||
promise_test(t => {
|
||||
return new Promise(resolve => {
|
||||
const channelName = Date.now() + relTest.rel,
|
||||
channel = new BroadcastChannel(channelName);
|
||||
let form = submitter;
|
||||
if (submitter.localName !== "form") {
|
||||
form = submitter.form;
|
||||
}
|
||||
form.rel = relTest.rel;
|
||||
channelInput.value = channelName;
|
||||
if (submitter.localName !== "form") {
|
||||
submitter.click();
|
||||
} else {
|
||||
submitter.submit();
|
||||
}
|
||||
channel.onmessage = t.step_func(e => {
|
||||
if (relTest.exposed === "all" || relTest.exposed === "noopener") {
|
||||
assert_equals(e.data.referrer, window.location.href, "referrer");
|
||||
} else {
|
||||
assert_equals(e.data.referrer, "", "referrer");
|
||||
}
|
||||
if (relTest.exposed === "all") {
|
||||
assert_true(e.data.haveOpener, "opener");
|
||||
} else {
|
||||
assert_false(e.data.haveOpener, "opener");
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
t.add_cleanup(() => channel.postMessage(null));
|
||||
});
|
||||
}, `<form rel="${relTest.rel}"> with ${title}`);
|
||||
});
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue