1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef REMOTING_HOST_INPUT_INJECTOR_H_
6#define REMOTING_HOST_INPUT_INJECTOR_H_
7
8#include "base/memory/ref_counted.h"
9#include "base/memory/scoped_ptr.h"
10#include "remoting/protocol/clipboard_stub.h"
11#include "remoting/protocol/input_stub.h"
12
13namespace base {
14class SingleThreadTaskRunner;
15}  // namespace base
16
17namespace remoting {
18
19class InputInjector : public protocol::ClipboardStub,
20                      public protocol::InputStub {
21 public:
22  // Creates a default input injector for the current platform. This
23  // object should do as much work as possible on |main_task_runner|,
24  // using |ui_task_runner| only for tasks actually requiring a UI
25  // thread.
26  static scoped_ptr<InputInjector> Create(
27      scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
28      scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
29
30  // Initialises any objects needed to execute events.
31  virtual void Start(
32      scoped_ptr<protocol::ClipboardStub> client_clipboard) = 0;
33};
34
35}  // namespace remoting
36
37#endif  // REMOTING_HOST_INPUT_INJECTOR_H_
38