blob: 611255f7374dae54994a2c3b20687765969d708f [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8"/>
<meta name="variant" content="">
<meta name="variant" content="?legacy-samesite">
<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 = "GET";
// If |target| contains a `redir` parameter, extract it, and add it
// to the form so it doesn't get dropped in the submission.
var url = new URL(f.action);
if (url.pathname = "/cookies/rfc6265/resources/redirectWithCORSHeaders.py") {
var i = document.createElement("input");
i.name = "location";
i.value = url.searchParams.get("location");
i.type = "hidden";
f.appendChild(i);
}
var reloaded = false;
var msgHandler = e => {
try {
getSameSiteVerifier()(expectedStatus, value, e.data, DomSameSiteStatus.SAME_SITE);
} 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(SECURE_ORIGIN, SECURE_ORIGIN, SameSiteStatus.STRICT, "Reloaded same-host top-level form GETs are strictly same-site");
create_test(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN, SameSiteStatus.STRICT, "Reloaded subdomain top-level form GETs are strictly same-site");
create_test(SECURE_CROSS_SITE_ORIGIN, SECURE_CROSS_SITE_ORIGIN, SameSiteStatus.LAX, "Reloaded cross-site top-level form GETs are laxly same-site");
</script>