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 13 namespace base { 14 class SingleThreadTaskRunner; 15 } // namespace base 16 17 namespace remoting { 18 19 class 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