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

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

Issue 18032002: Wait for store flush in CookieMonster::Delete*Task (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Wait for store flush in CookieMonster::Delete*Task Created 7 years, 4 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
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_monster_unittest.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 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 523
524 void CookieMonster::GetAllCookiesForURLWithOptionsTask::Run() { 524 void CookieMonster::GetAllCookiesForURLWithOptionsTask::Run() {
525 if (!callback_.is_null()) { 525 if (!callback_.is_null()) {
526 CookieList cookies = this->cookie_monster()-> 526 CookieList cookies = this->cookie_monster()->
527 GetAllCookiesForURLWithOptions(url_, options_); 527 GetAllCookiesForURLWithOptions(url_, options_);
528 this->InvokeCallback(base::Bind(&CookieMonster::GetCookieListCallback::Run, 528 this->InvokeCallback(base::Bind(&CookieMonster::GetCookieListCallback::Run,
529 base::Unretained(&callback_), cookies)); 529 base::Unretained(&callback_), cookies));
530 } 530 }
531 } 531 }
532 532
533 // Task class for DeleteAll call. 533 // Base task class for Delete*Task.
534 class CookieMonster::DeleteAllTask : public CookieMonster::CookieMonsterTask { 534 class CookieMonster::DeleteTask
erikwright (departed) 2013/09/04 15:04:38 make this a template class template <typename Res
535 : public CookieMonster::CookieMonsterTask {
535 public: 536 public:
536 DeleteAllTask(CookieMonster* cookie_monster, 537 DeleteTask(CookieMonster* cookie_monster,
537 const CookieMonster::DeleteCallback& callback) 538 const CookieMonster::DeleteCallback& callback)
538 : CookieMonsterTask(cookie_monster), 539 : CookieMonsterTask(cookie_monster),
539 callback_(callback) { 540 callback_(callback) {
540 } 541 }
541 542
543 // Runs the delete task and returns the number of cookies deleted.
544 virtual int RunDeleteTask() = 0;
545
542 // CookieMonster::CookieMonsterTask: 546 // CookieMonster::CookieMonsterTask:
543 virtual void Run() OVERRIDE; 547 virtual void Run() OVERRIDE;
544 548
545 protected: 549 void FlushDone(int num_deleted);
546 virtual ~DeleteAllTask() {}
547 550
548 private: 551 private:
549 CookieMonster::DeleteCallback callback_; 552 CookieMonster::DeleteCallback callback_;
550 553
551 DISALLOW_COPY_AND_ASSIGN(DeleteAllTask); 554 DISALLOW_COPY_AND_ASSIGN(DeleteTask);
552 }; 555 };
553 556
554 void CookieMonster::DeleteAllTask::Run() { 557 void CookieMonster::DeleteTask::Run() {
555 int num_deleted = this->cookie_monster()->DeleteAll(true); 558 int num_deleted = RunDeleteTask();
559 this->cookie_monster()->FlushStore(
560 base::Bind(&CookieMonster::DeleteTask::FlushDone, this, num_deleted));
561 }
562
563 void CookieMonster::DeleteTask::FlushDone(int num_deleted) {
556 if (!callback_.is_null()) { 564 if (!callback_.is_null()) {
557 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run, 565 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
558 base::Unretained(&callback_), num_deleted)); 566 base::Unretained(&callback_), num_deleted));
559 } 567 }
560 } 568 }
561 569
570 // Task class for DeleteAll call.
571 class CookieMonster::DeleteAllTask : public CookieMonster::DeleteTask {
572 public:
573 DeleteAllTask(CookieMonster* cookie_monster,
574 const CookieMonster::DeleteCallback& callback)
575 : DeleteTask(cookie_monster, callback) {
576 }
577
578 // CookieMonster::DeleteTask:
579 virtual int RunDeleteTask() OVERRIDE;
580
581 protected:
582 virtual ~DeleteAllTask() {}
583
584 private:
585
erikwright (departed) 2013/09/04 15:04:38 remove blank line
586 DISALLOW_COPY_AND_ASSIGN(DeleteAllTask);
587 };
588
589 int CookieMonster::DeleteAllTask::RunDeleteTask() {
590 return this->cookie_monster()->DeleteAll(true);
591 }
592
562 // Task class for DeleteAllCreatedBetween call. 593 // Task class for DeleteAllCreatedBetween call.
563 class CookieMonster::DeleteAllCreatedBetweenTask 594 class CookieMonster::DeleteAllCreatedBetweenTask
564 : public CookieMonster::CookieMonsterTask { 595 : public CookieMonster::DeleteTask {
565 public: 596 public:
566 DeleteAllCreatedBetweenTask(CookieMonster* cookie_monster, 597 DeleteAllCreatedBetweenTask(CookieMonster* cookie_monster,
567 const Time& delete_begin, 598 const Time& delete_begin,
568 const Time& delete_end, 599 const Time& delete_end,
569 const CookieMonster::DeleteCallback& callback) 600 const CookieMonster::DeleteCallback& callback)
570 : CookieMonsterTask(cookie_monster), 601 : DeleteTask(cookie_monster, callback),
571 delete_begin_(delete_begin), 602 delete_begin_(delete_begin),
572 delete_end_(delete_end), 603 delete_end_(delete_end) {
573 callback_(callback) {
574 } 604 }
575 605
576 // CookieMonster::CookieMonsterTask: 606 // CookieMonster::DeleteTask:
577 virtual void Run() OVERRIDE; 607 virtual int RunDeleteTask() OVERRIDE;
578 608
579 protected: 609 protected:
580 virtual ~DeleteAllCreatedBetweenTask() {} 610 virtual ~DeleteAllCreatedBetweenTask() {}
581 611
582 private: 612 private:
583 Time delete_begin_; 613 Time delete_begin_;
584 Time delete_end_; 614 Time delete_end_;
585 CookieMonster::DeleteCallback callback_;
586 615
587 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenTask); 616 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenTask);
588 }; 617 };
589 618
590 void CookieMonster::DeleteAllCreatedBetweenTask::Run() { 619 int CookieMonster::DeleteAllCreatedBetweenTask::RunDeleteTask() {
591 int num_deleted = this->cookie_monster()-> 620 return this->cookie_monster()->
592 DeleteAllCreatedBetween(delete_begin_, delete_end_); 621 DeleteAllCreatedBetween(delete_begin_, delete_end_);
593 if (!callback_.is_null()) {
594 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
595 base::Unretained(&callback_), num_deleted));
596 }
597 } 622 }
598 623
599 // Task class for DeleteAllForHost call. 624 // Task class for DeleteAllForHost call.
600 class CookieMonster::DeleteAllForHostTask 625 class CookieMonster::DeleteAllForHostTask : public CookieMonster::DeleteTask {
601 : public CookieMonster::CookieMonsterTask {
602 public: 626 public:
603 DeleteAllForHostTask(CookieMonster* cookie_monster, 627 DeleteAllForHostTask(CookieMonster* cookie_monster,
604 const GURL& url, 628 const GURL& url,
605 const CookieMonster::DeleteCallback& callback) 629 const CookieMonster::DeleteCallback& callback)
606 : CookieMonsterTask(cookie_monster), 630 : DeleteTask(cookie_monster, callback),
607 url_(url), 631 url_(url) {
608 callback_(callback) {
609 } 632 }
610 633
611 // CookieMonster::CookieMonsterTask: 634 // CookieMonster::DeleteTask:
612 virtual void Run() OVERRIDE; 635 virtual int RunDeleteTask() OVERRIDE;
613 636
614 protected: 637 protected:
615 virtual ~DeleteAllForHostTask() {} 638 virtual ~DeleteAllForHostTask() {}
616 639
617 private: 640 private:
618 GURL url_; 641 GURL url_;
619 CookieMonster::DeleteCallback callback_;
620 642
621 DISALLOW_COPY_AND_ASSIGN(DeleteAllForHostTask); 643 DISALLOW_COPY_AND_ASSIGN(DeleteAllForHostTask);
622 }; 644 };
623 645
624 void CookieMonster::DeleteAllForHostTask::Run() { 646 int CookieMonster::DeleteAllForHostTask::RunDeleteTask() {
625 int num_deleted = this->cookie_monster()->DeleteAllForHost(url_); 647 return this->cookie_monster()->DeleteAllForHost(url_);
626 if (!callback_.is_null()) {
627 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
628 base::Unretained(&callback_), num_deleted));
629 }
630 } 648 }
631 649
632 // Task class for DeleteAllCreatedBetweenForHost call. 650 // Task class for DeleteAllCreatedBetweenForHost call.
633 class CookieMonster::DeleteAllCreatedBetweenForHostTask 651 class CookieMonster::DeleteAllCreatedBetweenForHostTask
634 : public CookieMonster::CookieMonsterTask { 652 : public CookieMonster::DeleteTask {
635 public: 653 public:
636 DeleteAllCreatedBetweenForHostTask( 654 DeleteAllCreatedBetweenForHostTask(
637 CookieMonster* cookie_monster, 655 CookieMonster* cookie_monster,
638 Time delete_begin, 656 Time delete_begin,
639 Time delete_end, 657 Time delete_end,
640 const GURL& url, 658 const GURL& url,
641 const CookieMonster::DeleteCallback& callback) 659 const CookieMonster::DeleteCallback& callback)
642 : CookieMonsterTask(cookie_monster), 660 : DeleteTask(cookie_monster, callback),
643 delete_begin_(delete_begin), 661 delete_begin_(delete_begin),
644 delete_end_(delete_end), 662 delete_end_(delete_end),
645 url_(url), 663 url_(url) {
646 callback_(callback) {
647 } 664 }
648 665
649 // CookieMonster::CookieMonsterTask: 666 // CookieMonster::DeleteTask:
650 virtual void Run() OVERRIDE; 667 int RunDeleteTask() OVERRIDE;
651 668
652 protected: 669 protected:
653 virtual ~DeleteAllCreatedBetweenForHostTask() {} 670 virtual ~DeleteAllCreatedBetweenForHostTask() {}
654 671
655 private: 672 private:
656 Time delete_begin_; 673 Time delete_begin_;
657 Time delete_end_; 674 Time delete_end_;
658 GURL url_; 675 GURL url_;
659 CookieMonster::DeleteCallback callback_;
660 676
661 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenForHostTask); 677 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenForHostTask);
662 }; 678 };
663 679
664 void CookieMonster::DeleteAllCreatedBetweenForHostTask::Run() { 680 int CookieMonster::DeleteAllCreatedBetweenForHostTask::RunDeleteTask() {
665 int num_deleted = this->cookie_monster()->DeleteAllCreatedBetweenForHost( 681 return this->cookie_monster()->DeleteAllCreatedBetweenForHost(
666 delete_begin_, delete_end_, url_); 682 delete_begin_, delete_end_, url_);
667 if (!callback_.is_null()) {
668 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
669 base::Unretained(&callback_), num_deleted));
670 }
671 } 683 }
672 684
673 // Task class for DeleteCanonicalCookie call. 685 // Task class for DeleteCanonicalCookie call.
674 class CookieMonster::DeleteCanonicalCookieTask 686 class CookieMonster::DeleteCanonicalCookieTask
675 : public CookieMonster::CookieMonsterTask { 687 : public CookieMonster::CookieMonsterTask {
676 public: 688 public:
677 DeleteCanonicalCookieTask(CookieMonster* cookie_monster, 689 DeleteCanonicalCookieTask(CookieMonster* cookie_monster,
678 const CanonicalCookie& cookie, 690 const CanonicalCookie& cookie,
679 const CookieMonster::DeleteCookieCallback& callback) 691 const CookieMonster::DeleteCookieCallback& callback)
680 : CookieMonsterTask(cookie_monster), 692 : CookieMonsterTask(cookie_monster),
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 821
810 void CookieMonster::DeleteCookieTask::Run() { 822 void CookieMonster::DeleteCookieTask::Run() {
811 this->cookie_monster()->DeleteCookie(url_, cookie_name_); 823 this->cookie_monster()->DeleteCookie(url_, cookie_name_);
812 if (!callback_.is_null()) { 824 if (!callback_.is_null()) {
813 this->InvokeCallback(callback_); 825 this->InvokeCallback(callback_);
814 } 826 }
815 } 827 }
816 828
817 // Task class for DeleteSessionCookies call. 829 // Task class for DeleteSessionCookies call.
818 class CookieMonster::DeleteSessionCookiesTask 830 class CookieMonster::DeleteSessionCookiesTask
819 : public CookieMonster::CookieMonsterTask { 831 : public CookieMonster::DeleteTask {
820 public: 832 public:
821 DeleteSessionCookiesTask(CookieMonster* cookie_monster, 833 DeleteSessionCookiesTask(CookieMonster* cookie_monster,
822 const CookieMonster::DeleteCallback& callback) 834 const CookieMonster::DeleteCallback& callback)
823 : CookieMonsterTask(cookie_monster), callback_(callback) { 835 : DeleteTask(cookie_monster, callback) {
824 } 836 }
825 837
826 // CookieMonster::CookieMonsterTask: 838 // CookieMonster::DeleteTask:
827 virtual void Run() OVERRIDE; 839 virtual int RunDeleteTask() OVERRIDE;
828 840
829 protected: 841 protected:
830 virtual ~DeleteSessionCookiesTask() {} 842 virtual ~DeleteSessionCookiesTask() {}
831 843
832 private: 844 private:
833 CookieMonster::DeleteCallback callback_;
834 845
835 DISALLOW_COPY_AND_ASSIGN(DeleteSessionCookiesTask); 846 DISALLOW_COPY_AND_ASSIGN(DeleteSessionCookiesTask);
836 }; 847 };
837 848
838 void CookieMonster::DeleteSessionCookiesTask::Run() { 849 int CookieMonster::DeleteSessionCookiesTask::RunDeleteTask() {
839 int num_deleted = this->cookie_monster()->DeleteSessionCookies(); 850 return this->cookie_monster()->DeleteSessionCookies();
840 if (!callback_.is_null()) {
841 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
842 base::Unretained(&callback_), num_deleted));
843 }
844 } 851 }
845 852
846 // Task class for HasCookiesForETLDP1Task call. 853 // Task class for HasCookiesForETLDP1Task call.
847 class CookieMonster::HasCookiesForETLDP1Task 854 class CookieMonster::HasCookiesForETLDP1Task
848 : public CookieMonster::CookieMonsterTask { 855 : public CookieMonster::CookieMonsterTask {
849 public: 856 public:
850 HasCookiesForETLDP1Task( 857 HasCookiesForETLDP1Task(
851 CookieMonster* cookie_monster, 858 CookieMonster* cookie_monster,
852 const std::string& etldp1, 859 const std::string& etldp1,
853 const CookieMonster::HasCookiesForETLDP1Callback& callback) 860 const CookieMonster::HasCookiesForETLDP1Callback& callback)
(...skipping 1360 matching lines...) Expand 10 before | Expand all | Expand 10 after
2214 2221
2215 // The system resolution is not high enough, so we can have multiple 2222 // The system resolution is not high enough, so we can have multiple
2216 // set cookies that result in the same system time. When this happens, we 2223 // set cookies that result in the same system time. When this happens, we
2217 // increment by one Time unit. Let's hope computers don't get too fast. 2224 // increment by one Time unit. Let's hope computers don't get too fast.
2218 Time CookieMonster::CurrentTime() { 2225 Time CookieMonster::CurrentTime() {
2219 return std::max(Time::Now(), 2226 return std::max(Time::Now(),
2220 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1)); 2227 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1));
2221 } 2228 }
2222 2229
2223 } // namespace net 2230 } // namespace net
OLDNEW
« no previous file with comments | « net/cookies/cookie_monster.h ('k') | net/cookies/cookie_monster_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698