• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)29 CefRefPtr<CefTask> CefCreateClosureTask(const base::Closure& closure) {
30   return new CefClosureTask(closure);
31 }
32 
CefPostTask(CefThreadId threadId,const base::Closure & closure)33 bool 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)37 bool CefPostDelayedTask(CefThreadId threadId,
38                         const base::Closure& closure,
39                         int64 delay_ms) {
40   return CefPostDelayedTask(threadId, new CefClosureTask(closure), delay_ms);
41 }
42