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:
Tim Huang 2016-07-28 11:46:04 +08:00
Родитель 96232662bf
Коммит 55292e77a0
3 изменённых файлов: 46 добавлений и 10 удалений

Просмотреть файл

@ -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);
};