servo/tests/wpt/web-platform-tests/cookies/samesite/iframe-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>
<!-- We're appending an <iframe> to the document's body, so execute tests after we have a body -->
<body>
<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 iframe = document.createElement("iframe");
iframe.onerror = _ => reject("IFrame could not be loaded.");
var reloaded = false;
var msgHandler = e => {
try {
verifySameSiteCookieState(expectedStatus, value, e.data);
} catch (e) {
reject(e);
}
if (reloaded) {
window.removeEventListener("message", msgHandler);
document.body.removeChild(iframe);
resolve("IFrame received the cookie.");
} else {
reloaded = true;
e.source.postMessage("reload", "*");
}
};
window.addEventListener("message", msgHandler);
iframe.src = target + "/cookies/resources/postToParent.py";
document.body.appendChild(iframe);
});
});
}, title);
}
create_test(ORIGIN, ORIGIN, SameSiteStatus.STRICT, "Reloaded same-host fetches are strictly same-site");
create_test(SUBDOMAIN_ORIGIN, SUBDOMAIN_ORIGIN, SameSiteStatus.STRICT, "Reloaded subdomain fetches are strictly same-site");
create_test(CROSS_SITE_ORIGIN, CROSS_SITE_ORIGIN, SameSiteStatus.CROSS_SITE, "Reloaded cross-site fetches are cross-site");
</script>