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:
committed by
kjang@mozilla.com
parent
82b2e13b45
commit
d0b8a022bc
@@ -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))) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user