summaryrefslogtreecommitdiffstats
path: root/remoting/client/plugin/pepper_main_thread_task_runner.h
blob: 9b5c8e8d37fbaca7bfb2644853e08757ac26fc6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef REMOTING_CLIENT_PLUGIN_PEPPER_MAIN_THREAD_TASK_RUNNER_H_
#define REMOTING_CLIENT_PLUGIN_PEPPER_MAIN_THREAD_TASK_RUNNER_H_

#include <stdint.h>

#include "base/callback_forward.h"
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/single_thread_task_runner.h"
#include "base/time/time.h"
#include "ppapi/utility/completion_callback_factory.h"

namespace pp {
class Core;
}  // namespace pp

namespace remoting {

// SingleThreadTaskRunner implementation for the main plugin thread.
class PepperMainThreadTaskRunner : public base::SingleThreadTaskRunner {
 public:
  PepperMainThreadTaskRunner();

  // base::SingleThreadTaskRunner interface.
  bool PostDelayedTask(const tracked_objects::Location& from_here,
                       const base::Closure& task,
                       base::TimeDelta delay) override;
  bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
                                  const base::Closure& task,
                                  base::TimeDelta delay) override;
  bool RunsTasksOnCurrentThread() const override;

 protected:
  ~PepperMainThreadTaskRunner() override;

 private:
  // Helper that allows a base::Closure to be used as a pp::CompletionCallback,
  // by ignoring the completion result.
  void RunTask(int32_t result, const base::Closure& task);

  pp::Core* core_;
  pp::CompletionCallbackFactory<PepperMainThreadTaskRunner> callback_factory_;

  DISALLOW_COPY_AND_ASSIGN(PepperMainThreadTaskRunner);
};

}  // namespace remoting

#endif  // REMOTING_CLIENT_PLUGIN_PEPPER_MAIN_THREAD_TASK_RUNNER_H_