1 // Copyright 2013 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_HOST_WINDOW_PROXY_H_ 6 #define REMOTING_HOST_HOST_WINDOW_PROXY_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/ref_counted.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/weak_ptr.h" 12 #include "remoting/host/host_window.h" 13 14 namespace base { 15 class SingleThreadTaskRunner; 16 } 17 18 namespace remoting { 19 20 // Takes an instance of |HostWindow| and runs it on the |ui_task_runner| thread. 21 class HostWindowProxy : public HostWindow { 22 public: 23 HostWindowProxy( 24 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 25 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, 26 scoped_ptr<HostWindow> host_window); 27 virtual ~HostWindowProxy(); 28 29 // HostWindow overrides. 30 virtual void Start( 31 const base::WeakPtr<ClientSessionControl>& client_session_control) 32 OVERRIDE; 33 34 private: 35 // All thread switching logic is implemented in the ref-counted |Core| class. 36 class Core; 37 scoped_refptr<Core> core_; 38 39 DISALLOW_COPY_AND_ASSIGN(HostWindowProxy); 40 }; 41 42 } // namespace remoting 43 44 #endif // REMOTING_HOST_HOST_WINDOW_PROXY_H_ 45