Bug 2034944 - Filter cookieStore change events by per-host domain-match in CookieStoreNotifier, r=necko-reviewers,valentin,baku

Differential Revision: https://phabricator.services.mozilla.com/D297135
This commit is contained in:
Kershaw Chang
2026-06-02 07:16:10 +00:00
committed by kjang@mozilla.com
parent 82b2e13b45
commit d0b8a022bc
2 changed files with 14 additions and 2 deletions
+12 -2
View File
@@ -47,13 +47,18 @@ already_AddRefed<CookieStoreNotifier> CookieStoreNotifier::Create(
return nullptr;
}
nsCString host;
if (NS_WARN_IF(NS_FAILED(principal->GetAsciiHost(host))) || host.IsEmpty()) {
return nullptr;
}
nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
if (NS_WARN_IF(!os)) {
return nullptr;
}
RefPtr<CookieStoreNotifier> notifier = new CookieStoreNotifier(
aCookieStore, baseDomain, principal->OriginAttributesRef());
aCookieStore, baseDomain, host, principal->OriginAttributesRef());
nsresult rv =
os->AddObserver(notifier,
@@ -68,9 +73,10 @@ already_AddRefed<CookieStoreNotifier> CookieStoreNotifier::Create(
CookieStoreNotifier::CookieStoreNotifier(
CookieStore* aCookieStore, const nsACString& aBaseDomain,
const OriginAttributes& aOriginAttributes)
const nsACString& aHost, const OriginAttributes& aOriginAttributes)
: mCookieStore(aCookieStore),
mBaseDomain(aBaseDomain),
mHost(aHost),
mOriginAttributes(aOriginAttributes) {
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(aCookieStore);
@@ -129,6 +135,10 @@ CookieStoreNotifier::Observe(nsISupports* aSubject, const char* aTopic,
return NS_OK;
}
if (!net::CookieCommons::DomainMatches(net::Cookie::Cast(cookie), mHost)) {
return NS_OK;
}
bool isHttpOnly;
rv = cookie->GetIsHttpOnly(&isHttpOnly);
if (NS_WARN_IF(NS_FAILED(rv))) {
+2
View File
@@ -30,6 +30,7 @@ class CookieStoreNotifier final : public nsIObserver {
private:
CookieStoreNotifier(CookieStore* aCookieStore, const nsACString& aBaseDomain,
const nsACString& aHost,
const OriginAttributes& aOriginAttributes);
~CookieStoreNotifier();
@@ -39,6 +40,7 @@ class CookieStoreNotifier final : public nsIObserver {
CookieStore* mCookieStore;
nsCString mBaseDomain;
nsCString mHost;
OriginAttributes mOriginAttributes;
nsTArray<RefPtr<Event>> mDelayedDOMEvents;