Index: net/cookies/cookie_monster.cc |
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc |
index 9925dbc1b976f1a52fa425e2ae98e947aa97a126..b656d83e6c078a0594dfd3c0f76d87ca0ea78488 100644 |
--- a/net/cookies/cookie_monster.cc |
+++ b/net/cookies/cookie_monster.cc |
@@ -1006,7 +1006,7 @@ CookieMonster::AddCallbackForCookie(const GURL& gurl, |
std::pair<GURL, std::string> key(gurl, name); |
if (hook_map_.count(key) == 0) |
- hook_map_[key] = make_linked_ptr(new CookieChangedCallbackList()); |
+ hook_map_[key] = base::MakeUnique<CookieChangedCallbackList>(); |
return hook_map_[key]->Add( |
base::Bind(&RunAsync, base::ThreadTaskRunnerHandle::Get(), callback)); |
} |
@@ -1094,15 +1094,14 @@ CookieList CookieMonster::GetAllCookies() { |
// sorter as elsewhere, then copy the result out. |
std::vector<CanonicalCookie*> cookie_ptrs; |
cookie_ptrs.reserve(cookies_.size()); |
- for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end(); ++it) |
- cookie_ptrs.push_back(it->second); |
+ for (const auto& cookie : cookies_) |
+ cookie_ptrs.push_back(cookie.second.get()); |
std::sort(cookie_ptrs.begin(), cookie_ptrs.end(), CookieSorter); |
CookieList cookie_list; |
cookie_list.reserve(cookie_ptrs.size()); |
- for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin(); |
- it != cookie_ptrs.end(); ++it) |
- cookie_list.push_back(**it); |
+ for (const auto& cookie_ptr : cookie_ptrs) |
+ cookie_list.push_back(*cookie_ptr); |
return cookie_list; |
} |
@@ -1135,7 +1134,7 @@ int CookieMonster::DeleteAllCreatedBetween(const Time& delete_begin, |
int num_deleted = 0; |
for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) { |
CookieMap::iterator curit = it; |
- CanonicalCookie* cc = curit->second; |
+ CanonicalCookie* cc = curit->second.get(); |
++it; |
if (cc->CreationDate() >= delete_begin && |
@@ -1156,7 +1155,7 @@ int CookieMonster::DeleteAllCreatedBetweenWithPredicate( |
int num_deleted = 0; |
for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) { |
CookieMap::iterator curit = it; |
- CanonicalCookie* cc = curit->second; |
+ CanonicalCookie* cc = curit->second.get(); |
++it; |
if (cc->CreationDate() >= delete_begin && |
@@ -1230,7 +1229,7 @@ void CookieMonster::DeleteCookie(const GURL& url, |
for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) { |
CookieMap::iterator curit = it; |
++it; |
- if (matching_cookies.find(curit->second) != matching_cookies.end()) { |
+ if (matching_cookies.find(curit->second.get()) != matching_cookies.end()) { |
InternalDeleteCookie(curit, true, DELETE_COOKIE_EXPLICIT); |
} |
} |
@@ -1274,7 +1273,7 @@ int CookieMonster::DeleteSessionCookies() { |
int num_deleted = 0; |
for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) { |
CookieMap::iterator curit = it; |
- CanonicalCookie* cc = curit->second; |
+ CanonicalCookie* cc = curit->second.get(); |
++it; |
if (!cc->IsPersistent()) { |
@@ -1332,21 +1331,23 @@ bool CookieMonster::ShouldFetchAllCookiesWhenFetchingAnyCookie() { |
return fetch_strategy_ == kAlwaysFetch; |
} |
-void CookieMonster::OnLoaded(TimeTicks beginning_time, |
- const std::vector<CanonicalCookie*>& cookies) { |
+void CookieMonster::OnLoaded( |
+ TimeTicks beginning_time, |
+ std::vector<std::unique_ptr<CanonicalCookie>> cookies) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- StoreLoadedCookies(cookies); |
+ StoreLoadedCookies(std::move(cookies)); |
histogram_time_blocked_on_load_->AddTime(TimeTicks::Now() - beginning_time); |
// Invoke the task queue of cookie request. |
InvokeQueue(); |
} |
-void CookieMonster::OnKeyLoaded(const std::string& key, |
- const std::vector<CanonicalCookie*>& cookies) { |
+void CookieMonster::OnKeyLoaded( |
+ const std::string& key, |
+ std::vector<std::unique_ptr<CanonicalCookie>> cookies) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- StoreLoadedCookies(cookies); |
+ StoreLoadedCookies(std::move(cookies)); |
auto tasks_pending_for_key = tasks_pending_for_key_.find(key); |
@@ -1372,7 +1373,7 @@ void CookieMonster::OnKeyLoaded(const std::string& key, |
} |
void CookieMonster::StoreLoadedCookies( |
- const std::vector<CanonicalCookie*>& cookies) { |
+ std::vector<std::unique_ptr<CanonicalCookie>> cookies) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
// TODO(erikwright): Remove ScopedTracker below once crbug.com/457528 is |
@@ -1385,20 +1386,20 @@ void CookieMonster::StoreLoadedCookies( |
// removed, and sync'd. |
CookieItVector cookies_with_control_chars; |
- for (std::vector<CanonicalCookie*>::const_iterator it = cookies.begin(); |
- it != cookies.end(); ++it) { |
- int64_t cookie_creation_time = (*it)->CreationDate().ToInternalValue(); |
+ for (auto& cookie : cookies) { |
+ int64_t cookie_creation_time = cookie->CreationDate().ToInternalValue(); |
if (creation_times_.insert(cookie_creation_time).second) { |
- CookieMap::iterator inserted = |
- InternalInsertCookie(GetKey((*it)->Domain()), *it, GURL(), false); |
- const Time cookie_access_time((*it)->LastAccessDate()); |
+ CanonicalCookie* cookie_ptr = cookie.get(); |
+ CookieMap::iterator inserted = InternalInsertCookie( |
+ GetKey(cookie_ptr->Domain()), std::move(cookie), GURL(), false); |
+ const Time cookie_access_time(cookie_ptr->LastAccessDate()); |
if (earliest_access_time_.is_null() || |
cookie_access_time < earliest_access_time_) |
earliest_access_time_ = cookie_access_time; |
- if (ContainsControlCharacter((*it)->Name()) || |
- ContainsControlCharacter((*it)->Value())) { |
+ if (ContainsControlCharacter(cookie_ptr->Name()) || |
+ ContainsControlCharacter(cookie_ptr->Value())) { |
cookies_with_control_chars.push_back(inserted); |
} |
} else { |
@@ -1406,11 +1407,8 @@ void CookieMonster::StoreLoadedCookies( |
"Found cookies with duplicate creation " |
"times in backing store: " |
"{name='%s', domain='%s', path='%s'}", |
- (*it)->Name().c_str(), (*it)->Domain().c_str(), |
- (*it)->Path().c_str()); |
- // We've been given ownership of the cookie and are throwing it |
- // away; reclaim the space. |
- delete (*it); |
+ cookie->Name().c_str(), cookie->Domain().c_str(), |
+ cookie->Path().c_str()); |
} |
} |
@@ -1498,7 +1496,7 @@ void CookieMonster::TrimDuplicateCookiesForKey(const std::string& key, |
// the equivalence map. |
for (CookieMap::iterator it = begin; it != end; ++it) { |
DCHECK_EQ(key, it->first); |
- CanonicalCookie* cookie = it->second; |
+ CanonicalCookie* cookie = it->second.get(); |
CookieSignature signature(cookie->Name(), cookie->Domain(), cookie->Path()); |
CookieSet& set = equivalent_cookies[signature]; |
@@ -1582,7 +1580,7 @@ void CookieMonster::FindCookiesForKey(const std::string& key, |
for (CookieMapItPair its = cookies_.equal_range(key); |
its.first != its.second;) { |
CookieMap::iterator curit = its.first; |
- CanonicalCookie* cc = curit->second; |
+ CanonicalCookie* cc = curit->second.get(); |
++its.first; |
// If the cookie is expired, delete it. |
@@ -1623,7 +1621,7 @@ bool CookieMonster::DeleteAnyEquivalentCookie(const std::string& key, |
for (CookieMapItPair its = cookies_.equal_range(key); |
its.first != its.second;) { |
CookieMap::iterator curit = its.first; |
- CanonicalCookie* cc = curit->second; |
+ CanonicalCookie* cc = curit->second.get(); |
++its.first; |
// If strict secure cookies is being enforced, then the equivalency |
@@ -1674,25 +1672,28 @@ bool CookieMonster::DeleteAnyEquivalentCookie(const std::string& key, |
CookieMonster::CookieMap::iterator CookieMonster::InternalInsertCookie( |
const std::string& key, |
- CanonicalCookie* cc, |
+ std::unique_ptr<CanonicalCookie> cc, |
const GURL& source_url, |
bool sync_to_store) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ CanonicalCookie* cc_ptr = cc.get(); |
- if ((cc->IsPersistent() || persist_session_cookies_) && store_.get() && |
+ if ((cc_ptr->IsPersistent() || persist_session_cookies_) && store_.get() && |
sync_to_store) |
- store_->AddCookie(*cc); |
+ store_->AddCookie(*cc_ptr); |
CookieMap::iterator inserted = |
- cookies_.insert(CookieMap::value_type(key, cc)); |
- if (delegate_.get()) |
- delegate_->OnCookieChanged(*cc, false, CookieStore::ChangeCause::INSERTED); |
+ cookies_.insert(CookieMap::value_type(key, std::move(cc))); |
+ if (delegate_.get()) { |
+ delegate_->OnCookieChanged(*cc_ptr, false, |
+ CookieStore::ChangeCause::INSERTED); |
+ } |
// See InitializeHistograms() for details. |
- int32_t type_sample = cc->SameSite() != CookieSameSite::NO_RESTRICTION |
+ int32_t type_sample = cc_ptr->SameSite() != CookieSameSite::NO_RESTRICTION |
? 1 << COOKIE_TYPE_SAME_SITE |
: 0; |
- type_sample |= cc->IsHttpOnly() ? 1 << COOKIE_TYPE_HTTPONLY : 0; |
- type_sample |= cc->IsSecure() ? 1 << COOKIE_TYPE_SECURE : 0; |
+ type_sample |= cc_ptr->IsHttpOnly() ? 1 << COOKIE_TYPE_HTTPONLY : 0; |
+ type_sample |= cc_ptr->IsSecure() ? 1 << COOKIE_TYPE_SECURE : 0; |
histogram_cookie_type_->Add(type_sample); |
// Histogram the type of scheme used on URLs that set cookies. This |
@@ -1704,18 +1705,19 @@ CookieMonster::CookieMap::iterator CookieMonster::InternalInsertCookie( |
CookieSource cookie_source_sample; |
if (source_url.SchemeIsCryptographic()) { |
cookie_source_sample = |
- cc->IsSecure() ? COOKIE_SOURCE_SECURE_COOKIE_CRYPTOGRAPHIC_SCHEME |
- : COOKIE_SOURCE_NONSECURE_COOKIE_CRYPTOGRAPHIC_SCHEME; |
+ cc_ptr->IsSecure() |
+ ? COOKIE_SOURCE_SECURE_COOKIE_CRYPTOGRAPHIC_SCHEME |
+ : COOKIE_SOURCE_NONSECURE_COOKIE_CRYPTOGRAPHIC_SCHEME; |
} else { |
cookie_source_sample = |
- cc->IsSecure() |
+ cc_ptr->IsSecure() |
? COOKIE_SOURCE_SECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME |
: COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME; |
} |
histogram_cookie_source_scheme_->Add(cookie_source_sample); |
} |
- RunCookieChangedCallbacks(*cc, CookieStore::ChangeCause::INSERTED); |
+ RunCookieChangedCallbacks(*cc_ptr, CookieStore::ChangeCause::INSERTED); |
return inserted; |
} |
@@ -1782,7 +1784,7 @@ bool CookieMonster::SetCanonicalCookie(std::unique_ptr<CanonicalCookie> cc, |
(cc->ExpiryDate() - creation_time).InMinutes()); |
} |
- InternalInsertCookie(key, cc.release(), source_url, true); |
+ InternalInsertCookie(key, std::move(cc), source_url, true); |
} else { |
VLOG(kVlogSetCookies) << "SetCookie() not storing already expired cookie."; |
} |
@@ -1847,7 +1849,7 @@ void CookieMonster::InternalDeleteCookie(CookieMap::iterator it, |
if (deletion_cause != DELETE_COOKIE_DONT_RECORD) |
histogram_cookie_deletion_cause_->Add(deletion_cause); |
- CanonicalCookie* cc = it->second; |
+ CanonicalCookie* cc = it->second.get(); |
VLOG(kVlogSetCookies) << "InternalDeleteCookie()" |
<< ", cause:" << deletion_cause |
<< ", cc: " << cc->DebugString(); |
@@ -1860,7 +1862,6 @@ void CookieMonster::InternalDeleteCookie(CookieMap::iterator it, |
delegate_->OnCookieChanged(*cc, true, mapping.cause); |
RunCookieChangedCallbacks(*cc, mapping.cause); |
cookies_.erase(it); |
- delete cc; |
} |
// Domain expiry behavior is unchanged by key/expiry scheme (the |
@@ -2045,7 +2046,7 @@ size_t CookieMonster::PurgeLeastRecentMatches(CookieItVector* cookies, |
size_t current = 0u; |
while ((removed < purge_goal && current < cookies->size()) && |
cookies_count_possibly_to_be_deleted > 0) { |
- const CanonicalCookie* current_cookie = cookies->at(current)->second; |
+ const CanonicalCookie* current_cookie = cookies->at(current)->second.get(); |
// Only delete the current cookie if the priority is equal to |
// the current level. |
if (IsCookieEligibleForEviction(priority, protect_secure_cookies, |