Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Side by Side Diff: remoting/host/desktop_session_proxy.h

Issue 13932020: Set the initial resolution of an RDP session to the client screen resolution if it is available. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: CR feedback #2 Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef REMOTING_HOST_DESKTOP_SESSION_PROXY_H_ 5 #ifndef REMOTING_HOST_DESKTOP_SESSION_PROXY_H_
6 #define REMOTING_HOST_DESKTOP_SESSION_PROXY_H_ 6 #define REMOTING_HOST_DESKTOP_SESSION_PROXY_H_
7 7
8 #include <map> 8 #include <map>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 20 matching lines...) Expand all
31 namespace IPC { 31 namespace IPC {
32 class ChannelProxy; 32 class ChannelProxy;
33 class Message; 33 class Message;
34 } // namespace IPC 34 } // namespace IPC
35 35
36 struct SerializedCapturedData; 36 struct SerializedCapturedData;
37 37
38 namespace remoting { 38 namespace remoting {
39 39
40 class AudioPacket; 40 class AudioPacket;
41 class Capabilities;
41 class ClientSession; 42 class ClientSession;
42 class ClientSessionControl; 43 class ClientSessionControl;
43 class DesktopSessionConnector; 44 class DesktopSessionConnector;
44 struct DesktopSessionProxyTraits; 45 struct DesktopSessionProxyTraits;
45 class IpcAudioCapturer; 46 class IpcAudioCapturer;
46 class IpcVideoFrameCapturer; 47 class IpcVideoFrameCapturer;
47 class ScreenControls; 48 class ScreenControls;
48 49
49 // DesktopSessionProxy is created by an owning DesktopEnvironment to route 50 // DesktopSessionProxy is created by an owning DesktopEnvironment to route
50 // requests from stubs to the DesktopSessionAgent instance through 51 // requests from stubs to the DesktopSessionAgent instance through
(...skipping 12 matching lines...) Expand all
63 class DesktopSessionProxy 64 class DesktopSessionProxy
64 : public base::RefCountedThreadSafe<DesktopSessionProxy, 65 : public base::RefCountedThreadSafe<DesktopSessionProxy,
65 DesktopSessionProxyTraits>, 66 DesktopSessionProxyTraits>,
66 public IPC::Listener { 67 public IPC::Listener {
67 public: 68 public:
68 DesktopSessionProxy( 69 DesktopSessionProxy(
69 scoped_refptr<base::SingleThreadTaskRunner> audio_capture_task_runner, 70 scoped_refptr<base::SingleThreadTaskRunner> audio_capture_task_runner,
70 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 71 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
71 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, 72 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
72 scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner, 73 scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner,
73 base::WeakPtr<ClientSessionControl> client_session_control); 74 base::WeakPtr<ClientSessionControl> client_session_control,
75 base::WeakPtr<DesktopSessionConnector> desktop_session_connector,
76 bool virtual_terminal);
74 77
75 // Mirrors DesktopEnvironment. 78 // Mirrors DesktopEnvironment.
76 scoped_ptr<AudioCapturer> CreateAudioCapturer(); 79 scoped_ptr<AudioCapturer> CreateAudioCapturer();
77 scoped_ptr<InputInjector> CreateInputInjector(); 80 scoped_ptr<InputInjector> CreateInputInjector();
78 scoped_ptr<ScreenControls> CreateScreenControls(); 81 scoped_ptr<ScreenControls> CreateScreenControls();
79 scoped_ptr<media::ScreenCapturer> CreateVideoCapturer(); 82 scoped_ptr<media::ScreenCapturer> CreateVideoCapturer();
83 Capabilities GetCapabilities() const;
84 void SetCapabilities(const Capabilities& capabilities);
80 85
81 // IPC::Listener implementation. 86 // IPC::Listener implementation.
82 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 87 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
83 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; 88 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE;
84 virtual void OnChannelError() OVERRIDE; 89 virtual void OnChannelError() OVERRIDE;
85 90
86 // Connects to the desktop session agent. 91 // Connects to the desktop session agent.
87 bool AttachToDesktop(base::ProcessHandle desktop_process, 92 bool AttachToDesktop(base::ProcessHandle desktop_process,
88 IPC::PlatformFileForTransit desktop_pipe); 93 IPC::PlatformFileForTransit desktop_pipe);
89 94
90 // Binds |this| to a desktop session.
91 void ConnectToDesktopSession(
92 base::WeakPtr<DesktopSessionConnector> desktop_session_connector,
93 bool virtual_terminal);
94
95 // Closes the connection to the desktop session agent and cleans up 95 // Closes the connection to the desktop session agent and cleans up
96 // the associated resources. 96 // the associated resources.
97 void DetachFromDesktop(); 97 void DetachFromDesktop();
98 98
99 // Disconnects the client session that owns |this|. 99 // Disconnects the client session that owns |this|.
100 void DisconnectSession(); 100 void DisconnectSession();
101 101
102 // Stores |audio_capturer| to be used to post captured audio packets. Called 102 // Stores |audio_capturer| to be used to post captured audio packets. Called
103 // on the |audio_capture_task_runner_| thread. 103 // on the |audio_capture_task_runner_| thread.
104 void SetAudioCapturer(const base::WeakPtr<IpcAudioCapturer>& audio_capturer); 104 void SetAudioCapturer(const base::WeakPtr<IpcAudioCapturer>& audio_capturer);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 176
177 // Points to the audio capturer receiving captured audio packets. 177 // Points to the audio capturer receiving captured audio packets.
178 base::WeakPtr<IpcAudioCapturer> audio_capturer_; 178 base::WeakPtr<IpcAudioCapturer> audio_capturer_;
179 179
180 // Points to the client stub passed to StartInputInjector(). 180 // Points to the client stub passed to StartInputInjector().
181 scoped_ptr<protocol::ClipboardStub> client_clipboard_; 181 scoped_ptr<protocol::ClipboardStub> client_clipboard_;
182 182
183 // Used to disconnect the client session. 183 // Used to disconnect the client session.
184 base::WeakPtr<ClientSessionControl> client_session_control_; 184 base::WeakPtr<ClientSessionControl> client_session_control_;
185 185
186 // Used to bind to a desktop session and receive notifications every time 186 // Used to create a desktop session and receive notifications every time
187 // the desktop process is replaced. 187 // the desktop process is replaced.
188 base::WeakPtr<DesktopSessionConnector> desktop_session_connector_; 188 base::WeakPtr<DesktopSessionConnector> desktop_session_connector_;
189 189
190 // Points to the video capturer receiving captured video frames. 190 // Points to the video capturer receiving captured video frames.
191 base::WeakPtr<IpcVideoFrameCapturer> video_capturer_; 191 base::WeakPtr<IpcVideoFrameCapturer> video_capturer_;
192 192
193 // IPC channel to the desktop session agent. 193 // IPC channel to the desktop session agent.
194 scoped_ptr<IPC::ChannelProxy> desktop_channel_; 194 scoped_ptr<IPC::ChannelProxy> desktop_channel_;
195 195
196 // Handle of the desktop process. 196 // Handle of the desktop process.
197 base::ProcessHandle desktop_process_; 197 base::ProcessHandle desktop_process_;
198 198
199 int pending_capture_frame_requests_; 199 int pending_capture_frame_requests_;
200 200
201 typedef std::map<int, scoped_refptr<media::SharedBuffer> > SharedBuffers; 201 typedef std::map<int, scoped_refptr<media::SharedBuffer> > SharedBuffers;
202 SharedBuffers shared_buffers_; 202 SharedBuffers shared_buffers_;
203 203
204 // Keeps the desired screen resolution so it can be passed to a newly attached 204 // Keeps the desired screen resolution so it can be passed to a newly attached
205 // desktop session agent. 205 // desktop session agent.
206 ScreenResolution screen_resolution_; 206 ScreenResolution screen_resolution_;
207 207
208 // True if the desktop session has been created already.
209 bool is_desktop_session_created_;
210
211 bool virtual_terminal_;
212
208 DISALLOW_COPY_AND_ASSIGN(DesktopSessionProxy); 213 DISALLOW_COPY_AND_ASSIGN(DesktopSessionProxy);
209 }; 214 };
210 215
211 // Destroys |DesktopSessionProxy| instances on the caller's thread. 216 // Destroys |DesktopSessionProxy| instances on the caller's thread.
212 struct DesktopSessionProxyTraits { 217 struct DesktopSessionProxyTraits {
213 static void Destruct(const DesktopSessionProxy* desktop_session_proxy); 218 static void Destruct(const DesktopSessionProxy* desktop_session_proxy);
214 }; 219 };
215 220
216 } // namespace remoting 221 } // namespace remoting
217 222
218 #endif // REMOTING_HOST_DESKTOP_SESSION_PROXY_H_ 223 #endif // REMOTING_HOST_DESKTOP_SESSION_PROXY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698