blob: 049cfdd26e8203ff67c6b125aaed76f1a8391e9b [file] [log] [blame]
[email protected]4447016b2013-02-23 19:07:441// 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
dcheng0765c492016-04-06 22:41:538#include <memory>
[email protected]a4eca0a2013-06-20 22:15:059#include <string>
10
avic5960f32015-12-22 22:49:4811#include "base/macros.h"
[email protected]4447016b2013-02-23 19:07:4412#include "base/memory/ref_counted.h"
[email protected]4447016b2013-02-23 19:07:4413#include "base/threading/non_thread_safe.h"
14
15namespace base {
16class SingleThreadTaskRunner;
[email protected]8c83a71c2013-12-16 18:02:5817} // namespace base
18
19namespace webrtc {
20class DesktopSize;
21} // namespace webrtc
[email protected]4447016b2013-02-23 19:07:4422
[email protected]4447016b2013-02-23 19:07:4423namespace remoting {
24
25// Establishes a loopback RDP connection to spawn a new Windows session.
26class 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.
[email protected]a4eca0a2013-06-20 22:15:0534 virtual void OnRdpConnected() = 0;
[email protected]4447016b2013-02-23 19:07:4435
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,
[email protected]8c83a71c2013-12-16 18:02:5843 const webrtc::DesktopSize& screen_size,
[email protected]a4eca0a2013-06-20 22:15:0544 const std::string& terminal_id,
[email protected]4447016b2013-02-23 19:07:4445 EventHandler* event_handler);
46 virtual ~RdpClient();
47
[email protected]97328ee2013-06-04 06:46:5948 // Sends Secure Attention Sequence to the session.
49 void InjectSas();
50
[email protected]4447016b2013-02-23 19:07:4451 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_