commit c3f7c6c25567350ffc5612d448ef62b734fb01e2 parent 1e66975721ed69400e10318fdd119aac11f4c678 Author: jim <zijin@ualberta.ca> Date: Mon, 13 Oct 2025 13:01:01 +0000 Bug 1886894 - Skip originScope check when the site name is empty. 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");