Chromium Code Reviews| Index: net/cookies/cookie_monster.cc |
| diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc |
| index 2666d590ca1e9939a5ae1752276138f67b0d61d5..90fa716cd6315a0d91b89113737af55b35a1030b 100644 |
| --- a/net/cookies/cookie_monster.cc |
| +++ b/net/cookies/cookie_monster.cc |
| @@ -1488,46 +1488,20 @@ 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); |
|
mmenke
2017/07/12 18:56:35
Is ComputeCookieDiff still used? I'd check it mys
Randy Smith (Not in Mondays)
2017/07/12 20:07:08
Used by test code in order to test it, which I thi
|
| - |
| - 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) { |
| - ConditionalCookieCallback(std::move(callback), true); |
| - return; |
| + // Nuke the existing store. |
| + for (auto prev_it = cookies_.begin(), next_it = prev_it; |
| + next_it != cookies_.end(); prev_it = next_it) { |
|
mmenke
2017/07/12 18:56:35
I think this can just be:
while (!cookies_.empty(
Randy Smith (Not in Mondays)
2017/07/12 20:07:08
You're right, that's quite a bit nicer. Done.
|
| + ++next_it; |
| + // TODO(rdsmith): The CANONICAL is a lie. |
| + InternalDeleteCookie(prev_it, 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()) { |