From 56835ecb2b31d9976754d95a5ba7e101cc6fab3f Mon Sep 17 00:00:00 2001 From: "mbelshe@chromium.org" Date: Thu, 11 Mar 2010 16:29:04 +0000 Subject: Change the ScopedRunnableMethodFactory to use CancelableTasks so that callers can issue fine-grained Cancel() for individual tasks BUG=none TEST=none Review URL: http://codereview.chromium.org/802004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41279 0039d316-1c4b-4281-b951-d872f2087c98 --- base/task.h | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'base') diff --git a/base/task.h b/base/task.h index 0af79a4..454878a 100644 --- a/base/task.h +++ b/base/task.h @@ -83,25 +83,26 @@ class ScopedRunnableMethodFactory { } template - inline Task* NewRunnableMethod(Method method) { + inline CancelableTask* NewRunnableMethod(Method method) { return new RunnableMethod( weak_factory_.GetWeakPtr(), method, MakeTuple()); } template - inline Task* NewRunnableMethod(Method method, const A& a) { + inline CancelableTask* NewRunnableMethod(Method method, const A& a) { return new RunnableMethod >( weak_factory_.GetWeakPtr(), method, MakeTuple(a)); } template - inline Task* NewRunnableMethod(Method method, const A& a, const B& b) { + inline CancelableTask* NewRunnableMethod(Method method, const A& a, + const B& b) { return new RunnableMethod >( weak_factory_.GetWeakPtr(), method, MakeTuple(a, b)); } template - inline Task* NewRunnableMethod(Method method, + inline CancelableTask* NewRunnableMethod(Method method, const A& a, const B& b, const C& c) { @@ -110,7 +111,7 @@ class ScopedRunnableMethodFactory { } template - inline Task* NewRunnableMethod(Method method, + inline CancelableTask* NewRunnableMethod(Method method, const A& a, const B& b, const C& c, @@ -120,7 +121,7 @@ class ScopedRunnableMethodFactory { } template - inline Task* NewRunnableMethod(Method method, + inline CancelableTask* NewRunnableMethod(Method method, const A& a, const B& b, const C& c, @@ -136,9 +137,10 @@ class ScopedRunnableMethodFactory { protected: template - class RunnableMethod : public Task { + class RunnableMethod : public CancelableTask { public: - RunnableMethod(const base::WeakPtr& obj, Method meth, const Params& params) + RunnableMethod(const base::WeakPtr& obj, Method meth, + const Params& params) : obj_(obj), meth_(meth), params_(params) { @@ -151,6 +153,10 @@ class ScopedRunnableMethodFactory { DispatchToMethod(obj_.get(), meth_, params_); } + virtual void Cancel() { + obj_.reset(); + } + private: base::WeakPtr obj_; Method meth_; -- cgit v1.1