commit 642862cc005336f5415ac47c934c2b581f172258 parent a315c687a53916f96d862e83021db8543395b2cc Author: jim <zijin@ualberta.ca> Date: Mon, 6 Oct 2025 21:48:52 +0000 Bug 1886894 - Add clearAllForPattern attribute to nsIClearBySiteEntry Interface to clear sessionStorage accross all origins with a given pattern. r=robwu,dom-storage-reviewers,asuth Differential Revision: https://phabricator.services.mozilla.com/D259184 Diffstat:
3 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/dom/storage/StorageObserver.cpp b/dom/storage/StorageObserver.cpp @@ -376,9 +376,11 @@ StorageObserver::Observe(nsISupports* aSubject, const char* aTopic, NS_ENSURE_SUCCESS(rv, rv); nsCString originScope; - rv = GetOriginScope(NS_ConvertUTF8toUTF16(schemelessSite).get(), - originScope); - NS_ENSURE_SUCCESS(rv, rv); + if (!schemelessSite.IsEmpty()) { + rv = GetOriginScope(NS_ConvertUTF8toUTF16(schemelessSite).get(), + originScope); + NS_ENSURE_SUCCESS(rv, rv); + } Notify(aTopic, patternJSON, originScope); } else if (aData) { diff --git a/toolkit/components/extensions/parent/ext-browsingData.js b/toolkit/components/extensions/parent/ext-browsingData.js @@ -216,10 +216,7 @@ const clearLocalStorage = async function (options) { Ci.nsIClearBySiteEntry ); - //TODO: currently, passing cookieStoreId with empty hostname is not supported because - // CreateReversedDomain will reject empty string. entry.schemelessSite = hostname || ""; - entry.patternJSON = cookieStoreId ? JSON.stringify( getOriginAttributesPatternForCookieStoreId(cookieStoreId) diff --git a/toolkit/components/extensions/test/mochitest/test_ext_browsingData_sessionStorage.html b/toolkit/components/extensions/test/mochitest/test_ext_browsingData_sessionStorage.html @@ -84,7 +84,7 @@ add_task(async function testLocalStorage() { if (SpecialPowers.Services.domStorageManager.nextGenLocalStorageEnabled) { await sendMessageToTabs(tabs, "resetSessionStorage"); await sendMessageToTabs(tabs, "checkSessionStorageSet"); - // TODO: passing only the cookieStoreId is not supported, it will not delete anything. + // Now passing only the cookieStoreId should clear all sessionStorage for that container await browser.browsingData.removeLocalStorage({ cookieStoreId: "firefox-container-1", }); @@ -93,7 +93,7 @@ add_task(async function testLocalStorage() { // TODO: containers support is lacking on GeckoView (Bug 1643740) if (!navigator.userAgent.includes("Android")) { - await browser.tabs.sendMessage(tabs["https://test1.example.org/"].id, "checkSessionStorageSet"); + await browser.tabs.sendMessage(tabs["https://test1.example.org/"].id, "checkSessionStorageCleared"); } await sendMessageToTabs(tabs, "resetSessionStorage");