| OLD | NEW |
| 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 #include "remoting/host/host_user_interface.h" | 5 #include "remoting/host/host_user_interface.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "remoting/host/chromoting_host.h" | 8 #include "remoting/host/chromoting_host.h" |
| 9 #include "remoting/host/chromoting_host_context.h" | 9 #include "remoting/host/chromoting_host_context.h" |
| 10 #include "remoting/host/disconnect_window.h" | 10 #include "remoting/host/disconnect_window.h" |
| 11 #include "remoting/host/local_input_monitor.h" | 11 #include "remoting/host/local_input_monitor.h" |
| 12 | 12 |
| 13 namespace remoting { | 13 namespace remoting { |
| 14 | 14 |
| 15 HostUserInterface::HostUserInterface(ChromotingHostContext* context) | 15 HostUserInterface::HostUserInterface(ChromotingHostContext* context) |
| 16 : host_(NULL), | 16 : host_(NULL), |
| 17 context_(context), | 17 context_(context), |
| 18 is_monitoring_local_inputs_(false), | 18 is_monitoring_local_inputs_(false), |
| 19 ui_thread_proxy_(context->ui_message_loop()), | 19 ui_thread_proxy_(context->ui_message_loop()) { |
| 20 disable_disconnect_shortcut_on_mac_(false) { | |
| 21 } | 20 } |
| 22 | 21 |
| 23 HostUserInterface::~HostUserInterface() { | 22 HostUserInterface::~HostUserInterface() { |
| 24 DCHECK(ui_message_loop()->BelongsToCurrentThread()); | 23 DCHECK(ui_message_loop()->BelongsToCurrentThread()); |
| 25 | 24 |
| 26 MonitorLocalInputs(false); | 25 MonitorLocalInputs(false); |
| 27 ShowDisconnectWindow(false, std::string()); | 26 ShowDisconnectWindow(false, std::string()); |
| 28 | 27 |
| 29 ui_thread_proxy_.Detach(); | 28 ui_thread_proxy_.Detach(); |
| 30 } | 29 } |
| 31 | 30 |
| 32 void HostUserInterface::Start(ChromotingHost* host, | 31 void HostUserInterface::Start(ChromotingHost* host, |
| 33 const base::Closure& disconnect_callback) { | 32 const base::Closure& disconnect_callback) { |
| 34 DCHECK(network_message_loop()->BelongsToCurrentThread()); | 33 DCHECK(network_message_loop()->BelongsToCurrentThread()); |
| 35 DCHECK(host_ == NULL); | 34 DCHECK(host_ == NULL); |
| 36 DCHECK(disconnect_callback_.is_null()); | 35 DCHECK(disconnect_callback_.is_null()); |
| 37 | 36 |
| 38 host_ = host; | 37 host_ = host; |
| 39 disconnect_callback_ = disconnect_callback; | 38 disconnect_callback_ = disconnect_callback; |
| 40 disconnect_window_ = DisconnectWindow::Create(); | 39 disconnect_window_ = DisconnectWindow::Create(); |
| 41 local_input_monitor_ = LocalInputMonitor::Create(); | 40 local_input_monitor_ = LocalInputMonitor::Create(); |
| 42 host_->AddStatusObserver(this); | 41 host_->AddStatusObserver(this); |
| 43 } | 42 } |
| 44 | 43 |
| 45 void HostUserInterface::DisableDisconnectShortcutOnMac() { | |
| 46 disable_disconnect_shortcut_on_mac_ = true; | |
| 47 } | |
| 48 | |
| 49 void HostUserInterface::OnClientAuthenticated(const std::string& jid) { | 44 void HostUserInterface::OnClientAuthenticated(const std::string& jid) { |
| 50 authenticated_jid_ = jid; | 45 authenticated_jid_ = jid; |
| 51 | 46 |
| 52 std::string username = jid.substr(0, jid.find('/')); | 47 std::string username = jid.substr(0, jid.find('/')); |
| 53 ui_thread_proxy_.PostTask(FROM_HERE, base::Bind( | 48 ui_thread_proxy_.PostTask(FROM_HERE, base::Bind( |
| 54 &HostUserInterface::ProcessOnClientAuthenticated, | 49 &HostUserInterface::ProcessOnClientAuthenticated, |
| 55 base::Unretained(this), username)); | 50 base::Unretained(this), username)); |
| 56 } | 51 } |
| 57 | 52 |
| 58 void HostUserInterface::OnClientDisconnected(const std::string& jid) { | 53 void HostUserInterface::OnClientDisconnected(const std::string& jid) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 disconnect_callback_ = disconnect_callback; | 117 disconnect_callback_ = disconnect_callback; |
| 123 disconnect_window_ = disconnect_window.Pass(); | 118 disconnect_window_ = disconnect_window.Pass(); |
| 124 local_input_monitor_ = local_input_monitor.Pass(); | 119 local_input_monitor_ = local_input_monitor.Pass(); |
| 125 } | 120 } |
| 126 | 121 |
| 127 void HostUserInterface::MonitorLocalInputs(bool enable) { | 122 void HostUserInterface::MonitorLocalInputs(bool enable) { |
| 128 DCHECK(ui_message_loop()->BelongsToCurrentThread()); | 123 DCHECK(ui_message_loop()->BelongsToCurrentThread()); |
| 129 | 124 |
| 130 if (enable != is_monitoring_local_inputs_) { | 125 if (enable != is_monitoring_local_inputs_) { |
| 131 if (enable) { | 126 if (enable) { |
| 132 local_input_monitor_->Start(host_); | 127 local_input_monitor_->Start(host_, disconnect_callback_); |
| 133 if (disable_disconnect_shortcut_on_mac_) { | |
| 134 local_input_monitor_->DisableShortcutOnMac(); | |
| 135 } | |
| 136 } else { | 128 } else { |
| 137 local_input_monitor_->Stop(); | 129 local_input_monitor_->Stop(); |
| 138 } | 130 } |
| 139 is_monitoring_local_inputs_ = enable; | 131 is_monitoring_local_inputs_ = enable; |
| 140 } | 132 } |
| 141 } | 133 } |
| 142 | 134 |
| 143 void HostUserInterface::ShowDisconnectWindow(bool show, | 135 void HostUserInterface::ShowDisconnectWindow(bool show, |
| 144 const std::string& username) { | 136 const std::string& username) { |
| 145 DCHECK(ui_message_loop()->BelongsToCurrentThread()); | 137 DCHECK(ui_message_loop()->BelongsToCurrentThread()); |
| 146 | 138 |
| 147 if (show) { | 139 if (show) { |
| 148 disconnect_window_->Show( | 140 disconnect_window_->Show( |
| 149 host_, | 141 host_, |
| 150 base::Bind(&HostUserInterface::OnDisconnectCallback, | 142 base::Bind(&HostUserInterface::OnDisconnectCallback, |
| 151 base::Unretained(this)), | 143 base::Unretained(this)), |
| 152 username); | 144 username); |
| 153 } else { | 145 } else { |
| 154 disconnect_window_->Hide(); | 146 disconnect_window_->Hide(); |
| 155 } | 147 } |
| 156 } | 148 } |
| 157 | 149 |
| 158 } // namespace remoting | 150 } // namespace remoting |
| OLD | NEW |