--- /dev/null
+// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights
+// reserved. Use of this source code is governed by a BSD-style license that
+// can be found in the LICENSE file.
+
+#include "include/wrapper/cef_closure_task.h"
+#include "include/base/cef_callback.h"
+
+namespace {
+
+class CefClosureTask : public CefTask {
+ public:
+ explicit CefClosureTask(const base::Closure& closure)
+ : closure_(closure) {
+ }
+
+ // CefTask method
+ virtual void Execute() OVERRIDE {
+ closure_.Run();
+ closure_.Reset();
+ }
+
+ private:
+ base::Closure closure_;
+
+ IMPLEMENT_REFCOUNTING(CefClosureTask);
+ DISALLOW_COPY_AND_ASSIGN(CefClosureTask);
+};
+
+} // namespace
+
+CefRefPtr<CefTask> CefCreateClosureTask(const base::Closure& closure) {
+ return new CefClosureTask(closure);
+}
+
+bool CefPostTask(CefThreadId threadId, const base::Closure& closure) {
+ return CefPostTask(threadId, new CefClosureTask(closure));
+}
+
+bool CefPostDelayedTask(CefThreadId threadId, const base::Closure& closure,
+ int64 delay_ms) {
+ return CefPostDelayedTask(threadId, new CefClosureTask(closure), delay_ms);
+}