Backed out changeset c7c93c34f516 (bug 1928672) Backed out changeset 4e6a8bea3574 (bug 1922020) Backed out changeset 11718a55e298 (bug 1922020) Backed out changeset ff0655d8a6a9 (bug 1922020) Backed out changeset cabd41ab53e4 (bug 1922020) Backed out changeset 88eac74dbe86 (bug 1922020) Backed out changeset ea5096fafb29 (bug 1922020) Backed out changeset 852d8a2132c8 (bug 1922020) Backed out changeset e66184701c85 (bug 1922020) Backed out changeset f52eb9bf4d08 (bug 1922020)
85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
"use strict";
|
|
|
|
const SCRIPT_URL = SimpleTest.getTestFileURL("file_chromecommon.js");
|
|
|
|
var gExpectedCookies;
|
|
var gExpectedLoads;
|
|
|
|
var gPopup;
|
|
|
|
var gScript;
|
|
|
|
var gLoads = 0;
|
|
|
|
function setupTest(uri, cookies, loads) {
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
var prefSet = new Promise(resolve => {
|
|
SpecialPowers.pushPrefEnv(
|
|
{
|
|
set: [
|
|
["network.cookie.cookieBehavior", 1],
|
|
// cookieBehavior 1 allows cookies from chrome script if we enable
|
|
// exceptions.
|
|
// Bug 1617611: Fix all the tests broken by "cookies SameSite=lax by default"
|
|
["network.cookie.sameSite.laxByDefault", false],
|
|
],
|
|
},
|
|
resolve
|
|
);
|
|
});
|
|
|
|
gScript = SpecialPowers.loadChromeScript(SCRIPT_URL);
|
|
gExpectedCookies = cookies;
|
|
gExpectedLoads = loads;
|
|
|
|
// Listen for MessageEvents.
|
|
window.addEventListener("message", messageReceiver);
|
|
|
|
prefSet.then(() => {
|
|
// load a window which contains an iframe; each will attempt to set
|
|
// cookies from their respective domains.
|
|
gPopup = window.open(uri, "hai", "width=100,height=100");
|
|
});
|
|
}
|
|
|
|
function finishTest() {
|
|
gScript.destroy();
|
|
SpecialPowers.clearUserPref("network.cookie.sameSite.laxByDefault");
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
/** Receives MessageEvents to this window. */
|
|
// Count and check loads.
|
|
function messageReceiver(evt) {
|
|
is(evt.data, "message", "message data received from popup");
|
|
if (evt.data != "message") {
|
|
gPopup.close();
|
|
window.removeEventListener("message", messageReceiver);
|
|
|
|
finishTest();
|
|
return;
|
|
}
|
|
|
|
// only run the test when all our children are done loading & setting cookies
|
|
if (++gLoads == gExpectedLoads) {
|
|
gPopup.close();
|
|
window.removeEventListener("message", messageReceiver);
|
|
|
|
runTest();
|
|
}
|
|
}
|
|
|
|
// runTest() is run by messageReceiver().
|
|
// Count and check cookies.
|
|
function runTest() {
|
|
// set a cookie from a domain of "localhost"
|
|
document.cookie = "oh=hai";
|
|
|
|
gScript.addMessageListener("getCookieCountAndClear:return", ({ count }) => {
|
|
is(count, gExpectedCookies, "total number of cookies");
|
|
finishTest();
|
|
});
|
|
gScript.sendAsyncMessage("getCookieCountAndClear");
|
|
}
|