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