OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/jni/chromoting_jni_instance.h" | 5 #include "remoting/client/jni/chromoting_jni_instance.h" |
6 | 6 |
7 #include <android/log.h> | 7 #include <android/log.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 delta_x, delta_y)); | 203 delta_x, delta_y)); |
204 return; | 204 return; |
205 } | 205 } |
206 | 206 |
207 protocol::MouseEvent event; | 207 protocol::MouseEvent event; |
208 event.set_wheel_delta_x(delta_x); | 208 event.set_wheel_delta_x(delta_x); |
209 event.set_wheel_delta_y(delta_y); | 209 event.set_wheel_delta_y(delta_y); |
210 connection_->input_stub()->InjectMouseEvent(event); | 210 connection_->input_stub()->InjectMouseEvent(event); |
211 } | 211 } |
212 | 212 |
213 void ChromotingJniInstance::SendKeyEvent(int key_code, bool key_down) { | 213 bool ChromotingJniInstance::SendKeyEvent(int key_code, bool key_down) { |
214 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) { | 214 uint32 usb_key_code = AndroidKeycodeToUsbKeycode(key_code); |
215 jni_runtime_->network_task_runner()->PostTask( | 215 if (!usb_key_code) { |
216 FROM_HERE, base::Bind(&ChromotingJniInstance::SendKeyEvent, | 216 LOG(WARNING) << "Ignoring unknown keycode: " << key_code; |
217 this, key_code, key_down)); | 217 return false; |
218 return; | |
219 } | 218 } |
220 | 219 |
221 uint32 usb_code = AndroidKeycodeToUsbKeycode(key_code); | 220 SendKeyEventInternal(usb_key_code, key_down); |
222 if (usb_code) { | 221 return true; |
223 protocol::KeyEvent event; | |
224 event.set_usb_keycode(usb_code); | |
225 event.set_pressed(key_down); | |
226 connection_->input_stub()->InjectKeyEvent(event); | |
227 } else { | |
228 LOG(WARNING) << "Ignoring unknown keycode: " << key_code; | |
229 } | |
230 } | 222 } |
231 | 223 |
232 void ChromotingJniInstance::SendTextEvent(const std::string& text) { | 224 void ChromotingJniInstance::SendTextEvent(const std::string& text) { |
233 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) { | 225 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) { |
234 jni_runtime_->network_task_runner()->PostTask( | 226 jni_runtime_->network_task_runner()->PostTask( |
235 FROM_HERE, | 227 FROM_HERE, |
236 base::Bind(&ChromotingJniInstance::SendTextEvent, this, text)); | 228 base::Bind(&ChromotingJniInstance::SendTextEvent, this, text)); |
237 return; | 229 return; |
238 } | 230 } |
239 | 231 |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) { | 434 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) { |
443 jni_runtime_->network_task_runner()->PostTask( | 435 jni_runtime_->network_task_runner()->PostTask( |
444 FROM_HERE, base::Bind(&ChromotingJniInstance::SetDeviceName, this, | 436 FROM_HERE, base::Bind(&ChromotingJniInstance::SetDeviceName, this, |
445 device_name)); | 437 device_name)); |
446 return; | 438 return; |
447 } | 439 } |
448 | 440 |
449 device_name_ = device_name; | 441 device_name_ = device_name; |
450 } | 442 } |
451 | 443 |
| 444 void ChromotingJniInstance::SendKeyEventInternal(int usb_key_code, |
| 445 bool key_down) { |
| 446 if (!jni_runtime_->network_task_runner()->BelongsToCurrentThread()) { |
| 447 jni_runtime_->network_task_runner()->PostTask( |
| 448 FROM_HERE, base::Bind(&ChromotingJniInstance::SendKeyEventInternal, |
| 449 this, usb_key_code, key_down)); |
| 450 return; |
| 451 } |
| 452 |
| 453 |
| 454 protocol::KeyEvent event; |
| 455 event.set_usb_keycode(usb_key_code); |
| 456 event.set_pressed(key_down); |
| 457 connection_->input_stub()->InjectKeyEvent(event); |
| 458 } |
| 459 |
452 void ChromotingJniInstance::EnableStatsLogging(bool enabled) { | 460 void ChromotingJniInstance::EnableStatsLogging(bool enabled) { |
453 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread()); | 461 DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread()); |
454 | 462 |
455 if (enabled && !stats_logging_enabled_) { | 463 if (enabled && !stats_logging_enabled_) { |
456 jni_runtime_->network_task_runner()->PostDelayedTask( | 464 jni_runtime_->network_task_runner()->PostDelayedTask( |
457 FROM_HERE, base::Bind(&ChromotingJniInstance::LogPerfStats, this), | 465 FROM_HERE, base::Bind(&ChromotingJniInstance::LogPerfStats, this), |
458 base::TimeDelta::FromMilliseconds(kPerfStatsIntervalMs)); | 466 base::TimeDelta::FromMilliseconds(kPerfStatsIntervalMs)); |
459 } | 467 } |
460 stats_logging_enabled_ = enabled; | 468 stats_logging_enabled_ = enabled; |
461 } | 469 } |
(...skipping 17 matching lines...) Expand all Loading... |
479 stats->round_trip_ms()->Average()); | 487 stats->round_trip_ms()->Average()); |
480 | 488 |
481 log_to_server_->LogStatistics(stats); | 489 log_to_server_->LogStatistics(stats); |
482 | 490 |
483 jni_runtime_->network_task_runner()->PostDelayedTask( | 491 jni_runtime_->network_task_runner()->PostDelayedTask( |
484 FROM_HERE, base::Bind(&ChromotingJniInstance::LogPerfStats, this), | 492 FROM_HERE, base::Bind(&ChromotingJniInstance::LogPerfStats, this), |
485 base::TimeDelta::FromMilliseconds(kPerfStatsIntervalMs)); | 493 base::TimeDelta::FromMilliseconds(kPerfStatsIntervalMs)); |
486 } | 494 } |
487 | 495 |
488 } // namespace remoting | 496 } // namespace remoting |
OLD | NEW |