servo/tests/wpt/web-platform-tests/cookies/samesite/form-post-blank-reload.html

47 lines
1.8 KiB
HTML

<!DOCTYPE html>
<meta charset="utf-8"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/cookies/resources/cookie-helper.sub.js"></script>
<script>
function create_test(origin, target, expectedStatus, title) {
promise_test(t => {
var value = "" + Math.random();
return resetSameSiteCookies(origin, value)
.then(_ => {
return new Promise((resolve, reject) => {
var f = document.createElement('form');
f.action = target + "/cookies/resources/postToParent.py";
f.target = "_blank";
f.method = "POST";
var reloaded = false;
var msgHandler = e => {
try {
verifySameSiteCookieState(expectedStatus, value, e.data);
} catch (e) {
reject(e);
}
if (reloaded) {
window.removeEventListener("message", msgHandler);
e.source.close();
resolve("Popup received the cookie.");
} else {
reloaded = true;
e.source.postMessage("reload", "*");
}
};
window.addEventListener("message", msgHandler);
document.body.appendChild(f);
f.submit();
});
});
}, title);
}
create_test(ORIGIN, ORIGIN, SameSiteStatus.STRICT, "Reloaded same-host top-level form POSTs are strictly same-site");
create_test(SUBDOMAIN_ORIGIN, SUBDOMAIN_ORIGIN, SameSiteStatus.STRICT, "Reloaded subdomain top-level form POSTs are strictly same-site");
create_test(CROSS_SITE_ORIGIN, CROSS_SITE_ORIGIN, SameSiteStatus.CROSS_SITE, "Reloaded cross-site top-level form POSTs are not same-site");
</script>