Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1245)

Unified Diff: net/cookies/cookie_monster.cc

Issue 2974363002: Simplify CookieMonster::SetAllCookies{,Async}() implementation. (Closed)
Patch Set: Sync['d up to latest PS on base CL. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_monster_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/cookies/cookie_monster.cc
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc
index 47837fa3c76ac23d9a1aec7fc69058e3078cb889..47785f6e758220dbda0a2de3739abea06c95aad3 100644
--- a/net/cookies/cookie_monster.cc
+++ b/net/cookies/cookie_monster.cc
@@ -196,19 +196,6 @@ bool LRACookieSorter(const CookieMonster::CookieMap::iterator& it1,
return it1->second->CreationDate() < it2->second->CreationDate();
}
-// Compare cookies using name, domain and path, so that "equivalent" cookies
-// (per RFC 2965) are equal to each other.
-bool PartialDiffCookieSorter(const CanonicalCookie& a,
- const CanonicalCookie& b) {
- return a.PartialCompare(b);
-}
-
-// This is a stricter ordering than PartialDiffCookieOrdering, where all fields
-// are used.
-bool FullDiffCookieSorter(const CanonicalCookie& a, const CanonicalCookie& b) {
- return a.FullCompare(b);
-}
-
// Our strategy to find duplicates is:
// (1) Build a map from (cookiename, cookiepath) to
// {list of cookies with this signature, sorted by creation time}.
@@ -1482,46 +1469,18 @@ void CookieMonster::SetCanonicalCookie(std::unique_ptr<CanonicalCookie> cc,
void CookieMonster::SetAllCookies(CookieList list,
SetCookiesCallback callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- CookieList positive_diff;
- CookieList negative_diff;
-
- CookieList old_cookies;
- old_cookies.reserve(cookies_.size());
- for (const auto& cookie : cookies_)
- old_cookies.push_back(*cookie.second.get());
-
- ComputeCookieDiff(&old_cookies, &list, &positive_diff, &negative_diff);
-
- for (const auto& cookie_to_delete : negative_diff) {
- for (CookieMapItPair its =
- cookies_.equal_range(GetKey(cookie_to_delete.Domain()));
- its.first != its.second; ++its.first) {
- // The creation date acts as the unique index...
- if (its.first->second->CreationDate() ==
- cookie_to_delete.CreationDate()) {
- // TODO(rdsmith): DELETE_COOKIE_CANONICAL is incorrect and should
- // be changed.
- InternalDeleteCookie(its.first, true, DELETE_COOKIE_CANONICAL);
- break;
- }
- }
- }
- if (positive_diff.size() == 0) {
- MaybeRunCookieCallback(std::move(callback), true);
- return;
+ // Nuke the existing store.
+ while (!cookies_.empty()) {
+ // TODO(rdsmith): The CANONICAL is a lie.
+ InternalDeleteCookie(cookies_.begin(), true, DELETE_COOKIE_CANONICAL);
}
+ // Set all passed in cookies.
for (const auto& cookie : list) {
const std::string key(GetKey(cookie.Domain()));
Time creation_time = cookie.CreationDate();
- bool already_expired = cookie.IsExpired(creation_time);
-
- bool result =
- DeleteAnyEquivalentCookie(key, cookie, true, false, already_expired);
- DCHECK(!result);
-
- if (already_expired)
+ if (cookie.IsExpired(creation_time))
continue;
if (cookie.IsPersistent()) {
@@ -2054,41 +2013,6 @@ void CookieMonster::DoCookieCallbackForURL(base::OnceClosure callback,
std::move(callback).Run();
}
-void CookieMonster::ComputeCookieDiff(CookieList* old_cookies,
- CookieList* new_cookies,
- CookieList* cookies_to_add,
- CookieList* cookies_to_delete) {
- DCHECK(thread_checker_.CalledOnValidThread());
-
- DCHECK(old_cookies);
- DCHECK(new_cookies);
- DCHECK(cookies_to_add);
- DCHECK(cookies_to_delete);
- DCHECK(cookies_to_add->empty());
- DCHECK(cookies_to_delete->empty());
-
- // Sort both lists.
- // A set ordered by FullDiffCookieSorter is also ordered by
- // PartialDiffCookieSorter.
- std::sort(old_cookies->begin(), old_cookies->end(), FullDiffCookieSorter);
- std::sort(new_cookies->begin(), new_cookies->end(), FullDiffCookieSorter);
-
- // Select any old cookie for deletion if no new cookie has the same name,
- // domain, and path.
- std::set_difference(
- old_cookies->begin(), old_cookies->end(), new_cookies->begin(),
- new_cookies->end(),
- std::inserter(*cookies_to_delete, cookies_to_delete->begin()),
- PartialDiffCookieSorter);
-
- // Select any new cookie for addition (or update) if no old cookie is exactly
- // equivalent.
- std::set_difference(new_cookies->begin(), new_cookies->end(),
- old_cookies->begin(), old_cookies->end(),
- std::inserter(*cookies_to_add, cookies_to_add->begin()),
- FullDiffCookieSorter);
-}
-
void CookieMonster::RunCookieChangedCallbacks(const CanonicalCookie& cookie,
ChangeCause cause) {
DCHECK(thread_checker_.CalledOnValidThread());
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_monster_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698