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

Side by Side Diff: net/cookies/cookie_monster.cc

Issue 15829004: Update net/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: license twerk Created 7 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_monster_perftest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Portions of this code based on Mozilla: 5 // Portions of this code based on Mozilla:
6 // (netwerk/cookie/src/nsCookieService.cpp) 6 // (netwerk/cookie/src/nsCookieService.cpp)
7 /* ***** BEGIN LICENSE BLOCK ***** 7 /* ***** BEGIN LICENSE BLOCK *****
8 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 8 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
9 * 9 *
10 * The contents of this file are subject to the Mozilla Public License Version 10 * The contents of this file are subject to the Mozilla Public License Version
(...skipping 1204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 keep_expired_cookies_ = true; 1215 keep_expired_cookies_ = true;
1216 } 1216 }
1217 1217
1218 // static 1218 // static
1219 void CookieMonster::EnableFileScheme() { 1219 void CookieMonster::EnableFileScheme() {
1220 default_enable_file_scheme_ = true; 1220 default_enable_file_scheme_ = true;
1221 } 1221 }
1222 1222
1223 void CookieMonster::FlushStore(const base::Closure& callback) { 1223 void CookieMonster::FlushStore(const base::Closure& callback) {
1224 base::AutoLock autolock(lock_); 1224 base::AutoLock autolock(lock_);
1225 if (initialized_ && store_) 1225 if (initialized_ && store_.get())
1226 store_->Flush(callback); 1226 store_->Flush(callback);
1227 else if (!callback.is_null()) 1227 else if (!callback.is_null())
1228 base::MessageLoop::current()->PostTask(FROM_HERE, callback); 1228 base::MessageLoop::current()->PostTask(FROM_HERE, callback);
1229 } 1229 }
1230 1230
1231 bool CookieMonster::SetCookieWithOptions(const GURL& url, 1231 bool CookieMonster::SetCookieWithOptions(const GURL& url,
1232 const std::string& cookie_line, 1232 const std::string& cookie_line,
1233 const CookieOptions& options) { 1233 const CookieOptions& options) {
1234 base::AutoLock autolock(lock_); 1234 base::AutoLock autolock(lock_);
1235 1235
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1334 } 1334 }
1335 1335
1336 // This function must be called before the CookieMonster is used. 1336 // This function must be called before the CookieMonster is used.
1337 void CookieMonster::SetPriorityAwareGarbageCollection( 1337 void CookieMonster::SetPriorityAwareGarbageCollection(
1338 bool priority_aware_garbage_collection) { 1338 bool priority_aware_garbage_collection) {
1339 DCHECK(!initialized_); 1339 DCHECK(!initialized_);
1340 priority_aware_garbage_collection_ = priority_aware_garbage_collection; 1340 priority_aware_garbage_collection_ = priority_aware_garbage_collection;
1341 } 1341 }
1342 1342
1343 void CookieMonster::SetForceKeepSessionState() { 1343 void CookieMonster::SetForceKeepSessionState() {
1344 if (store_) { 1344 if (store_.get()) {
1345 store_->SetForceKeepSessionState(); 1345 store_->SetForceKeepSessionState();
1346 } 1346 }
1347 } 1347 }
1348 1348
1349 CookieMonster::~CookieMonster() { 1349 CookieMonster::~CookieMonster() {
1350 DeleteAll(false); 1350 DeleteAll(false);
1351 } 1351 }
1352 1352
1353 bool CookieMonster::SetCookieWithCreationTime(const GURL& url, 1353 bool CookieMonster::SetCookieWithCreationTime(const GURL& url,
1354 const std::string& cookie_line, 1354 const std::string& cookie_line,
1355 const base::Time& creation_time) { 1355 const base::Time& creation_time) {
1356 DCHECK(!store_) << "This method is only to be used by unit-tests."; 1356 DCHECK(!store_.get()) << "This method is only to be used by unit-tests.";
1357 base::AutoLock autolock(lock_); 1357 base::AutoLock autolock(lock_);
1358 1358
1359 if (!HasCookieableScheme(url)) { 1359 if (!HasCookieableScheme(url)) {
1360 return false; 1360 return false;
1361 } 1361 }
1362 1362
1363 InitIfNecessary(); 1363 InitIfNecessary();
1364 return SetCookieWithCreationTimeAndOptions(url, cookie_line, creation_time, 1364 return SetCookieWithCreationTimeAndOptions(url, cookie_line, creation_time,
1365 CookieOptions()); 1365 CookieOptions());
1366 } 1366 }
1367 1367
1368 void CookieMonster::InitStore() { 1368 void CookieMonster::InitStore() {
1369 DCHECK(store_) << "Store must exist to initialize"; 1369 DCHECK(store_.get()) << "Store must exist to initialize";
1370 1370
1371 // We bind in the current time so that we can report the wall-clock time for 1371 // We bind in the current time so that we can report the wall-clock time for
1372 // loading cookies. 1372 // loading cookies.
1373 store_->Load(base::Bind(&CookieMonster::OnLoaded, this, TimeTicks::Now())); 1373 store_->Load(base::Bind(&CookieMonster::OnLoaded, this, TimeTicks::Now()));
1374 } 1374 }
1375 1375
1376 void CookieMonster::OnLoaded(TimeTicks beginning_time, 1376 void CookieMonster::OnLoaded(TimeTicks beginning_time,
1377 const std::vector<CanonicalCookie*>& cookies) { 1377 const std::vector<CanonicalCookie*>& cookies) {
1378 StoreLoadedCookies(cookies); 1378 StoreLoadedCookies(cookies);
1379 histogram_time_blocked_on_load_->AddTime(TimeTicks::Now() - beginning_time); 1379 histogram_time_blocked_on_load_->AddTime(TimeTicks::Now() - beginning_time);
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 } 1667 }
1668 } 1668 }
1669 return skipped_httponly; 1669 return skipped_httponly;
1670 } 1670 }
1671 1671
1672 void CookieMonster::InternalInsertCookie(const std::string& key, 1672 void CookieMonster::InternalInsertCookie(const std::string& key,
1673 CanonicalCookie* cc, 1673 CanonicalCookie* cc,
1674 bool sync_to_store) { 1674 bool sync_to_store) {
1675 lock_.AssertAcquired(); 1675 lock_.AssertAcquired();
1676 1676
1677 if ((cc->IsPersistent() || persist_session_cookies_) && 1677 if ((cc->IsPersistent() || persist_session_cookies_) && store_.get() &&
1678 store_ && sync_to_store) 1678 sync_to_store)
1679 store_->AddCookie(*cc); 1679 store_->AddCookie(*cc);
1680 cookies_.insert(CookieMap::value_type(key, cc)); 1680 cookies_.insert(CookieMap::value_type(key, cc));
1681 if (delegate_.get()) { 1681 if (delegate_.get()) {
1682 delegate_->OnCookieChanged( 1682 delegate_->OnCookieChanged(
1683 *cc, false, CookieMonster::Delegate::CHANGE_COOKIE_EXPLICIT); 1683 *cc, false, CookieMonster::Delegate::CHANGE_COOKIE_EXPLICIT);
1684 } 1684 }
1685 } 1685 }
1686 1686
1687 bool CookieMonster::SetCookieWithCreationTimeAndOptions( 1687 bool CookieMonster::SetCookieWithCreationTimeAndOptions(
1688 const GURL& url, 1688 const GURL& url,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 // updates we do during pageload, which in turn reduces the chance our storage 1756 // updates we do during pageload, which in turn reduces the chance our storage
1757 // backend will hit its batch thresholds and be forced to update. 1757 // backend will hit its batch thresholds and be forced to update.
1758 if ((current - cc->LastAccessDate()) < last_access_threshold_) 1758 if ((current - cc->LastAccessDate()) < last_access_threshold_)
1759 return; 1759 return;
1760 1760
1761 // See InitializeHistograms() for details. 1761 // See InitializeHistograms() for details.
1762 histogram_between_access_interval_minutes_->Add( 1762 histogram_between_access_interval_minutes_->Add(
1763 (current - cc->LastAccessDate()).InMinutes()); 1763 (current - cc->LastAccessDate()).InMinutes());
1764 1764
1765 cc->SetLastAccessDate(current); 1765 cc->SetLastAccessDate(current);
1766 if ((cc->IsPersistent() || persist_session_cookies_) && store_) 1766 if ((cc->IsPersistent() || persist_session_cookies_) && store_.get())
1767 store_->UpdateCookieAccessTime(*cc); 1767 store_->UpdateCookieAccessTime(*cc);
1768 } 1768 }
1769 1769
1770 void CookieMonster::InternalDeleteCookie(CookieMap::iterator it, 1770 void CookieMonster::InternalDeleteCookie(CookieMap::iterator it,
1771 bool sync_to_store, 1771 bool sync_to_store,
1772 DeletionCause deletion_cause) { 1772 DeletionCause deletion_cause) {
1773 lock_.AssertAcquired(); 1773 lock_.AssertAcquired();
1774 1774
1775 // Ideally, this would be asserted up where we define ChangeCauseMapping, 1775 // Ideally, this would be asserted up where we define ChangeCauseMapping,
1776 // but DeletionCause's visibility (or lack thereof) forces us to make 1776 // but DeletionCause's visibility (or lack thereof) forces us to make
1777 // this check here. 1777 // this check here.
1778 COMPILE_ASSERT(arraysize(ChangeCauseMapping) == DELETE_COOKIE_LAST_ENTRY + 1, 1778 COMPILE_ASSERT(arraysize(ChangeCauseMapping) == DELETE_COOKIE_LAST_ENTRY + 1,
1779 ChangeCauseMapping_size_not_eq_DeletionCause_enum_size); 1779 ChangeCauseMapping_size_not_eq_DeletionCause_enum_size);
1780 1780
1781 // See InitializeHistograms() for details. 1781 // See InitializeHistograms() for details.
1782 if (deletion_cause != DELETE_COOKIE_DONT_RECORD) 1782 if (deletion_cause != DELETE_COOKIE_DONT_RECORD)
1783 histogram_cookie_deletion_cause_->Add(deletion_cause); 1783 histogram_cookie_deletion_cause_->Add(deletion_cause);
1784 1784
1785 CanonicalCookie* cc = it->second; 1785 CanonicalCookie* cc = it->second;
1786 VLOG(kVlogSetCookies) << "InternalDeleteCookie() cc: " << cc->DebugString(); 1786 VLOG(kVlogSetCookies) << "InternalDeleteCookie() cc: " << cc->DebugString();
1787 1787
1788 if ((cc->IsPersistent() || persist_session_cookies_) 1788 if ((cc->IsPersistent() || persist_session_cookies_) && store_.get() &&
1789 && store_ && sync_to_store) 1789 sync_to_store)
1790 store_->DeleteCookie(*cc); 1790 store_->DeleteCookie(*cc);
1791 if (delegate_.get()) { 1791 if (delegate_.get()) {
1792 ChangeCausePair mapping = ChangeCauseMapping[deletion_cause]; 1792 ChangeCausePair mapping = ChangeCauseMapping[deletion_cause];
1793 1793
1794 if (mapping.notify) 1794 if (mapping.notify)
1795 delegate_->OnCookieChanged(*cc, true, mapping.cause); 1795 delegate_->OnCookieChanged(*cc, true, mapping.cause);
1796 } 1796 }
1797 cookies_.erase(it); 1797 cookies_.erase(it);
1798 delete cc; 1798 delete cc;
1799 } 1799 }
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
2150 2150
2151 // The system resolution is not high enough, so we can have multiple 2151 // The system resolution is not high enough, so we can have multiple
2152 // set cookies that result in the same system time. When this happens, we 2152 // set cookies that result in the same system time. When this happens, we
2153 // increment by one Time unit. Let's hope computers don't get too fast. 2153 // increment by one Time unit. Let's hope computers don't get too fast.
2154 Time CookieMonster::CurrentTime() { 2154 Time CookieMonster::CurrentTime() {
2155 return std::max(Time::Now(), 2155 return std::max(Time::Now(),
2156 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1)); 2156 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1));
2157 } 2157 }
2158 2158
2159 } // namespace net 2159 } // namespace net
OLDNEW
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_monster_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698