1 // Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights 2 // reserved. Use of this source code is governed by a BSD-style license that 3 // can be found in the LICENSE file. 4 5 #include "include/wrapper/cef_closure_task.h" 6 #include "include/base/cef_callback.h" 7 8 namespace { 9 10 class CefClosureTask : public CefTask { 11 public: CefClosureTask(const base::Closure & closure)12 explicit CefClosureTask(const base::Closure& closure) : closure_(closure) {} 13 14 // CefTask method Execute()15 virtual void Execute() OVERRIDE { 16 closure_.Run(); 17 closure_.Reset(); 18 } 19 20 private: 21 base::Closure closure_; 22 23 IMPLEMENT_REFCOUNTING(CefClosureTask); 24 DISALLOW_COPY_AND_ASSIGN(CefClosureTask); 25 }; 26 27 } // namespace 28 CefCreateClosureTask(const base::Closure & closure)29CefRefPtr<CefTask> CefCreateClosureTask(const base::Closure& closure) { 30 return new CefClosureTask(closure); 31 } 32 CefPostTask(CefThreadId threadId,const base::Closure & closure)33bool CefPostTask(CefThreadId threadId, const base::Closure& closure) { 34 return CefPostTask(threadId, new CefClosureTask(closure)); 35 } 36 CefPostDelayedTask(CefThreadId threadId,const base::Closure & closure,int64 delay_ms)37bool CefPostDelayedTask(CefThreadId threadId, 38 const base::Closure& closure, 39 int64 delay_ms) { 40 return CefPostDelayedTask(threadId, new CefClosureTask(closure), delay_ms); 41 } 42