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

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

Issue 6142009: Upating the app, ceee, chrome, ipc, media, and net directories to use the correct lock.h file. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Unified patch updating all references to the new base/synchronization/lock.h Created 9 years, 11 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/base/cookie_monster.h ('k') | net/base/dnsrr_resolver.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) 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 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 } 496 }
497 497
498 bool CookieMonster::DomainIsHostOnly(const std::string& domain_string) { 498 bool CookieMonster::DomainIsHostOnly(const std::string& domain_string) {
499 return (domain_string.empty() || domain_string[0] != '.'); 499 return (domain_string.empty() || domain_string[0] != '.');
500 } 500 }
501 501
502 bool CookieMonster::SetCookieWithDetails( 502 bool CookieMonster::SetCookieWithDetails(
503 const GURL& url, const std::string& name, const std::string& value, 503 const GURL& url, const std::string& name, const std::string& value,
504 const std::string& domain, const std::string& path, 504 const std::string& domain, const std::string& path,
505 const base::Time& expiration_time, bool secure, bool http_only) { 505 const base::Time& expiration_time, bool secure, bool http_only) {
506 AutoLock autolock(lock_); 506 base::AutoLock autolock(lock_);
507 507
508 if (!HasCookieableScheme(url)) 508 if (!HasCookieableScheme(url))
509 return false; 509 return false;
510 510
511 InitIfNecessary(); 511 InitIfNecessary();
512 512
513 Time creation_time = CurrentTime(); 513 Time creation_time = CurrentTime();
514 last_time_seen_ = creation_time; 514 last_time_seen_ = creation_time;
515 515
516 scoped_ptr<CanonicalCookie> cc; 516 scoped_ptr<CanonicalCookie> cc;
517 cc.reset(CanonicalCookie::Create( 517 cc.reset(CanonicalCookie::Create(
518 url, name, value, domain, path, 518 url, name, value, domain, path,
519 creation_time, expiration_time, 519 creation_time, expiration_time,
520 secure, http_only)); 520 secure, http_only));
521 521
522 if (!cc.get()) 522 if (!cc.get())
523 return false; 523 return false;
524 524
525 CookieOptions options; 525 CookieOptions options;
526 options.set_include_httponly(); 526 options.set_include_httponly();
527 return SetCanonicalCookie(&cc, creation_time, options); 527 return SetCanonicalCookie(&cc, creation_time, options);
528 } 528 }
529 529
530 530
531 CookieList CookieMonster::GetAllCookies() { 531 CookieList CookieMonster::GetAllCookies() {
532 AutoLock autolock(lock_); 532 base::AutoLock autolock(lock_);
533 InitIfNecessary(); 533 InitIfNecessary();
534 534
535 // This function is being called to scrape the cookie list for management UI 535 // This function is being called to scrape the cookie list for management UI
536 // or similar. We shouldn't show expired cookies in this list since it will 536 // or similar. We shouldn't show expired cookies in this list since it will
537 // just be confusing to users, and this function is called rarely enough (and 537 // just be confusing to users, and this function is called rarely enough (and
538 // is already slow enough) that it's OK to take the time to garbage collect 538 // is already slow enough) that it's OK to take the time to garbage collect
539 // the expired cookies now. 539 // the expired cookies now.
540 // 540 //
541 // Note that this does not prune cookies to be below our limits (if we've 541 // Note that this does not prune cookies to be below our limits (if we've
542 // exceeded them) the way that calling GarbageCollect() would. 542 // exceeded them) the way that calling GarbageCollect() would.
(...skipping 14 matching lines...) Expand all
557 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin(); 557 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin();
558 it != cookie_ptrs.end(); ++it) 558 it != cookie_ptrs.end(); ++it)
559 cookie_list.push_back(**it); 559 cookie_list.push_back(**it);
560 560
561 return cookie_list; 561 return cookie_list;
562 } 562 }
563 563
564 CookieList CookieMonster::GetAllCookiesForURLWithOptions( 564 CookieList CookieMonster::GetAllCookiesForURLWithOptions(
565 const GURL& url, 565 const GURL& url,
566 const CookieOptions& options) { 566 const CookieOptions& options) {
567 AutoLock autolock(lock_); 567 base::AutoLock autolock(lock_);
568 InitIfNecessary(); 568 InitIfNecessary();
569 569
570 std::vector<CanonicalCookie*> cookie_ptrs; 570 std::vector<CanonicalCookie*> cookie_ptrs;
571 FindCookiesForHostAndDomain(url, options, false, &cookie_ptrs); 571 FindCookiesForHostAndDomain(url, options, false, &cookie_ptrs);
572 std::sort(cookie_ptrs.begin(), cookie_ptrs.end(), CookieSorter); 572 std::sort(cookie_ptrs.begin(), cookie_ptrs.end(), CookieSorter);
573 573
574 CookieList cookies; 574 CookieList cookies;
575 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin(); 575 for (std::vector<CanonicalCookie*>::const_iterator it = cookie_ptrs.begin();
576 it != cookie_ptrs.end(); it++) 576 it != cookie_ptrs.end(); it++)
577 cookies.push_back(**it); 577 cookies.push_back(**it);
578 578
579 return cookies; 579 return cookies;
580 } 580 }
581 581
582 CookieList CookieMonster::GetAllCookiesForURL(const GURL& url) { 582 CookieList CookieMonster::GetAllCookiesForURL(const GURL& url) {
583 CookieOptions options; 583 CookieOptions options;
584 options.set_include_httponly(); 584 options.set_include_httponly();
585 585
586 return GetAllCookiesForURLWithOptions(url, options); 586 return GetAllCookiesForURLWithOptions(url, options);
587 } 587 }
588 588
589 int CookieMonster::DeleteAll(bool sync_to_store) { 589 int CookieMonster::DeleteAll(bool sync_to_store) {
590 AutoLock autolock(lock_); 590 base::AutoLock autolock(lock_);
591 if (sync_to_store) 591 if (sync_to_store)
592 InitIfNecessary(); 592 InitIfNecessary();
593 593
594 int num_deleted = 0; 594 int num_deleted = 0;
595 for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) { 595 for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) {
596 CookieMap::iterator curit = it; 596 CookieMap::iterator curit = it;
597 ++it; 597 ++it;
598 InternalDeleteCookie(curit, sync_to_store, 598 InternalDeleteCookie(curit, sync_to_store,
599 sync_to_store ? DELETE_COOKIE_EXPLICIT : 599 sync_to_store ? DELETE_COOKIE_EXPLICIT :
600 DELETE_COOKIE_DONT_RECORD /* Destruction. */); 600 DELETE_COOKIE_DONT_RECORD /* Destruction. */);
601 ++num_deleted; 601 ++num_deleted;
602 } 602 }
603 603
604 return num_deleted; 604 return num_deleted;
605 } 605 }
606 606
607 int CookieMonster::DeleteAllCreatedBetween(const Time& delete_begin, 607 int CookieMonster::DeleteAllCreatedBetween(const Time& delete_begin,
608 const Time& delete_end, 608 const Time& delete_end,
609 bool sync_to_store) { 609 bool sync_to_store) {
610 AutoLock autolock(lock_); 610 base::AutoLock autolock(lock_);
611 InitIfNecessary(); 611 InitIfNecessary();
612 612
613 int num_deleted = 0; 613 int num_deleted = 0;
614 for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) { 614 for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end();) {
615 CookieMap::iterator curit = it; 615 CookieMap::iterator curit = it;
616 CanonicalCookie* cc = curit->second; 616 CanonicalCookie* cc = curit->second;
617 ++it; 617 ++it;
618 618
619 if (cc->CreationDate() >= delete_begin && 619 if (cc->CreationDate() >= delete_begin &&
620 (delete_end.is_null() || cc->CreationDate() < delete_end)) { 620 (delete_end.is_null() || cc->CreationDate() < delete_end)) {
621 InternalDeleteCookie(curit, sync_to_store, DELETE_COOKIE_EXPLICIT); 621 InternalDeleteCookie(curit, sync_to_store, DELETE_COOKIE_EXPLICIT);
622 ++num_deleted; 622 ++num_deleted;
623 } 623 }
624 } 624 }
625 625
626 return num_deleted; 626 return num_deleted;
627 } 627 }
628 628
629 int CookieMonster::DeleteAllCreatedAfter(const Time& delete_begin, 629 int CookieMonster::DeleteAllCreatedAfter(const Time& delete_begin,
630 bool sync_to_store) { 630 bool sync_to_store) {
631 return DeleteAllCreatedBetween(delete_begin, Time(), sync_to_store); 631 return DeleteAllCreatedBetween(delete_begin, Time(), sync_to_store);
632 } 632 }
633 633
634 int CookieMonster::DeleteAllForHost(const GURL& url) { 634 int CookieMonster::DeleteAllForHost(const GURL& url) {
635 AutoLock autolock(lock_); 635 base::AutoLock autolock(lock_);
636 InitIfNecessary(); 636 InitIfNecessary();
637 637
638 if (!HasCookieableScheme(url)) 638 if (!HasCookieableScheme(url))
639 return 0; 639 return 0;
640 640
641 const std::string scheme(url.scheme()); 641 const std::string scheme(url.scheme());
642 const std::string host(url.host()); 642 const std::string host(url.host());
643 643
644 // We store host cookies in the store by their canonical host name; 644 // We store host cookies in the store by their canonical host name;
645 // domain cookies are stored with a leading ".". So this is a pretty 645 // domain cookies are stored with a leading ".". So this is a pretty
(...skipping 10 matching lines...) Expand all
656 if (cc->IsHostCookie() && cc->IsDomainMatch(scheme, host)) { 656 if (cc->IsHostCookie() && cc->IsDomainMatch(scheme, host)) {
657 num_deleted++; 657 num_deleted++;
658 658
659 InternalDeleteCookie(curit, true, DELETE_COOKIE_EXPLICIT); 659 InternalDeleteCookie(curit, true, DELETE_COOKIE_EXPLICIT);
660 } 660 }
661 } 661 }
662 return num_deleted; 662 return num_deleted;
663 } 663 }
664 664
665 bool CookieMonster::DeleteCanonicalCookie(const CanonicalCookie& cookie) { 665 bool CookieMonster::DeleteCanonicalCookie(const CanonicalCookie& cookie) {
666 AutoLock autolock(lock_); 666 base::AutoLock autolock(lock_);
667 InitIfNecessary(); 667 InitIfNecessary();
668 668
669 for (CookieMapItPair its = cookies_.equal_range(GetKey(cookie.Domain())); 669 for (CookieMapItPair its = cookies_.equal_range(GetKey(cookie.Domain()));
670 its.first != its.second; ++its.first) { 670 its.first != its.second; ++its.first) {
671 // The creation date acts as our unique index... 671 // The creation date acts as our unique index...
672 if (its.first->second->CreationDate() == cookie.CreationDate()) { 672 if (its.first->second->CreationDate() == cookie.CreationDate()) {
673 InternalDeleteCookie(its.first, true, DELETE_COOKIE_EXPLICIT); 673 InternalDeleteCookie(its.first, true, DELETE_COOKIE_EXPLICIT);
674 return true; 674 return true;
675 } 675 }
676 } 676 }
677 return false; 677 return false;
678 } 678 }
679 679
680 void CookieMonster::SetCookieableSchemes( 680 void CookieMonster::SetCookieableSchemes(
681 const char* schemes[], size_t num_schemes) { 681 const char* schemes[], size_t num_schemes) {
682 AutoLock autolock(lock_); 682 base::AutoLock autolock(lock_);
683 683
684 // Cookieable Schemes must be set before first use of function. 684 // Cookieable Schemes must be set before first use of function.
685 DCHECK(!initialized_); 685 DCHECK(!initialized_);
686 686
687 cookieable_schemes_.clear(); 687 cookieable_schemes_.clear();
688 cookieable_schemes_.insert(cookieable_schemes_.end(), 688 cookieable_schemes_.insert(cookieable_schemes_.end(),
689 schemes, schemes + num_schemes); 689 schemes, schemes + num_schemes);
690 } 690 }
691 691
692 void CookieMonster::SetExpiryAndKeyScheme(ExpiryAndKeyScheme key_scheme) { 692 void CookieMonster::SetExpiryAndKeyScheme(ExpiryAndKeyScheme key_scheme) {
693 DCHECK(!initialized_); 693 DCHECK(!initialized_);
694 expiry_and_key_scheme_ = key_scheme; 694 expiry_and_key_scheme_ = key_scheme;
695 } 695 }
696 696
697 void CookieMonster::SetClearPersistentStoreOnExit(bool clear_local_store) { 697 void CookieMonster::SetClearPersistentStoreOnExit(bool clear_local_store) {
698 if(store_) 698 if(store_)
699 store_->SetClearLocalStateOnExit(clear_local_store); 699 store_->SetClearLocalStateOnExit(clear_local_store);
700 } 700 }
701 701
702 // static 702 // static
703 void CookieMonster::EnableFileScheme() { 703 void CookieMonster::EnableFileScheme() {
704 enable_file_scheme_ = true; 704 enable_file_scheme_ = true;
705 } 705 }
706 706
707 void CookieMonster::FlushStore(Task* completion_task) { 707 void CookieMonster::FlushStore(Task* completion_task) {
708 AutoLock autolock(lock_); 708 base::AutoLock autolock(lock_);
709 if (initialized_ && store_) 709 if (initialized_ && store_)
710 store_->Flush(completion_task); 710 store_->Flush(completion_task);
711 else if (completion_task) 711 else if (completion_task)
712 MessageLoop::current()->PostTask(FROM_HERE, completion_task); 712 MessageLoop::current()->PostTask(FROM_HERE, completion_task);
713 } 713 }
714 714
715 bool CookieMonster::SetCookieWithOptions(const GURL& url, 715 bool CookieMonster::SetCookieWithOptions(const GURL& url,
716 const std::string& cookie_line, 716 const std::string& cookie_line,
717 const CookieOptions& options) { 717 const CookieOptions& options) {
718 AutoLock autolock(lock_); 718 base::AutoLock autolock(lock_);
719 719
720 if (!HasCookieableScheme(url)) { 720 if (!HasCookieableScheme(url)) {
721 return false; 721 return false;
722 } 722 }
723 723
724 InitIfNecessary(); 724 InitIfNecessary();
725 725
726 return SetCookieWithCreationTimeAndOptions(url, cookie_line, Time(), options); 726 return SetCookieWithCreationTimeAndOptions(url, cookie_line, Time(), options);
727 } 727 }
728 728
729 std::string CookieMonster::GetCookiesWithOptions(const GURL& url, 729 std::string CookieMonster::GetCookiesWithOptions(const GURL& url,
730 const CookieOptions& options) { 730 const CookieOptions& options) {
731 AutoLock autolock(lock_); 731 base::AutoLock autolock(lock_);
732 InitIfNecessary(); 732 InitIfNecessary();
733 733
734 if (!HasCookieableScheme(url)) { 734 if (!HasCookieableScheme(url)) {
735 return std::string(); 735 return std::string();
736 } 736 }
737 737
738 TimeTicks start_time(TimeTicks::Now()); 738 TimeTicks start_time(TimeTicks::Now());
739 739
740 // Get the cookies for this host and its domain(s). 740 // Get the cookies for this host and its domain(s).
741 std::vector<CanonicalCookie*> cookies; 741 std::vector<CanonicalCookie*> cookies;
(...skipping 15 matching lines...) Expand all
757 757
758 histogram_time_get_->AddTime(TimeTicks::Now() - start_time); 758 histogram_time_get_->AddTime(TimeTicks::Now() - start_time);
759 759
760 VLOG(kVlogGetCookies) << "GetCookies() result: " << cookie_line; 760 VLOG(kVlogGetCookies) << "GetCookies() result: " << cookie_line;
761 761
762 return cookie_line; 762 return cookie_line;
763 } 763 }
764 764
765 void CookieMonster::DeleteCookie(const GURL& url, 765 void CookieMonster::DeleteCookie(const GURL& url,
766 const std::string& cookie_name) { 766 const std::string& cookie_name) {
767 AutoLock autolock(lock_); 767 base::AutoLock autolock(lock_);
768 InitIfNecessary(); 768 InitIfNecessary();
769 769
770 if (!HasCookieableScheme(url)) 770 if (!HasCookieableScheme(url))
771 return; 771 return;
772 772
773 CookieOptions options; 773 CookieOptions options;
774 options.set_include_httponly(); 774 options.set_include_httponly();
775 // Get the cookies for this host and its domain(s). 775 // Get the cookies for this host and its domain(s).
776 std::vector<CanonicalCookie*> cookies; 776 std::vector<CanonicalCookie*> cookies;
777 FindCookiesForHostAndDomain(url, options, true, &cookies); 777 FindCookiesForHostAndDomain(url, options, true, &cookies);
(...skipping 21 matching lines...) Expand all
799 return this; 799 return this;
800 } 800 }
801 801
802 CookieMonster::~CookieMonster() { 802 CookieMonster::~CookieMonster() {
803 DeleteAll(false); 803 DeleteAll(false);
804 } 804 }
805 805
806 bool CookieMonster::SetCookieWithCreationTime(const GURL& url, 806 bool CookieMonster::SetCookieWithCreationTime(const GURL& url,
807 const std::string& cookie_line, 807 const std::string& cookie_line,
808 const base::Time& creation_time) { 808 const base::Time& creation_time) {
809 AutoLock autolock(lock_); 809 base::AutoLock autolock(lock_);
810 810
811 if (!HasCookieableScheme(url)) { 811 if (!HasCookieableScheme(url)) {
812 return false; 812 return false;
813 } 813 }
814 814
815 InitIfNecessary(); 815 InitIfNecessary();
816 return SetCookieWithCreationTimeAndOptions(url, cookie_line, creation_time, 816 return SetCookieWithCreationTimeAndOptions(url, cookie_line, creation_time,
817 CookieOptions()); 817 CookieOptions());
818 } 818 }
819 819
(...skipping 1195 matching lines...) Expand 10 before | Expand all | Expand 10 after
2015 std::string CookieMonster::CanonicalCookie::DebugString() const { 2015 std::string CookieMonster::CanonicalCookie::DebugString() const {
2016 return base::StringPrintf( 2016 return base::StringPrintf(
2017 "name: %s value: %s domain: %s path: %s creation: %" 2017 "name: %s value: %s domain: %s path: %s creation: %"
2018 PRId64, 2018 PRId64,
2019 name_.c_str(), value_.c_str(), 2019 name_.c_str(), value_.c_str(),
2020 domain_.c_str(), path_.c_str(), 2020 domain_.c_str(), path_.c_str(),
2021 static_cast<int64>(creation_date_.ToTimeT())); 2021 static_cast<int64>(creation_date_.ToTimeT()));
2022 } 2022 }
2023 2023
2024 } // namespace 2024 } // namespace
OLDNEW
« no previous file with comments | « net/base/cookie_monster.h ('k') | net/base/dnsrr_resolver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698