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 14namespace base { 15class SingleThreadTaskRunner; 16} 17 18namespace remoting { 19 20// Takes an instance of |HostWindow| and runs it on the |ui_task_runner| thread. 21class 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