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

Unified 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: template DeleteTask Created 7 years, 3 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/cookies/cookie_monster.cc
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc
index f24637735fd44a3be289b58bec803081a1e25739..0abbd90d9a04fd4060e130beec6679cb50135ebf 100644
--- a/net/cookies/cookie_monster.cc
+++ b/net/cookies/cookie_monster.cc
@@ -530,51 +530,98 @@ void CookieMonster::GetAllCookiesForURLWithOptionsTask::Run() {
}
}
-// Task class for DeleteAll call.
-class CookieMonster::DeleteAllTask : public CookieMonster::CookieMonsterTask {
+// Base task class for Delete*Task.
+template <typename Callback, typename Result>
+class CookieMonster::DeleteTask : public CookieMonster::CookieMonsterTask {
public:
- DeleteAllTask(CookieMonster* cookie_monster,
- const CookieMonster::DeleteCallback& callback)
+ DeleteTask(CookieMonster* cookie_monster,
+ const Callback& callback)
: CookieMonsterTask(cookie_monster),
callback_(callback) {
}
+ // Runs the delete task and returns a result.
+ virtual Result RunDeleteTask() = 0;
+
// CookieMonster::CookieMonsterTask:
virtual void Run() OVERRIDE;
+ void FlushDone(const base::Closure& callback);
+
+ private:
+ Callback callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(DeleteTask);
+};
+
+template <typename Callback, typename Result>
+base::Closure RunDeleteTaskAndBindCallback(
+ CookieMonster::DeleteTask<Callback, Result>* task,
+ const Callback& callback) {
+ return base::Bind(callback, task->RunDeleteTask());
+}
+
+template <typename Callback>
philipj_slow 2013/09/05 14:39:12 I wanted to do this: template <> base::Closure Ru
erikwright (departed) 2013/09/05 20:28:18 Presumably in cookie_monster.h the declaration of
+base::Closure RunDeleteTaskAndBindCallback(
+ CookieMonster::DeleteTask<Callback, void>* task,
+ const Callback& callback) {
+ task->RunDeleteTask();
+ return callback;
+}
+
+template <typename Callback, typename Result>
+void CookieMonster::DeleteTask<Callback, Result>::Run() {
+ this->cookie_monster()->FlushStore(
+ base::Bind(&CookieMonster::DeleteTask<Callback, Result>::FlushDone, this,
+ RunDeleteTaskAndBindCallback(this, callback_)));
+}
+
+template <typename Callback, typename Result>
+void CookieMonster::DeleteTask<Callback, Result>::FlushDone(
+ const base::Closure& callback) {
+ if (!callback.is_null()) {
+ this->InvokeCallback(callback);
+ }
+}
+
+// Task class for DeleteAll call.
+class CookieMonster::DeleteAllTask
+ : public CookieMonster::DeleteTask<CookieMonster::DeleteCallback, int> {
+ public:
+ DeleteAllTask(CookieMonster* cookie_monster,
+ const CookieMonster::DeleteCallback& callback)
+ : DeleteTask(cookie_monster, callback) {
+ }
+
+ // CookieMonster::DeleteTask:
+ virtual int RunDeleteTask() OVERRIDE;
+
protected:
virtual ~DeleteAllTask() {}
private:
- CookieMonster::DeleteCallback callback_;
-
DISALLOW_COPY_AND_ASSIGN(DeleteAllTask);
};
-void CookieMonster::DeleteAllTask::Run() {
- int num_deleted = this->cookie_monster()->DeleteAll(true);
- if (!callback_.is_null()) {
- this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
- base::Unretained(&callback_), num_deleted));
- }
+int CookieMonster::DeleteAllTask::RunDeleteTask() {
+ return this->cookie_monster()->DeleteAll(true);
}
// Task class for DeleteAllCreatedBetween call.
class CookieMonster::DeleteAllCreatedBetweenTask
- : public CookieMonster::CookieMonsterTask {
+ : public CookieMonster::DeleteTask<CookieMonster::DeleteCallback, int> {
public:
DeleteAllCreatedBetweenTask(CookieMonster* cookie_monster,
const Time& delete_begin,
const Time& delete_end,
const CookieMonster::DeleteCallback& callback)
- : CookieMonsterTask(cookie_monster),
+ : DeleteTask(cookie_monster, callback),
delete_begin_(delete_begin),
- delete_end_(delete_end),
- callback_(callback) {
+ delete_end_(delete_end) {
}
- // CookieMonster::CookieMonsterTask:
- virtual void Run() OVERRIDE;
+ // CookieMonster::DeleteTask:
+ virtual int RunDeleteTask() OVERRIDE;
protected:
virtual ~DeleteAllCreatedBetweenTask() {}
@@ -582,56 +629,45 @@ class CookieMonster::DeleteAllCreatedBetweenTask
private:
Time delete_begin_;
Time delete_end_;
- CookieMonster::DeleteCallback callback_;
DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenTask);
};
-void CookieMonster::DeleteAllCreatedBetweenTask::Run() {
- int num_deleted = this->cookie_monster()->
+int CookieMonster::DeleteAllCreatedBetweenTask::RunDeleteTask() {
+ return this->cookie_monster()->
DeleteAllCreatedBetween(delete_begin_, delete_end_);
- if (!callback_.is_null()) {
- this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
- base::Unretained(&callback_), num_deleted));
- }
}
// Task class for DeleteAllForHost call.
class CookieMonster::DeleteAllForHostTask
- : public CookieMonster::CookieMonsterTask {
+ : public CookieMonster::DeleteTask<CookieMonster::DeleteCallback, int> {
public:
DeleteAllForHostTask(CookieMonster* cookie_monster,
const GURL& url,
const CookieMonster::DeleteCallback& callback)
- : CookieMonsterTask(cookie_monster),
- url_(url),
- callback_(callback) {
+ : DeleteTask(cookie_monster, callback),
+ url_(url) {
}
- // CookieMonster::CookieMonsterTask:
- virtual void Run() OVERRIDE;
+ // CookieMonster::DeleteTask:
+ virtual int RunDeleteTask() OVERRIDE;
protected:
virtual ~DeleteAllForHostTask() {}
private:
GURL url_;
- CookieMonster::DeleteCallback callback_;
DISALLOW_COPY_AND_ASSIGN(DeleteAllForHostTask);
};
-void CookieMonster::DeleteAllForHostTask::Run() {
- int num_deleted = this->cookie_monster()->DeleteAllForHost(url_);
- if (!callback_.is_null()) {
- this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
- base::Unretained(&callback_), num_deleted));
- }
+int CookieMonster::DeleteAllForHostTask::RunDeleteTask() {
+ return this->cookie_monster()->DeleteAllForHost(url_);
}
// Task class for DeleteAllCreatedBetweenForHost call.
class CookieMonster::DeleteAllCreatedBetweenForHostTask
- : public CookieMonster::CookieMonsterTask {
+ : public CookieMonster::DeleteTask<CookieMonster::DeleteCallback, int> {
public:
DeleteAllCreatedBetweenForHostTask(
CookieMonster* cookie_monster,
@@ -639,15 +675,14 @@ class CookieMonster::DeleteAllCreatedBetweenForHostTask
Time delete_end,
const GURL& url,
const CookieMonster::DeleteCallback& callback)
- : CookieMonsterTask(cookie_monster),
+ : DeleteTask(cookie_monster, callback),
delete_begin_(delete_begin),
delete_end_(delete_end),
- url_(url),
- callback_(callback) {
+ url_(url) {
}
- // CookieMonster::CookieMonsterTask:
- virtual void Run() OVERRIDE;
+ // CookieMonster::DeleteTask:
+ virtual int RunDeleteTask() OVERRIDE;
protected:
virtual ~DeleteAllCreatedBetweenForHostTask() {}
@@ -656,51 +691,40 @@ class CookieMonster::DeleteAllCreatedBetweenForHostTask
Time delete_begin_;
Time delete_end_;
GURL url_;
- CookieMonster::DeleteCallback callback_;
DISALLOW_COPY_AND_ASSIGN(DeleteAllCreatedBetweenForHostTask);
};
-void CookieMonster::DeleteAllCreatedBetweenForHostTask::Run() {
- int num_deleted = this->cookie_monster()->DeleteAllCreatedBetweenForHost(
+int CookieMonster::DeleteAllCreatedBetweenForHostTask::RunDeleteTask() {
+ return this->cookie_monster()->DeleteAllCreatedBetweenForHost(
delete_begin_, delete_end_, url_);
- if (!callback_.is_null()) {
- this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
- base::Unretained(&callback_), num_deleted));
- }
}
// Task class for DeleteCanonicalCookie call.
class CookieMonster::DeleteCanonicalCookieTask
- : public CookieMonster::CookieMonsterTask {
+ : public CookieMonster::DeleteTask<CookieMonster::DeleteCookieCallback, bool> {
public:
DeleteCanonicalCookieTask(CookieMonster* cookie_monster,
const CanonicalCookie& cookie,
const CookieMonster::DeleteCookieCallback& callback)
- : CookieMonsterTask(cookie_monster),
- cookie_(cookie),
- callback_(callback) {
+ : DeleteTask(cookie_monster, callback),
+ cookie_(cookie) {
}
- // CookieMonster::CookieMonsterTask:
- virtual void Run() OVERRIDE;
+ // CookieMonster::DeleteTask:
+ virtual bool RunDeleteTask() OVERRIDE;
protected:
virtual ~DeleteCanonicalCookieTask() {}
private:
CanonicalCookie cookie_;
- CookieMonster::DeleteCookieCallback callback_;
DISALLOW_COPY_AND_ASSIGN(DeleteCanonicalCookieTask);
};
-void CookieMonster::DeleteCanonicalCookieTask::Run() {
- bool result = this->cookie_monster()->DeleteCanonicalCookie(cookie_);
- if (!callback_.is_null()) {
- this->InvokeCallback(base::Bind(&CookieMonster::DeleteCookieCallback::Run,
- base::Unretained(&callback_), result));
- }
+bool CookieMonster::DeleteCanonicalCookieTask::RunDeleteTask() {
+ return this->cookie_monster()->DeleteCanonicalCookie(cookie_);
}
// Task class for SetCookieWithOptions call.
@@ -782,19 +806,19 @@ void CookieMonster::GetCookiesWithOptionsTask::Run() {
// Task class for DeleteCookie call.
class CookieMonster::DeleteCookieTask
- : public CookieMonster::CookieMonsterTask {
+ : public CookieMonster::DeleteTask<base::Closure, void> {
public:
DeleteCookieTask(CookieMonster* cookie_monster,
const GURL& url,
const std::string& cookie_name,
const base::Closure& callback)
- : CookieMonsterTask(cookie_monster),
+ : DeleteTask(cookie_monster, callback),
url_(url),
- cookie_name_(cookie_name),
- callback_(callback) { }
+ cookie_name_(cookie_name) {
+ }
- // CookieMonster::CookieMonsterTask:
- virtual void Run() OVERRIDE;
+ // CookieMonster::DeleteTask:
+ virtual void RunDeleteTask() OVERRIDE;
protected:
virtual ~DeleteCookieTask() {}
@@ -802,45 +826,36 @@ class CookieMonster::DeleteCookieTask
private:
GURL url_;
std::string cookie_name_;
- base::Closure callback_;
DISALLOW_COPY_AND_ASSIGN(DeleteCookieTask);
};
-void CookieMonster::DeleteCookieTask::Run() {
+void CookieMonster::DeleteCookieTask::RunDeleteTask() {
this->cookie_monster()->DeleteCookie(url_, cookie_name_);
- if (!callback_.is_null()) {
- this->InvokeCallback(callback_);
- }
}
// Task class for DeleteSessionCookies call.
class CookieMonster::DeleteSessionCookiesTask
- : public CookieMonster::CookieMonsterTask {
+ : public CookieMonster::DeleteTask<CookieMonster::DeleteCallback, int> {
public:
DeleteSessionCookiesTask(CookieMonster* cookie_monster,
const CookieMonster::DeleteCallback& callback)
- : CookieMonsterTask(cookie_monster), callback_(callback) {
+ : DeleteTask(cookie_monster, callback) {
}
- // CookieMonster::CookieMonsterTask:
- virtual void Run() OVERRIDE;
+ // CookieMonster::DeleteTask:
+ virtual int RunDeleteTask() OVERRIDE;
protected:
virtual ~DeleteSessionCookiesTask() {}
private:
- CookieMonster::DeleteCallback callback_;
DISALLOW_COPY_AND_ASSIGN(DeleteSessionCookiesTask);
};
-void CookieMonster::DeleteSessionCookiesTask::Run() {
- int num_deleted = this->cookie_monster()->DeleteSessionCookies();
- if (!callback_.is_null()) {
- this->InvokeCallback(base::Bind(&CookieMonster::DeleteCallback::Run,
- base::Unretained(&callback_), num_deleted));
- }
+int CookieMonster::DeleteSessionCookiesTask::RunDeleteTask() {
+ return this->cookie_monster()->DeleteSessionCookies();
}
// Task class for HasCookiesForETLDP1Task call.
« 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