108 lines
3.3 KiB
JavaScript
108 lines
3.3 KiB
JavaScript
"use strict";
|
|
|
|
// This test will run all combinations of CookieBehavior. So, request a longer
|
|
// timeout here
|
|
requestLongerTimeout(3);
|
|
|
|
const COOKIE_BEHAVIORS = [
|
|
Ci.nsICookieService.BEHAVIOR_ACCEPT,
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_FOREIGN,
|
|
Ci.nsICookieService.BEHAVIOR_REJECT,
|
|
Ci.nsICookieService.BEHAVIOR_LIMIT_FOREIGN,
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER,
|
|
Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN,
|
|
];
|
|
|
|
async function verifyCookieBehavior(browser, expected) {
|
|
await SpecialPowers.spawn(
|
|
browser,
|
|
[{ expected, page: TEST_3RD_PARTY_PAGE }],
|
|
async obj => {
|
|
is(
|
|
content.document.cookieJarSettings.cookieBehavior,
|
|
obj.expected,
|
|
"The tab in the window has the expected CookieBehavior."
|
|
);
|
|
|
|
// Create an 3rd party iframe and check the cookieBehavior.
|
|
let ifr = content.document.createElement("iframe");
|
|
let loading = new content.Promise(resolve => {
|
|
ifr.onload = resolve;
|
|
});
|
|
content.document.body.appendChild(ifr);
|
|
ifr.src = obj.page;
|
|
await loading;
|
|
|
|
await SpecialPowers.spawn(
|
|
ifr.browsingContext,
|
|
[obj.expected],
|
|
async expected => {
|
|
is(
|
|
content.document.cookieJarSettings.cookieBehavior,
|
|
expected,
|
|
"The iframe in the window has the expected CookieBehavior."
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
|
|
add_task(async function () {
|
|
for (let regularCookieBehavior of COOKIE_BEHAVIORS) {
|
|
for (let PBMCookieBehavior of COOKIE_BEHAVIORS) {
|
|
await SpecialPowers.flushPrefEnv();
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["network.cookie.cookieBehavior", regularCookieBehavior],
|
|
["network.cookie.cookieBehavior.pbmode", PBMCookieBehavior],
|
|
["dom.security.https_first_pbm", false],
|
|
],
|
|
});
|
|
|
|
info(
|
|
` Start testing with regular cookieBehavior(${regularCookieBehavior}) and PBM cookieBehavior(${PBMCookieBehavior})`
|
|
);
|
|
|
|
info(" Open a tab in regular window.");
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
TEST_TOP_PAGE
|
|
);
|
|
|
|
info(
|
|
" Verify if the tab in regular window has the expected cookieBehavior."
|
|
);
|
|
await verifyCookieBehavior(tab.linkedBrowser, regularCookieBehavior);
|
|
BrowserTestUtils.removeTab(tab);
|
|
|
|
info(" Open a tab in private window.");
|
|
let pb_win = await BrowserTestUtils.openNewBrowserWindow({
|
|
private: true,
|
|
});
|
|
|
|
tab = await BrowserTestUtils.openNewForegroundTab(
|
|
pb_win.gBrowser,
|
|
TEST_TOP_PAGE
|
|
);
|
|
|
|
let expectPBMCookieBehavior = PBMCookieBehavior;
|
|
|
|
// The private cookieBehavior will mirror the regular pref if the regular
|
|
// pref has a user value and the private pref doesn't have a user pref.
|
|
if (
|
|
Services.prefs.prefHasUserValue("network.cookie.cookieBehavior") &&
|
|
!Services.prefs.prefHasUserValue("network.cookie.cookieBehavior.pbmode")
|
|
) {
|
|
expectPBMCookieBehavior = regularCookieBehavior;
|
|
}
|
|
|
|
info(
|
|
" Verify if the tab in private window has the expected cookieBehavior."
|
|
);
|
|
await verifyCookieBehavior(tab.linkedBrowser, expectPBMCookieBehavior);
|
|
BrowserTestUtils.removeTab(tab);
|
|
await BrowserTestUtils.closeWindow(pb_win);
|
|
}
|
|
}
|
|
});
|