Home | History | Annotate | Download | only in win
      1 // Copyright (c) 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_WIN_RDP_CLIENT_H_
      6 #define REMOTING_HOST_WIN_RDP_CLIENT_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/ref_counted.h"
     12 #include "base/memory/scoped_ptr.h"
     13 #include "base/threading/non_thread_safe.h"
     14 
     15 namespace base {
     16 class SingleThreadTaskRunner;
     17 }  // namespace base
     18 
     19 namespace webrtc {
     20 class DesktopSize;
     21 }  // namespace webrtc
     22 
     23 namespace remoting {
     24 
     25 // Establishes a loopback RDP connection to spawn a new Windows session.
     26 class RdpClient : public base::NonThreadSafe {
     27  public:
     28   class EventHandler {
     29    public:
     30     virtual ~EventHandler() {}
     31 
     32     // Notifies the event handler that an RDP connection has been established
     33     // successfully.
     34     virtual void OnRdpConnected() = 0;
     35 
     36     // Notifies that the RDP connection has been closed.
     37     virtual void OnRdpClosed() = 0;
     38   };
     39 
     40   RdpClient(
     41       scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
     42       scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
     43       const webrtc::DesktopSize& screen_size,
     44       const std::string& terminal_id,
     45       EventHandler* event_handler);
     46   virtual ~RdpClient();
     47 
     48   // Sends Secure Attention Sequence to the session.
     49   void InjectSas();
     50 
     51  private:
     52   // The actual implementation resides in Core class.
     53   class Core;
     54   scoped_refptr<Core> core_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(RdpClient);
     57 };
     58 
     59 }  // namespace remoting
     60 
     61 #endif  // REMOTING_HOST_WIN_RDP_CLIENT_H_
     62