290 lines
8.7 KiB
JavaScript
290 lines
8.7 KiB
JavaScript
const { SiteDataTestUtils } = ChromeUtils.importESModule(
|
|
"resource://testing-common/SiteDataTestUtils.sys.mjs"
|
|
);
|
|
|
|
add_setup(async function () {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["privacy.sanitize.sanitizeOnShutdown", true],
|
|
["privacy.clearOnShutdown.cookies", true],
|
|
["privacy.clearOnShutdown.offlineApps", true],
|
|
["privacy.clearOnShutdown.cache", false],
|
|
["privacy.clearOnShutdown.sessions", false],
|
|
["privacy.clearOnShutdown.history", false],
|
|
["privacy.clearOnShutdown.formdata", false],
|
|
["privacy.clearOnShutdown.downloads", false],
|
|
["privacy.clearOnShutdown.siteSettings", false],
|
|
["browser.sanitizer.loglevel", "All"],
|
|
],
|
|
});
|
|
});
|
|
// 2 domains: www.mozilla.org (session-only) mozilla.org (allowed) - after the
|
|
// cleanp, mozilla.org must have data.
|
|
add_task(async function subDomains1() {
|
|
info("Test subdomains and custom setting");
|
|
|
|
// Let's clean up all the data.
|
|
await new Promise(resolve => {
|
|
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve);
|
|
});
|
|
|
|
// Domains and data
|
|
let originA = "https://www.mozilla.org";
|
|
PermissionTestUtils.add(
|
|
originA,
|
|
"cookie",
|
|
Ci.nsICookiePermission.ACCESS_SESSION
|
|
);
|
|
|
|
SiteDataTestUtils.addToCookies({ origin: originA });
|
|
await SiteDataTestUtils.addToIndexedDB(originA);
|
|
|
|
let originB = "https://mozilla.org";
|
|
PermissionTestUtils.add(
|
|
originB,
|
|
"cookie",
|
|
Ci.nsICookiePermission.ACCESS_ALLOW
|
|
);
|
|
|
|
SiteDataTestUtils.addToCookies({ origin: originB });
|
|
await SiteDataTestUtils.addToIndexedDB(originB);
|
|
|
|
// Check
|
|
ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originA),
|
|
"We have IDB for " + originA
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originB),
|
|
"We have IDB for " + originB
|
|
);
|
|
|
|
// Cleaning up
|
|
await Sanitizer.runSanitizeOnShutdown();
|
|
|
|
// Check again
|
|
ok(
|
|
!SiteDataTestUtils.hasCookies(originA),
|
|
"We should not have cookies for " + originA
|
|
);
|
|
ok(
|
|
!(await SiteDataTestUtils.hasIndexedDB(originA)),
|
|
"We should not have IDB for " + originA
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originB),
|
|
"We have IDB for " + originB
|
|
);
|
|
|
|
// Cleaning up permissions
|
|
PermissionTestUtils.remove(originA, "cookie");
|
|
PermissionTestUtils.remove(originB, "cookie");
|
|
});
|
|
|
|
// session only cookie life-time, 2 domains (sub.mozilla.org, www.mozilla.org),
|
|
// only the former has a cookie permission.
|
|
add_task(async function subDomains2() {
|
|
info("Test subdomains and custom setting with cookieBehavior == 2");
|
|
|
|
// Let's clean up all the data.
|
|
await new Promise(resolve => {
|
|
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve);
|
|
});
|
|
|
|
// Domains and data
|
|
let originA = "https://sub.mozilla.org";
|
|
PermissionTestUtils.add(
|
|
originA,
|
|
"cookie",
|
|
Ci.nsICookiePermission.ACCESS_ALLOW
|
|
);
|
|
|
|
SiteDataTestUtils.addToCookies({ origin: originA });
|
|
await SiteDataTestUtils.addToIndexedDB(originA);
|
|
|
|
let originB = "https://www.mozilla.org";
|
|
|
|
SiteDataTestUtils.addToCookies({ origin: originB });
|
|
await SiteDataTestUtils.addToIndexedDB(originB);
|
|
|
|
// Check
|
|
ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originA),
|
|
"We have IDB for " + originA
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originB),
|
|
"We have IDB for " + originB
|
|
);
|
|
|
|
// Cleaning up
|
|
await Sanitizer.runSanitizeOnShutdown();
|
|
|
|
// Check again
|
|
ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originA),
|
|
"We have IDB for " + originA
|
|
);
|
|
ok(
|
|
!SiteDataTestUtils.hasCookies(originB),
|
|
"We should not have cookies for " + originB
|
|
);
|
|
ok(
|
|
!(await SiteDataTestUtils.hasIndexedDB(originB)),
|
|
"We should not have IDB for " + originB
|
|
);
|
|
|
|
// Cleaning up permissions
|
|
PermissionTestUtils.remove(originA, "cookie");
|
|
});
|
|
|
|
// session only cookie life-time, 3 domains (sub.mozilla.org, www.mozilla.org, mozilla.org),
|
|
// only the former has a cookie permission. Both sub.mozilla.org and mozilla.org should
|
|
// be sustained.
|
|
add_task(async function subDomains3() {
|
|
info(
|
|
"Test base domain and subdomains and custom setting with cookieBehavior == 2"
|
|
);
|
|
|
|
// Let's clean up all the data.
|
|
await new Promise(resolve => {
|
|
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve);
|
|
});
|
|
|
|
// Domains and data
|
|
let originA = "https://sub.mozilla.org";
|
|
PermissionTestUtils.add(
|
|
originA,
|
|
"cookie",
|
|
Ci.nsICookiePermission.ACCESS_ALLOW
|
|
);
|
|
SiteDataTestUtils.addToCookies({ origin: originA });
|
|
await SiteDataTestUtils.addToIndexedDB(originA);
|
|
|
|
let originB = "https://mozilla.org";
|
|
SiteDataTestUtils.addToCookies({ origin: originB });
|
|
await SiteDataTestUtils.addToIndexedDB(originB);
|
|
|
|
let originC = "https://www.mozilla.org";
|
|
SiteDataTestUtils.addToCookies({ origin: originC });
|
|
await SiteDataTestUtils.addToIndexedDB(originC);
|
|
|
|
// Check
|
|
ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originA),
|
|
"We have IDB for " + originA
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originB),
|
|
"We have IDB for " + originB
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originC), "We have cookies for " + originC);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originC),
|
|
"We have IDB for " + originC
|
|
);
|
|
|
|
// Cleaning up
|
|
await Sanitizer.runSanitizeOnShutdown();
|
|
|
|
// Check again
|
|
ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originA),
|
|
"We have IDB for " + originA
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originB),
|
|
"We have IDB for " + originB
|
|
);
|
|
ok(
|
|
!SiteDataTestUtils.hasCookies(originC),
|
|
"We should not have cookies for " + originC
|
|
);
|
|
ok(
|
|
!(await SiteDataTestUtils.hasIndexedDB(originC)),
|
|
"We should not have IDB for " + originC
|
|
);
|
|
|
|
// Cleaning up permissions
|
|
PermissionTestUtils.remove(originA, "cookie");
|
|
});
|
|
|
|
// clear on shutdown, 3 domains (sub.sub.mozilla.org, sub.mozilla.org, mozilla.org),
|
|
// only the former has a cookie permission. Both sub.mozilla.org and mozilla.org should
|
|
// be sustained due to Permission of sub.sub.mozilla.org
|
|
add_task(async function subDomains4() {
|
|
info("Test subdomain cookie permission inheritance with two subdomains");
|
|
|
|
// Let's clean up all the data.
|
|
await new Promise(resolve => {
|
|
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve);
|
|
});
|
|
|
|
// Domains and data
|
|
let originA = "https://sub.sub.mozilla.org";
|
|
PermissionTestUtils.add(
|
|
originA,
|
|
"cookie",
|
|
Ci.nsICookiePermission.ACCESS_ALLOW
|
|
);
|
|
SiteDataTestUtils.addToCookies({ origin: originA });
|
|
await SiteDataTestUtils.addToIndexedDB(originA);
|
|
|
|
let originB = "https://sub.mozilla.org";
|
|
SiteDataTestUtils.addToCookies({ origin: originB });
|
|
await SiteDataTestUtils.addToIndexedDB(originB);
|
|
|
|
let originC = "https://mozilla.org";
|
|
SiteDataTestUtils.addToCookies({ origin: originC });
|
|
await SiteDataTestUtils.addToIndexedDB(originC);
|
|
|
|
// Check
|
|
ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originA),
|
|
"We have IDB for " + originA
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originB),
|
|
"We have IDB for " + originB
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originC), "We have cookies for " + originC);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originC),
|
|
"We have IDB for " + originC
|
|
);
|
|
|
|
// Cleaning up
|
|
await Sanitizer.runSanitizeOnShutdown();
|
|
|
|
// Check again
|
|
ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originA),
|
|
"We have IDB for " + originA
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originB),
|
|
"We have IDB for " + originB
|
|
);
|
|
ok(SiteDataTestUtils.hasCookies(originC), "We have cookies for " + originC);
|
|
ok(
|
|
await SiteDataTestUtils.hasIndexedDB(originC),
|
|
"We have IDB for " + originC
|
|
);
|
|
|
|
// Cleaning up permissions
|
|
PermissionTestUtils.remove(originA, "cookie");
|
|
});
|