blob: eb234c4afa853f7eb34abe6b892d1007a5175548 [file] [log] [blame]
var ORIGINAL_HOST = "example.test";
var TEST_ROOT = "not-example.test";
var TEST_HOST = "cookies." + TEST_ROOT;
var TEST_SUB = "subdomain." + TEST_HOST;
var STRICT_DOM = "strict_from_dom";
var IMPLICIT_STRICT_DOM = "implicit_strict_from_dom";
var STRICT_BECAUSE_INVALID_SAMESITE_VALUE = "strict_because_invalid_SameSite_value";
var LAX_DOM = "lax_from_dom";
var NORMAL_DOM = "normal_from_dom";
// Clear the three well-known cookies.
function clearKnownCookies() {
var cookies = [ STRICT_DOM, LAX_DOM, NORMAL_DOM, IMPLICIT_STRICT_DOM, STRICT_BECAUSE_INVALID_SAMESITE_VALUE ];
cookies.forEach(c => { document.cookie = c + "=0; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/"; });
}
function normalizeCookie(cookie)
{
return cookie.split(/;\s*/).sort().join("; ");
}
function with_iframe(url) {
return new Promise(function(resolve) {
var frame = document.createElement('iframe');
frame.src = url;
frame.onload = function() { setTimeout(() => resolve(frame), 0); };
document.body.appendChild(frame);
});
}
function loadPopupThenTriggerPost()
{
let finish;
let promise = new Promise(resolve => finish = resolve);
clearKnownCookies();
document.cookie = LAX_DOM + "=1; SameSite=Lax; Max-Age=100; path=/";
document.cookie = NORMAL_DOM + "=1; Max-Age=100; path=/";
document.cookie = STRICT_DOM + "=1; SameSite=Strict; Max-Age=100; path=/";
const opener = window.open("http://127.0.0.1:8000/cookies/resources/post-cookies-to-opener.py")
window.onmessage = e => {
window.onmessage = e => {
opener.close();
finish(e.data);
};
const newDoc = opener.document;
var form = newDoc.createElement('form');
form.method = 'POST';
form.action = 'http://127.0.0.1:8000/cookies/resources/post-cookies-to-opener.py';
var input = newDoc.createElement('input');
input.name = 'name';
input.value = 'value';
form.appendChild(input);
newDoc.body.appendChild(form);
form.submit();
};
return promise;
}
function openPopupAndTriggerPost(popupURL, callback)
{
let finish;
let promise = new Promise(resolve => finish = resolve);
clearKnownCookies();
document.cookie = LAX_DOM + "=1; SameSite=Lax; Max-Age=100; path=/";
document.cookie = NORMAL_DOM + "=1; Max-Age=100; path=/";
document.cookie = STRICT_DOM + "=1; SameSite=Strict; Max-Age=100; path=/";
window.addEventListener("message", e => {
opener.close();
finish(e.data);
});
const opener = window.open(popupURL)
const newDoc = opener.document;
var form = newDoc.createElement('form');
form.method = 'POST';
form.action = 'http://127.0.0.1:8000/cookies/resources/post-cookies-to-opener.py';
var input = newDoc.createElement('input');
input.name = 'name';
input.value = 'value';
form.appendChild(input);
newDoc.body.appendChild(form);
form.submit();
return promise;
}