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

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: Changes based on feedback 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 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 }; 552 };
553 553
554 void CookieMonster::DeleteAllTask::Run() { 554 void CookieMonster::DeleteAllTask::Run() {
555 int num_deleted = this->cookie_monster()->DeleteAll(true); 555 int num_deleted = this->cookie_monster()->DeleteAll(true);
556 if (!callback_.is_null()) { 556 if (!callback_.is_null()) {
557 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run, 557 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
558 base::Unretained(&callback_), num_deleted)); 558 base::Unretained(&callback_), num_deleted));
559 } 559 }
560 } 560 }
561 561
562 // Base task class for Delete*Task.
563 class CookieMonster::DeleteTask
564 : public CookieMonster::CookieMonsterTask {
565 public:
566 DeleteTask(CookieMonster* cookie_monster,
567 const CookieMonster::DeleteCallback& callback)
568 : CookieMonsterTask(cookie_monster),
569 callback_(callback) {
570 }
571
572 void FlushDone(int num_deleted);
573
574 private:
575 CookieMonster::DeleteCallback callback_;
576
577 DISALLOW_COPY_AND_ASSIGN(DeleteTask);
578 };
579
580 void CookieMonster::DeleteTask::FlushDone(int num_deleted) {
581 if (!callback_.is_null()) {
582 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
583 base::Unretained(&callback_), num_deleted));
584 }
585 }
586
562 // Task class for DeleteAllCreatedBetween call. 587 // Task class for DeleteAllCreatedBetween call.
563 class CookieMonster::DeleteAllCreatedBetweenTask 588 class CookieMonster::DeleteAllCreatedBetweenTask
564 : public CookieMonster::CookieMonsterTask { 589 : public CookieMonster::DeleteTask {
565 public: 590 public:
566 DeleteAllCreatedBetweenTask(CookieMonster* cookie_monster, 591 DeleteAllCreatedBetweenTask(CookieMonster* cookie_monster,
567 const Time& delete_begin, 592 const Time& delete_begin,
568 const Time& delete_end, 593 const Time& delete_end,
569 const CookieMonster::DeleteCallback& callback) 594 const CookieMonster::DeleteCallback& callback)
570 : CookieMonsterTask(cookie_monster), 595 : DeleteTask(cookie_monster, callback),
571 delete_begin_(delete_begin), 596 delete_begin_(delete_begin),
572 delete_end_(delete_end), 597 delete_end_(delete_end) {
573 callback_(callback) {
574 } 598 }
575 599
576 // CookieMonster::CookieMonsterTask: 600 // CookieMonster::CookieMonsterTask:
577 virtual void Run() OVERRIDE; 601 virtual void Run() OVERRIDE;
578 602
579 protected: 603 protected:
580 virtual ~DeleteAllCreatedBetweenTask() {} 604 virtual ~DeleteAllCreatedBetweenTask() {}
581 605
582 private: 606 private:
583 Time delete_begin_; 607 Time delete_begin_;
584 Time delete_end_; 608 Time delete_end_;
585 CookieMonster::DeleteCallback callback_;
586 609
587 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenTask); 610 DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenTask);
588 }; 611 };
589 612
590 void CookieMonster::DeleteAllCreatedBetweenTask::Run() { 613 void CookieMonster::DeleteAllCreatedBetweenTask::Run() {
erikwright (departed) 2013/08/09 17:31:51 Pull this method up to DeleteTask and delegate to
591 int num_deleted = this->cookie_monster()-> 614 int num_deleted = this->cookie_monster()->
592 DeleteAllCreatedBetween(delete_begin_, delete_end_); 615 DeleteAllCreatedBetween(delete_begin_, delete_end_);
593 if (!callback_.is_null()) { 616 this->cookie_monster()->FlushStore(
594 this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run, 617 base::Bind(&CookieMonster::DeleteTask::FlushDone, this, num_deleted));
595 base::Unretained(&callback_), num_deleted));
596 }
597 } 618 }
598 619
599 // Task class for DeleteAllForHost call. 620 // Task class for DeleteAllForHost call.
600 class CookieMonster::DeleteAllForHostTask 621 class CookieMonster::DeleteAllForHostTask
601 : public CookieMonster::CookieMonsterTask { 622 : public CookieMonster::CookieMonsterTask {
602 public: 623 public:
603 DeleteAllForHostTask(CookieMonster* cookie_monster, 624 DeleteAllForHostTask(CookieMonster* cookie_monster,
604 const GURL& url, 625 const GURL& url,
605 const CookieMonster::DeleteCallback& callback) 626 const CookieMonster::DeleteCallback& callback)
606 : CookieMonsterTask(cookie_monster), 627 : CookieMonsterTask(cookie_monster),
(...skipping 1543 matching lines...) Expand 10 before | Expand all | Expand 10 after
2150 2171
2151 // The system resolution is not high enough, so we can have multiple 2172 // 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 2173 // 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. 2174 // increment by one Time unit. Let's hope computers don't get too fast.
2154 Time CookieMonster::CurrentTime() { 2175 Time CookieMonster::CurrentTime() {
2155 return std::max(Time::Now(), 2176 return std::max(Time::Now(),
2156 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1)); 2177 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1));
2157 } 2178 }
2158 2179
2159 } // namespace net 2180 } // 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