blob: 57498533ff964c4e8aedbee407196b74d49831ac [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="/cookies/resources/cookie-utilities.js"></script>
</head>
<body onload="setTimeout('run()', 0)">
<div id="description">Tests setting all of a site's cookies to SameSite=strict.</div>
<br>
<div id="output"></div>
<br>
<script>
testRunner.waitUntilDone();
testRunner.dumpAsText();
function sortStringArray(a, b) {
a = a.toLowerCase();
b = b.toLowerCase();
return a > b ? 1 : b > a ? -1 : 0;
}
function addLinebreakToOutput() {
let element = document.createElement("br");
output.appendChild(element);
}
function addOutput(message) {
let element = document.createElement("div");
element.innerText = message;
output.appendChild(element);
}
function stringifyCookieProperties(cookie, isBefore) {
let cookieString = "'" + cookie.name + (isBefore ? "' 1 Before Change --" : "' 2 After Change ---");
if (cookie.domain)
cookieString += " domain: '" + cookie.domain + "'";
if (cookie.path)
cookieString += " path: '" + cookie.path + "'";
if (cookie.expires)
cookieString += " expiry set";
if (cookie.isHttpOnly)
cookieString += " isHttpOnly: '" + cookie.isHttpOnly + "'";
if (cookie.isSecure)
cookieString += " isSecure: '" + cookie.isSecure + "'";
if (cookie.isSession)
cookieString += " isSession: '" + cookie.isSession + "'";
if (cookie.isSameSiteNone)
cookieString += " isSameSiteNone: '" + cookie.isSameSiteNone + "'";
if (cookie.isSameSiteLax)
cookieString += " isSameSiteLax: '" + cookie.isSameSiteLax + "'";
if (cookie.isSameSiteStrict)
cookieString += " isSameSiteStrict: '" + cookie.isSameSiteStrict + "'";
return cookieString;
}
let cookiesBeforeChange;
let cookiesAfterChange;
function checkCookies() {
if (!cookiesBeforeChange.length) {
addOutput("FAIL: No cookies found before change.");
testRunner.notifyDone();
return;
}
if (!cookiesBeforeChange.length || !cookiesAfterChange.length) {
addOutput("FAIL: No cookies found after change.");
testRunner.notifyDone();
return;
}
if (cookiesBeforeChange.length !== cookiesAfterChange.length) {
addOutput("FAIL: Not the same amount of cookies before and after change.");
testRunner.notifyDone();
return;
}
let unsortedTestPassedMessages = [];
for (let i = 0; i < cookiesBeforeChange.length; ++i) {
unsortedTestPassedMessages.push(stringifyCookieProperties(cookiesBeforeChange[i], true));
unsortedTestPassedMessages.push(stringifyCookieProperties(cookiesAfterChange[i], false));
}
let sortedTestPassedMessages = unsortedTestPassedMessages.sort(sortStringArray);
let row = 1;
for (let testPassedMessage of sortedTestPassedMessages) {
addOutput(testPassedMessage);
if (row % 2 === 0)
addLinebreakToOutput();
++row;
}
}
function run() {
fetch("resources/set-all-kinds-of-cookies.php?dummy=" + Math.random())
.then(() => {
document.cookie = "clientSideCookie=1";
cookiesBeforeChange = internals.getCookies();
testRunner.statisticsSetToSameSiteStrictCookies("http://127.0.0.1:8000", function () {
cookiesAfterChange = internals.getCookies();
checkCookies();
testRunner.notifyDone();
});
})
}
</script>
</body>
</html>