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

Side by Side Diff: remoting/client/jni/chromoting_jni_instance.cc

Issue 341693004: Fix Desktop.dispatchKeyEvent() to return correct result. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 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
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
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
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
OLDNEW
« no previous file with comments | « remoting/client/jni/chromoting_jni_instance.h ('k') | remoting/client/jni/chromoting_jni_runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698