зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1278037 - Part 1: Modify the getCookiesWithOriginAttributes of the nsICookieManager2 to take the host as an optional argument. r=jdm
--HG-- extra : rebase_source : 918c1f81dedb5dfa6ddb9a78b613ace6f34f4758 extra : histedit_source : f28df59c4b608f7311e04dc00bce286624d7ad81
This commit is contained in:
Родитель
96232662bf
Коммит
55292e77a0
|
@ -583,7 +583,7 @@ public:
|
|||
= do_GetService(NS_COOKIEMANAGER_CONTRACTID);
|
||||
MOZ_ASSERT(cookieManager);
|
||||
|
||||
return cookieManager->RemoveCookiesWithOriginAttributes(nsDependentString(aData));
|
||||
return cookieManager->RemoveCookiesWithOriginAttributes(nsDependentString(aData), EmptyCString());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -4546,7 +4546,8 @@ nsCookieService::GetCookiesFromHost(const nsACString &aHost,
|
|||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsCookieService::GetCookiesWithOriginAttributes(const nsAString& aPattern,
|
||||
nsCookieService::GetCookiesWithOriginAttributes(const nsAString& aPattern,
|
||||
const nsACString& aHost,
|
||||
nsISimpleEnumerator **aEnumerator)
|
||||
{
|
||||
mozilla::OriginAttributesPattern pattern;
|
||||
|
@ -4554,12 +4555,21 @@ nsCookieService::GetCookiesWithOriginAttributes(const nsAString& aPattern,
|
|||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
return GetCookiesWithOriginAttributes(pattern, aEnumerator);
|
||||
nsAutoCString host(aHost);
|
||||
nsresult rv = NormalizeHost(host);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsAutoCString baseDomain;
|
||||
rv = GetBaseDomainFromHost(host, baseDomain);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return GetCookiesWithOriginAttributes(pattern, baseDomain, aEnumerator);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsCookieService::GetCookiesWithOriginAttributes(
|
||||
const mozilla::OriginAttributesPattern& aPattern,
|
||||
const nsCString& aBaseDomain,
|
||||
nsISimpleEnumerator **aEnumerator)
|
||||
{
|
||||
if (!mDBState) {
|
||||
|
@ -4575,6 +4585,10 @@ nsCookieService::GetCookiesWithOriginAttributes(
|
|||
for (auto iter = mDBState->hostTable.Iter(); !iter.Done(); iter.Next()) {
|
||||
nsCookieEntry* entry = iter.Get();
|
||||
|
||||
if (!aBaseDomain.IsEmpty() && !aBaseDomain.Equals(entry->mBaseDomain)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!aPattern.Matches(entry->mOriginAttributes)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -4590,7 +4604,8 @@ nsCookieService::GetCookiesWithOriginAttributes(
|
|||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsCookieService::RemoveCookiesWithOriginAttributes(const nsAString& aPattern)
|
||||
nsCookieService::RemoveCookiesWithOriginAttributes(const nsAString& aPattern,
|
||||
const nsACString& aHost)
|
||||
{
|
||||
MOZ_ASSERT(XRE_IsParentProcess());
|
||||
|
||||
|
@ -4599,12 +4614,21 @@ nsCookieService::RemoveCookiesWithOriginAttributes(const nsAString& aPattern)
|
|||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
return RemoveCookiesWithOriginAttributes(pattern);
|
||||
nsAutoCString host(aHost);
|
||||
nsresult rv = NormalizeHost(host);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsAutoCString baseDomain;
|
||||
rv = GetBaseDomainFromHost(host, baseDomain);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return RemoveCookiesWithOriginAttributes(pattern, baseDomain);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsCookieService::RemoveCookiesWithOriginAttributes(
|
||||
const mozilla::OriginAttributesPattern& aPattern)
|
||||
const mozilla::OriginAttributesPattern& aPattern,
|
||||
const nsCString& aBaseDomain)
|
||||
{
|
||||
if (!mDBState) {
|
||||
NS_WARNING("No DBState! Profile already close?");
|
||||
|
@ -4615,6 +4639,10 @@ nsCookieService::RemoveCookiesWithOriginAttributes(
|
|||
for (auto iter = mDBState->hostTable.Iter(); !iter.Done(); iter.Next()) {
|
||||
nsCookieEntry* entry = iter.Get();
|
||||
|
||||
if (!aBaseDomain.IsEmpty() && !aBaseDomain.Equals(entry->mBaseDomain)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!aPattern.Matches(entry->mOriginAttributes)) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -320,8 +320,8 @@ class nsCookieService final : public nsICookieService
|
|||
already_AddRefed<nsIArray> CreatePurgeList(nsICookie2* aCookie);
|
||||
void UpdateCookieOldestTime(DBState* aDBState, nsCookie* aCookie);
|
||||
|
||||
nsresult GetCookiesWithOriginAttributes(const mozilla::OriginAttributesPattern& aPattern, nsISimpleEnumerator **aEnumerator);
|
||||
nsresult RemoveCookiesWithOriginAttributes(const mozilla::OriginAttributesPattern& aPattern);
|
||||
nsresult GetCookiesWithOriginAttributes(const mozilla::OriginAttributesPattern& aPattern, const nsCString& aBaseDomain, nsISimpleEnumerator **aEnumerator);
|
||||
nsresult RemoveCookiesWithOriginAttributes(const mozilla::OriginAttributesPattern& aPattern, const nsCString& aBaseDomain);
|
||||
|
||||
/**
|
||||
* This method is a helper that allows calling nsICookieManager::Remove()
|
||||
|
|
|
@ -132,13 +132,21 @@ interface nsICookieManager2 : nsICookieManager
|
|||
* Returns an enumerator of all cookies whose origin attributes matches aPattern
|
||||
*
|
||||
* @param aPattern origin attribute pattern in JSON format
|
||||
*
|
||||
* @param aHost
|
||||
* the host string to search for, e.g. "google.com". this should consist
|
||||
* of only the host portion of a URI. see @add for a description of
|
||||
* acceptable host strings. This attribute is optional. It will search
|
||||
* all hosts if this attribute is not given.
|
||||
*/
|
||||
nsISimpleEnumerator getCookiesWithOriginAttributes(in DOMString aPattern);
|
||||
nsISimpleEnumerator getCookiesWithOriginAttributes(in DOMString aPattern,
|
||||
[optional] in AUTF8String aHost);
|
||||
|
||||
/**
|
||||
* Remove all the cookies whose origin attributes matches aPattern
|
||||
*
|
||||
* @param aPattern origin attribute pattern in JSON format
|
||||
*/
|
||||
void removeCookiesWithOriginAttributes(in DOMString aPattern);
|
||||
void removeCookiesWithOriginAttributes(in DOMString aPattern,
|
||||
[optional] in AUTF8String aHost);
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче