Add ScopedClosureRunner.
BUG=None
TEST=Unittests
Review URL: http://codereview.chromium.org/8120015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103900 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: 0b5266df8f10697951e8b8f833f3d941b14258f0
diff --git a/base/task.cc b/base/task.cc
index 8c61473..89d2aa8 100644
--- a/base/task.cc
+++ b/base/task.cc
@@ -34,6 +34,21 @@
return tmp;
}
+ScopedClosureRunner::ScopedClosureRunner(const Closure& closure)
+ : closure_(closure) {
+}
+
+ScopedClosureRunner::~ScopedClosureRunner() {
+ if (!closure_.is_null())
+ closure_.Run();
+}
+
+Closure ScopedClosureRunner::Release() {
+ Closure result = closure_;
+ closure_.Reset();
+ return result;
+}
+
namespace subtle {
TaskClosureAdapter::TaskClosureAdapter(Task* task)