| 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/client/plugin/chromoting_instance.h" | 5 #include "remoting/client/plugin/chromoting_instance.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #if defined(OS_NACL) | 10 #if defined(OS_NACL) |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 // to the UI. This prevents a potential infinite loop if we encounter an error | 161 // to the UI. This prevents a potential infinite loop if we encounter an error |
| 162 // while sending the log message to the UI. | 162 // while sending the log message to the UI. |
| 163 bool g_logging_to_plugin = false; | 163 bool g_logging_to_plugin = false; |
| 164 bool g_has_logging_instance = false; | 164 bool g_has_logging_instance = false; |
| 165 base::LazyInstance<scoped_refptr<base::SingleThreadTaskRunner> >::Leaky | 165 base::LazyInstance<scoped_refptr<base::SingleThreadTaskRunner> >::Leaky |
| 166 g_logging_task_runner = LAZY_INSTANCE_INITIALIZER; | 166 g_logging_task_runner = LAZY_INSTANCE_INITIALIZER; |
| 167 base::LazyInstance<base::WeakPtr<ChromotingInstance> >::Leaky | 167 base::LazyInstance<base::WeakPtr<ChromotingInstance> >::Leaky |
| 168 g_logging_instance = LAZY_INSTANCE_INITIALIZER; | 168 g_logging_instance = LAZY_INSTANCE_INITIALIZER; |
| 169 base::LazyInstance<base::Lock>::Leaky | 169 base::LazyInstance<base::Lock>::Leaky |
| 170 g_logging_lock = LAZY_INSTANCE_INITIALIZER; | 170 g_logging_lock = LAZY_INSTANCE_INITIALIZER; |
| 171 logging::LogMessageHandlerFunction g_logging_old_handler = NULL; | 171 logging::LogMessageHandlerFunction g_logging_old_handler = nullptr; |
| 172 | 172 |
| 173 } // namespace | 173 } // namespace |
| 174 | 174 |
| 175 // String sent in the "hello" message to the webapp to describe features. | 175 // String sent in the "hello" message to the webapp to describe features. |
| 176 const char ChromotingInstance::kApiFeatures[] = | 176 const char ChromotingInstance::kApiFeatures[] = |
| 177 "highQualityScaling injectKeyEvent sendClipboardItem remapKey trapKey " | 177 "highQualityScaling injectKeyEvent sendClipboardItem remapKey trapKey " |
| 178 "notifyClientResolution pauseVideo pauseAudio asyncPin thirdPartyAuth " | 178 "notifyClientResolution pauseVideo pauseAudio asyncPin thirdPartyAuth " |
| 179 "pinlessAuth extensionMessage allowMouseLock videoControl"; | 179 "pinlessAuth extensionMessage allowMouseLock videoControl"; |
| 180 | 180 |
| 181 const char ChromotingInstance::kRequestedCapabilities[] = ""; | 181 const char ChromotingInstance::kRequestedCapabilities[] = ""; |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 | 292 |
| 293 void ChromotingInstance::HandleMessage(const pp::Var& message) { | 293 void ChromotingInstance::HandleMessage(const pp::Var& message) { |
| 294 if (!message.is_string()) { | 294 if (!message.is_string()) { |
| 295 LOG(ERROR) << "Received a message that is not a string."; | 295 LOG(ERROR) << "Received a message that is not a string."; |
| 296 return; | 296 return; |
| 297 } | 297 } |
| 298 | 298 |
| 299 scoped_ptr<base::Value> json( | 299 scoped_ptr<base::Value> json( |
| 300 base::JSONReader::Read(message.AsString(), | 300 base::JSONReader::Read(message.AsString(), |
| 301 base::JSON_ALLOW_TRAILING_COMMAS)); | 301 base::JSON_ALLOW_TRAILING_COMMAS)); |
| 302 base::DictionaryValue* message_dict = NULL; | 302 base::DictionaryValue* message_dict = nullptr; |
| 303 std::string method; | 303 std::string method; |
| 304 base::DictionaryValue* data = NULL; | 304 base::DictionaryValue* data = nullptr; |
| 305 if (!json.get() || | 305 if (!json.get() || |
| 306 !json->GetAsDictionary(&message_dict) || | 306 !json->GetAsDictionary(&message_dict) || |
| 307 !message_dict->GetString("method", &method) || | 307 !message_dict->GetString("method", &method) || |
| 308 !message_dict->GetDictionary("data", &data)) { | 308 !message_dict->GetDictionary("data", &data)) { |
| 309 LOG(ERROR) << "Received invalid message:" << message.AsString(); | 309 LOG(ERROR) << "Received invalid message:" << message.AsString(); |
| 310 return; | 310 return; |
| 311 } | 311 } |
| 312 | 312 |
| 313 if (method == "connect") { | 313 if (method == "connect") { |
| 314 HandleConnect(*data); | 314 HandleConnect(*data); |
| (...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 940 void ChromotingInstance::HandleDelegateLargeCursors() { | 940 void ChromotingInstance::HandleDelegateLargeCursors() { |
| 941 cursor_setter_.set_delegate_stub(this); | 941 cursor_setter_.set_delegate_stub(this); |
| 942 } | 942 } |
| 943 | 943 |
| 944 void ChromotingInstance::Disconnect() { | 944 void ChromotingInstance::Disconnect() { |
| 945 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); | 945 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); |
| 946 | 946 |
| 947 VLOG(0) << "Disconnecting from host."; | 947 VLOG(0) << "Disconnecting from host."; |
| 948 | 948 |
| 949 // Disconnect the input pipeline and teardown the connection. | 949 // Disconnect the input pipeline and teardown the connection. |
| 950 mouse_input_filter_.set_input_stub(NULL); | 950 mouse_input_filter_.set_input_stub(nullptr); |
| 951 client_.reset(); | 951 client_.reset(); |
| 952 video_renderer_.reset(); | 952 video_renderer_.reset(); |
| 953 } | 953 } |
| 954 | 954 |
| 955 void ChromotingInstance::PostChromotingMessage(const std::string& method, | 955 void ChromotingInstance::PostChromotingMessage(const std::string& method, |
| 956 const pp::VarDictionary& data) { | 956 const pp::VarDictionary& data) { |
| 957 pp::VarDictionary message; | 957 pp::VarDictionary message; |
| 958 message.Set(pp::Var("method"), pp::Var(method)); | 958 message.Set(pp::Var("method"), pp::Var(method)); |
| 959 message.Set(pp::Var("data"), data); | 959 message.Set(pp::Var("data"), data); |
| 960 PostMessage(message); | 960 PostMessage(message); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1036 void ChromotingInstance::UnregisterLoggingInstance() { | 1036 void ChromotingInstance::UnregisterLoggingInstance() { |
| 1037 base::AutoLock lock(g_logging_lock.Get()); | 1037 base::AutoLock lock(g_logging_lock.Get()); |
| 1038 | 1038 |
| 1039 // Don't unregister unless we're the currently registered instance. | 1039 // Don't unregister unless we're the currently registered instance. |
| 1040 if (this != g_logging_instance.Get().get()) | 1040 if (this != g_logging_instance.Get().get()) |
| 1041 return; | 1041 return; |
| 1042 | 1042 |
| 1043 // Unregister this instance for logging. | 1043 // Unregister this instance for logging. |
| 1044 g_has_logging_instance = false; | 1044 g_has_logging_instance = false; |
| 1045 g_logging_instance.Get().reset(); | 1045 g_logging_instance.Get().reset(); |
| 1046 g_logging_task_runner.Get() = NULL; | 1046 g_logging_task_runner.Get() = nullptr; |
| 1047 | 1047 |
| 1048 VLOG(1) << "Unregistering global log handler"; | 1048 VLOG(1) << "Unregistering global log handler"; |
| 1049 } | 1049 } |
| 1050 | 1050 |
| 1051 // static | 1051 // static |
| 1052 bool ChromotingInstance::LogToUI(int severity, const char* file, int line, | 1052 bool ChromotingInstance::LogToUI(int severity, const char* file, int line, |
| 1053 size_t message_start, | 1053 size_t message_start, |
| 1054 const std::string& str) { | 1054 const std::string& str) { |
| 1055 // Note that we're reading |g_has_logging_instance| outside of a lock. | 1055 // Note that we're reading |g_has_logging_instance| outside of a lock. |
| 1056 // This lockless read is done so that we don't needlessly slow down global | 1056 // This lockless read is done so that we don't needlessly slow down global |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 url_components.scheme.len); | 1124 url_components.scheme.len); |
| 1125 return url_scheme == kChromeExtensionUrlScheme; | 1125 return url_scheme == kChromeExtensionUrlScheme; |
| 1126 } | 1126 } |
| 1127 | 1127 |
| 1128 bool ChromotingInstance::IsConnected() { | 1128 bool ChromotingInstance::IsConnected() { |
| 1129 return client_ && | 1129 return client_ && |
| 1130 (client_->connection_state() == protocol::ConnectionToHost::CONNECTED); | 1130 (client_->connection_state() == protocol::ConnectionToHost::CONNECTED); |
| 1131 } | 1131 } |
| 1132 | 1132 |
| 1133 } // namespace remoting | 1133 } // namespace remoting |
| OLD | NEW |