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

Side by Side Diff: remoting/host/desktop_environment.cc

Issue 7312019: Chromoting: Move host input and window mgmt into DesktopEnvironment (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 5 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "remoting/host/desktop_environment.h" 5 #include "remoting/host/desktop_environment.h"
6 6
7 #include "remoting/host/capturer.h" 7 #include "remoting/host/capturer.h"
8 #include "remoting/host/chromoting_host.h"
9 #include "remoting/host/chromoting_host_context.h"
8 #include "remoting/host/continue_window.h" 10 #include "remoting/host/continue_window.h"
9 #include "remoting/host/curtain.h" 11 #include "remoting/host/curtain.h"
10 #include "remoting/host/disconnect_window.h" 12 #include "remoting/host/disconnect_window.h"
11 #include "remoting/host/event_executor.h" 13 #include "remoting/host/event_executor.h"
12 #include "remoting/host/local_input_monitor.h" 14 #include "remoting/host/local_input_monitor.h"
13 15
16 static const int kContinueWindowTimeoutSecs = 10 * 60;
17
14 namespace remoting { 18 namespace remoting {
15 19
16 DesktopEnvironment::DesktopEnvironment(Capturer* capturer, 20 // static
21 DesktopEnvironment* DesktopEnvironment::Create(ChromotingHostContext* context) {
22 Capturer* capturer = Capturer::Create();
23 EventExecutor* event_executor =
24 EventExecutor::Create(context->desktop_message_loop(), capturer);
25 Curtain* curtain = Curtain::Create();
26 DisconnectWindow* disconnect_window = DisconnectWindow::Create();
27 ContinueWindow* continue_window = ContinueWindow::Create();
28 LocalInputMonitor* local_input_monitor = LocalInputMonitor::Create();
29
30 return new DesktopEnvironment(context, capturer, event_executor, curtain,
31 disconnect_window, continue_window,
32 local_input_monitor);
33 }
34
35 DesktopEnvironment::DesktopEnvironment(ChromotingHostContext* context,
36 Capturer* capturer,
17 EventExecutor* event_executor, 37 EventExecutor* event_executor,
18 Curtain* curtain, 38 Curtain* curtain,
19 DisconnectWindow* disconnect_window, 39 DisconnectWindow* disconnect_window,
20 ContinueWindow* continue_window, 40 ContinueWindow* continue_window,
21 LocalInputMonitor* local_input_monitor) 41 LocalInputMonitor* local_input_monitor)
22 : capturer_(capturer), 42 : host_(NULL),
43 context_(context),
44 capturer_(capturer),
23 event_executor_(event_executor), 45 event_executor_(event_executor),
24 curtain_(curtain), 46 curtain_(curtain),
25 disconnect_window_(disconnect_window), 47 disconnect_window_(disconnect_window),
26 continue_window_(continue_window), 48 continue_window_(continue_window),
27 local_input_monitor_(local_input_monitor) { 49 local_input_monitor_(local_input_monitor),
50 is_monitoring_local_inputs_(false) {
28 } 51 }
29 52
30 DesktopEnvironment::~DesktopEnvironment() { 53 DesktopEnvironment::~DesktopEnvironment() {
31 } 54 }
32 55
56 void DesktopEnvironment::OnConnect(const std::string& username) {
57 MonitorLocalInputs(true);
58 ShowDisconnectWindow(true, username);
59 StartContinueWindowTimer(true);
60 }
61
62 void DesktopEnvironment::OnLastDisconnect() {
63 MonitorLocalInputs(false);
64 ShowDisconnectWindow(false, std::string());
65 ShowContinueWindow(false);
66 StartContinueWindowTimer(false);
67 }
68
69 void DesktopEnvironment::OnPause(bool pause) {
70 StartContinueWindowTimer(!pause);
71 }
72
73 void DesktopEnvironment::MonitorLocalInputs(bool enable) {
74 if (enable == is_monitoring_local_inputs_)
75 return;
76 if (enable) {
77 local_input_monitor_->Start(host_);
78 } else {
79 local_input_monitor_->Stop();
80 }
81 is_monitoring_local_inputs_ = enable;
82 }
83
84 void DesktopEnvironment::ShowDisconnectWindow(bool show,
85 const std::string& username) {
86 if (!context_->IsUIThread()) {
87 context_->PostToUIThread(
88 FROM_HERE,
89 NewRunnableMethod(this, &DesktopEnvironment::ShowDisconnectWindow,
90 show, username));
91 return;
92 }
93
94 if (show) {
95 disconnect_window_->Show(host_, username);
96 } else {
97 disconnect_window_->Hide();
98 }
99 }
100
101 void DesktopEnvironment::ShowContinueWindow(bool show) {
102 if (!context_->IsUIThread()) {
103 context_->PostToUIThread(
104 FROM_HERE,
105 NewRunnableMethod(this, &DesktopEnvironment::ShowContinueWindow, show));
106 return;
107 }
108
109 if (show) {
110 continue_window_->Show(host_);
111 } else {
112 continue_window_->Hide();
113 }
114 }
115
116 void DesktopEnvironment::StartContinueWindowTimer(bool start) {
117 if (context_->main_message_loop() != MessageLoop::current()) {
118 context_->main_message_loop()->PostTask(
119 FROM_HERE,
120 NewRunnableMethod(this,
121 &DesktopEnvironment::StartContinueWindowTimer,
122 start));
123 return;
124 }
125 if (continue_window_timer_.IsRunning() == start)
126 return;
127 if (start) {
128 continue_window_timer_.Start(
129 base::TimeDelta::FromSeconds(kContinueWindowTimeoutSecs),
130 this, &DesktopEnvironment::ContinueWindowTimerFunc);
131 } else {
132 continue_window_timer_.Stop();
133 }
134 }
135
136 void DesktopEnvironment::ContinueWindowTimerFunc() {
137 host_->PauseSession(true);
138 ShowContinueWindow(true);
139 }
140
141
33 } // namespace remoting 142 } // namespace remoting
OLDNEW
« remoting/host/desktop_environment.h ('K') | « remoting/host/desktop_environment.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698