From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/browser/browser_sanitize.js | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 browser/components/originattributes/test/browser/browser_sanitize.js (limited to 'browser/components/originattributes/test/browser/browser_sanitize.js') diff --git a/browser/components/originattributes/test/browser/browser_sanitize.js b/browser/components/originattributes/test/browser/browser_sanitize.js new file mode 100644 index 0000000000..61d236f249 --- /dev/null +++ b/browser/components/originattributes/test/browser/browser_sanitize.js @@ -0,0 +1,92 @@ +/** + * Bug 1270338 - Add a mochitest to ensure Sanitizer clears data for all containers + */ + +if (SpecialPowers.useRemoteSubframes) { + requestLongerTimeout(4); +} + +const CC = Components.Constructor; + +const TEST_DOMAIN = "https://example.net/"; + +async function setCookies(aBrowser) { + await SpecialPowers.spawn(aBrowser, [], function () { + content.document.cookie = "key=value"; + }); +} + +function cacheDataForContext(loadContextInfo) { + return new Promise(resolve => { + let cachedURIs = []; + let cacheVisitor = { + onCacheStorageInfo(num, consumption) {}, + onCacheEntryInfo(uri, idEnhance) { + cachedURIs.push(uri.asciiSpec); + }, + onCacheEntryVisitCompleted() { + resolve(cachedURIs); + }, + QueryInterface: ChromeUtils.generateQI(["nsICacheStorageVisitor"]), + }; + // Visiting the disk cache also visits memory storage so we do not + // need to use Services.cache2.memoryCacheStorage() here. + let storage = Services.cache2.diskCacheStorage(loadContextInfo); + storage.asyncVisitStorage(cacheVisitor, true); + }); +} + +async function checkCookiesSanitized(aBrowser) { + await SpecialPowers.spawn(aBrowser, [], function () { + Assert.equal( + content.document.cookie, + "", + "Cookies of all origin attributes should be cleared." + ); + }); +} + +function checkCacheExists(aShouldExist) { + return async function () { + let loadContextInfos = [ + Services.loadContextInfo.default, + Services.loadContextInfo.custom(false, { userContextId: 1 }), + Services.loadContextInfo.custom(false, { userContextId: 2 }), + Services.loadContextInfo.custom(false, { + firstPartyDomain: "example.com", + }), + Services.loadContextInfo.custom(false, { + firstPartyDomain: "example.org", + }), + ]; + let i = 0; + for (let loadContextInfo of loadContextInfos) { + let cacheURIs = await cacheDataForContext(loadContextInfo); + is( + cacheURIs.includes(TEST_DOMAIN), + aShouldExist, + TEST_DOMAIN + + " should " + + (aShouldExist ? "not " : "") + + "be cached for all origin attributes." + + i++ + ); + } + }; +} + +add_setup(async function () { + Services.cache2.clear(); +}); + +// This will set the cookies and the cache. +IsolationTestTools.runTests(TEST_DOMAIN, setCookies, () => true); + +add_task(checkCacheExists(true)); + +add_task(async function sanitize() { + await Sanitizer.sanitize(["cookies", "cache"]); +}); + +add_task(checkCacheExists(false)); +IsolationTestTools.runTests(TEST_DOMAIN, checkCookiesSanitized, () => true); -- cgit v1.2.3