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

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

Issue 5318002: Also register read cookies in the content settings delegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 10 years 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 } 402 }
403 403
404 void CookieMonster::SetExpiryAndKeyScheme(ExpiryAndKeyScheme key_scheme) { 404 void CookieMonster::SetExpiryAndKeyScheme(ExpiryAndKeyScheme key_scheme) {
405 DCHECK(!initialized_); 405 DCHECK(!initialized_);
406 expiry_and_key_scheme_ = key_scheme; 406 expiry_and_key_scheme_ = key_scheme;
407 } 407 }
408 408
409 // The system resolution is not high enough, so we can have multiple 409 // The system resolution is not high enough, so we can have multiple
410 // set cookies that result in the same system time. When this happens, we 410 // set cookies that result in the same system time. When this happens, we
411 // increment by one Time unit. Let's hope computers don't get too fast. 411 // increment by one Time unit. Let's hope computers don't get too fast.
412 Time CookieMonster::CurrentTime() { 412 Time CookieMonster::StrictlyIncreasingTime() {
413 return std::max(Time::Now(), 413 return std::max(Time::Now(),
414 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1)); 414 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1));
415 } 415 }
416 416
417 // Parse a cookie expiration time. We try to be lenient, but we need to 417 // Parse a cookie expiration time. We try to be lenient, but we need to
418 // assume some order to distinguish the fields. The basic rules: 418 // assume some order to distinguish the fields. The basic rules:
419 // - The month name must be present and prefix the first 3 letters of the 419 // - The month name must be present and prefix the first 3 letters of the
420 // full month name (jan for January, jun for June). 420 // full month name (jan for January, jun for June).
421 // - If the year is <= 2 digits, it must occur after the day of month. 421 // - If the year is <= 2 digits, it must occur after the day of month.
422 // - The time must be of the format hh:mm:ss. 422 // - The time must be of the format hh:mm:ss.
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 const GURL& url, 763 const GURL& url,
764 const std::string& cookie_line, 764 const std::string& cookie_line,
765 const Time& creation_time_or_null, 765 const Time& creation_time_or_null,
766 const CookieOptions& options) { 766 const CookieOptions& options) {
767 lock_.AssertAcquired(); 767 lock_.AssertAcquired();
768 768
769 VLOG(kVlogSetCookies) << "SetCookie() line: " << cookie_line; 769 VLOG(kVlogSetCookies) << "SetCookie() line: " << cookie_line;
770 770
771 Time creation_time = creation_time_or_null; 771 Time creation_time = creation_time_or_null;
772 if (creation_time.is_null()) { 772 if (creation_time.is_null()) {
773 creation_time = CurrentTime(); 773 creation_time = StrictlyIncreasingTime();
774 last_time_seen_ = creation_time; 774 last_time_seen_ = creation_time;
775 } 775 }
776 776
777 // Parse the cookie. 777 // Parse the cookie.
778 ParsedCookie pc(cookie_line); 778 ParsedCookie pc(cookie_line);
779 779
780 if (!pc.IsValid()) { 780 if (!pc.IsValid()) {
781 VLOG(kVlogSetCookies) << "WARNING: Couldn't parse cookie"; 781 VLOG(kVlogSetCookies) << "WARNING: Couldn't parse cookie";
782 return false; 782 return false;
783 } 783 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 const std::string& domain, const std::string& path, 829 const std::string& domain, const std::string& path,
830 const base::Time& expiration_time, bool secure, bool http_only) { 830 const base::Time& expiration_time, bool secure, bool http_only) {
831 831
832 AutoLock autolock(lock_); 832 AutoLock autolock(lock_);
833 833
834 if (!HasCookieableScheme(url)) 834 if (!HasCookieableScheme(url))
835 return false; 835 return false;
836 836
837 InitIfNecessary(); 837 InitIfNecessary();
838 838
839 Time creation_time = CurrentTime(); 839 Time creation_time = StrictlyIncreasingTime();
840 last_time_seen_ = creation_time; 840 last_time_seen_ = creation_time;
841 841
842 scoped_ptr<CanonicalCookie> cc; 842 scoped_ptr<CanonicalCookie> cc;
843 cc.reset(CanonicalCookie::Create( 843 cc.reset(CanonicalCookie::Create(
844 url, name, value, domain, path, 844 url, name, value, domain, path,
845 creation_time, expiration_time, 845 creation_time, expiration_time,
846 secure, http_only)); 846 secure, http_only));
847 847
848 if (!cc.get()) 848 if (!cc.get())
849 return false; 849 return false;
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 1344
1345 CookieList cookie_list; 1345 CookieList cookie_list;
1346 cookie_list.reserve(cookie_ptrs.size()); 1346 cookie_list.reserve(cookie_ptrs.size());
1347 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin(); 1347 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin();
1348 it != cookie_ptrs.end(); ++it) 1348 it != cookie_ptrs.end(); ++it)
1349 cookie_list.push_back(**it); 1349 cookie_list.push_back(**it);
1350 1350
1351 return cookie_list; 1351 return cookie_list;
1352 } 1352 }
1353 1353
1354 CookieMonster::CookieList CookieMonster::GetAllCookiesForURL(const GURL& url) { 1354 CookieMonster::CookieList CookieMonster::GetAllCookiesForURLWithOptions(
1355 const GURL& url,
1356 const CookieOptions& options) {
1355 AutoLock autolock(lock_); 1357 AutoLock autolock(lock_);
1356 InitIfNecessary(); 1358 InitIfNecessary();
1357 1359
1358 CookieOptions options;
1359 options.set_include_httponly();
1360
1361 std::vector<CanonicalCookie*> cookie_ptrs; 1360 std::vector<CanonicalCookie*> cookie_ptrs;
1362 FindCookiesForHostAndDomain(url, options, false, &cookie_ptrs); 1361 FindCookiesForHostAndDomain(url, options, false, &cookie_ptrs);
1363 std::sort(cookie_ptrs.begin(), cookie_ptrs.end(), CookieSorter); 1362 std::sort(cookie_ptrs.begin(), cookie_ptrs.end(), CookieSorter);
1364 1363
1365 CookieList cookies; 1364 CookieList cookies;
1366 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin(); 1365 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin();
1367 it != cookie_ptrs.end(); it++) 1366 it != cookie_ptrs.end(); it++)
1368 cookies.push_back(**it); 1367 cookies.push_back(**it);
1369 1368
1370 return cookies; 1369 return cookies;
1371 } 1370 }
1372 1371
1372 CookieMonster::CookieList CookieMonster::GetAllCookiesForURL(const GURL& url) {
1373 CookieOptions options;
1374 options.set_include_httponly();
1375
1376 return GetAllCookiesForURLWithOptions(url, options);
1377 }
1378
1373 void CookieMonster::FindCookiesForHostAndDomain( 1379 void CookieMonster::FindCookiesForHostAndDomain(
1374 const GURL& url, 1380 const GURL& url,
1375 const CookieOptions& options, 1381 const CookieOptions& options,
1376 bool update_access_time, 1382 bool update_access_time,
1377 std::vector<CanonicalCookie*>* cookies) { 1383 std::vector<CanonicalCookie*>* cookies) {
1378 lock_.AssertAcquired(); 1384 lock_.AssertAcquired();
1379 1385
1380 const Time current_time(CurrentTime()); 1386 const Time current_time(StrictlyIncreasingTime());
1381 1387
1382 // Probe to save statistics relatively frequently. We do it here rather 1388 // Probe to save statistics relatively frequently. We do it here rather
1383 // than in the set path as many websites won't set cookies, and we 1389 // than in the set path as many websites won't set cookies, and we
1384 // want to collect statistics whenever the browser's being used. 1390 // want to collect statistics whenever the browser's being used.
1385 RecordPeriodicStats(current_time); 1391 RecordPeriodicStats(current_time);
1386 1392
1387 if (expiry_and_key_scheme_ == EKS_DISCARD_RECENT_AND_PURGE_DOMAIN) { 1393 if (expiry_and_key_scheme_ == EKS_DISCARD_RECENT_AND_PURGE_DOMAIN) {
1388 // Can just dispatch to FindCookiesForKey 1394 // Can just dispatch to FindCookiesForKey
1389 const std::string key(GetKey(url.host())); 1395 const std::string key(GetKey(url.host()));
1390 FindCookiesForKey(key, url, options, current_time, 1396 FindCookiesForKey(key, url, options, current_time,
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1991 return base::StringPrintf( 1997 return base::StringPrintf(
1992 "name: %s value: %s domain: %s path: %s creation: %" 1998 "name: %s value: %s domain: %s path: %s creation: %"
1993 PRId64, 1999 PRId64,
1994 name_.c_str(), value_.c_str(), 2000 name_.c_str(), value_.c_str(),
1995 domain_.c_str(), path_.c_str(), 2001 domain_.c_str(), path_.c_str(),
1996 static_cast<int64>(creation_date_.ToTimeT())); 2002 static_cast<int64>(creation_date_.ToTimeT()));
1997 } 2003 }
1998 2004
1999 } // namespace 2005 } // namespace
2000 2006
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698