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

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

Issue 13461029: The continue window is owned by the desktop environment now. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Mac. 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "remoting/host/it2me_host_user_interface.h"
6
7 #include "base/bind.h"
8 #include "remoting/host/chromoting_host.h"
9 #include "remoting/host/continue_window.h"
10 #include "remoting/host/local_input_monitor.h"
11
12 namespace {
13
14 // Milliseconds before the continue window is shown.
15 static const int kContinueWindowShowTimeoutMs = 10 * 60 * 1000;
16
17 // Milliseconds before the continue window is automatically dismissed and
18 // the connection is closed.
19 static const int kContinueWindowHideTimeoutMs = 60 * 1000;
20
21 } // namespace
22
23 namespace remoting {
24
25 It2MeHostUserInterface::It2MeHostUserInterface(
26 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner,
27 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
28 const UiStrings& ui_strings)
29 : HostUserInterface(network_task_runner, ui_task_runner, ui_strings),
30 ALLOW_THIS_IN_INITIALIZER_LIST(timer_weak_factory_(this)) {
31 DCHECK(ui_task_runner->BelongsToCurrentThread());
32 }
33
34 It2MeHostUserInterface::~It2MeHostUserInterface() {
35 DCHECK(ui_task_runner()->BelongsToCurrentThread());
36
37 ShowContinueWindow(false);
38 }
39
40 void It2MeHostUserInterface::Init() {
41 DCHECK(ui_task_runner()->BelongsToCurrentThread());
42
43 HostUserInterface::Init();
44 continue_window_ = ContinueWindow::Create(&ui_strings());
45 }
46
47 void It2MeHostUserInterface::ProcessOnClientAuthenticated(
48 const std::string& username) {
49 DCHECK(ui_task_runner()->BelongsToCurrentThread());
50
51 HostUserInterface::ProcessOnClientAuthenticated(username);
52 StartContinueWindowTimer(true);
53 }
54
55 void It2MeHostUserInterface::ProcessOnClientDisconnected() {
56 DCHECK(ui_task_runner()->BelongsToCurrentThread());
57
58 HostUserInterface::ProcessOnClientDisconnected();
59 ShowContinueWindow(false);
60 StartContinueWindowTimer(false);
61 }
62
63 void It2MeHostUserInterface::ContinueSession(bool continue_session) {
64 DCHECK(ui_task_runner()->BelongsToCurrentThread());
65
66 if (continue_session) {
67 get_host()->PauseSession(false);
68 StartContinueWindowTimer(true);
69 } else {
70 DisconnectSession();
71 }
72 }
73
74 void It2MeHostUserInterface::OnContinueWindowTimer() {
75 DCHECK(ui_task_runner()->BelongsToCurrentThread());
76
77 get_host()->PauseSession(true);
78 ShowContinueWindow(true);
79
80 // Cancel any pending timer and post one to hide the continue window.
81 timer_weak_factory_.InvalidateWeakPtrs();
82 ui_task_runner()->PostDelayedTask(
83 FROM_HERE,
84 base::Bind(&It2MeHostUserInterface::OnShutdownHostTimer,
85 timer_weak_factory_.GetWeakPtr()),
86 base::TimeDelta::FromMilliseconds(kContinueWindowHideTimeoutMs));
87 }
88
89 void It2MeHostUserInterface::OnShutdownHostTimer() {
90 DCHECK(ui_task_runner()->BelongsToCurrentThread());
91
92 ShowContinueWindow(false);
93 DisconnectSession();
94 }
95
96 void It2MeHostUserInterface::ShowContinueWindow(bool show) {
97 DCHECK(ui_task_runner()->BelongsToCurrentThread());
98
99 if (show) {
100 continue_window_->Show(base::Bind(
101 &It2MeHostUserInterface::ContinueSession, base::Unretained(this)));
102 } else {
103 continue_window_->Hide();
104 }
105 }
106
107 void It2MeHostUserInterface::StartContinueWindowTimer(bool start) {
108 DCHECK(ui_task_runner()->BelongsToCurrentThread());
109
110 // Abandon previous timer events by invalidating their weak pointer to us.
111 timer_weak_factory_.InvalidateWeakPtrs();
112 if (start) {
113 ui_task_runner()->PostDelayedTask(
114 FROM_HERE,
115 base::Bind(&It2MeHostUserInterface::OnContinueWindowTimer,
116 timer_weak_factory_.GetWeakPtr()),
117 base::TimeDelta::FromMilliseconds(kContinueWindowShowTimeoutMs));
118 }
119 }
120
121 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698