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

Side by Side Diff: remoting/android/java/src/org/chromium/chromoting/DesktopView.java

Issue 21554002: Enable Android support for Chromoting PINless (paired) authentication (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Prevent future coordinates-related bugs Created 7 years, 4 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 package org.chromium.chromoting; 5 package org.chromium.chromoting;
6 6
7 import android.app.ActionBar; 7 import android.app.ActionBar;
8 import android.app.Activity; 8 import android.app.Activity;
9 import android.graphics.Bitmap; 9 import android.graphics.Bitmap;
10 import android.graphics.Canvas; 10 import android.graphics.Canvas;
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 */ 259 */
260 @Override 260 @Override
261 public void surfaceDestroyed(SurfaceHolder holder) { 261 public void surfaceDestroyed(SurfaceHolder holder) {
262 Log.i("deskview", "DesktopView.surfaceDestroyed(...)"); 262 Log.i("deskview", "DesktopView.surfaceDestroyed(...)");
263 263
264 // Stop this canvas from being redrawn. 264 // Stop this canvas from being redrawn.
265 JniInterface.provideRedrawCallback(null); 265 JniInterface.provideRedrawCallback(null);
266 } 266 }
267 267
268 /** Called when a mouse action is made. */ 268 /** Called when a mouse action is made. */
269 private void handleMouseMovement(float[] coordinates, int button, boolean pr essed) { 269 private void handleMouseMovement(float x, float y, int button, boolean press ed) {
270 float[] coordinates = {x, y};
271
270 // Coordinates are relative to the canvas, but we need image coordinates . 272 // Coordinates are relative to the canvas, but we need image coordinates .
271 Matrix canvasToImage = new Matrix(); 273 Matrix canvasToImage = new Matrix();
272 mTransform.invert(canvasToImage); 274 mTransform.invert(canvasToImage);
273 canvasToImage.mapPoints(coordinates); 275 canvasToImage.mapPoints(coordinates);
274 276
275 // Coordinates are now relative to the image, so transmit them to the ho st. 277 // Coordinates are now relative to the image, so transmit them to the ho st.
276 JniInterface.mouseAction((int)coordinates[0], (int)coordinates[1], butto n, pressed); 278 JniInterface.mouseAction((int)coordinates[0], (int)coordinates[1], butto n, pressed);
277 } 279 }
278 280
279 /** 281 /**
280 * Called whenever the user attempts to touch the canvas. Forwards such 282 * Called whenever the user attempts to touch the canvas. Forwards such
281 * events to the appropriate gesture detector until one accepts them. 283 * events to the appropriate gesture detector until one accepts them.
282 */ 284 */
283 @Override 285 @Override
284 public boolean onTouchEvent(MotionEvent event) { 286 public boolean onTouchEvent(MotionEvent event) {
285 if (event.getPointerCount() == 3) { 287 if (event.getPointerCount() == 3) {
286 mActionBar.show(); 288 mActionBar.show();
287 } 289 }
288 290
289 boolean handled = mScroller.onTouchEvent(event) || mZoomer.onTouchEvent( event); 291 boolean handled = mScroller.onTouchEvent(event) || mZoomer.onTouchEvent( event);
290 292
291 if (event.getPointerCount() == 1) { 293 if (event.getPointerCount() == 1) {
292 float[] coordinates = {event.getRawX(), event.getY()}; 294 float x = event.getRawX();
295 float y = event.getY();
293 296
294 switch (event.getActionMasked()) { 297 switch (event.getActionMasked()) {
295 case MotionEvent.ACTION_DOWN: 298 case MotionEvent.ACTION_DOWN:
296 Log.i("mouse", "Found a finger"); 299 Log.i("mouse", "Found a finger");
297 mMouseButton = BUTTON_UNDEFINED; 300 mMouseButton = BUTTON_UNDEFINED;
298 mMousePressed = false; 301 mMousePressed = false;
299 break; 302 break;
300 303
301 case MotionEvent.ACTION_MOVE: 304 case MotionEvent.ACTION_MOVE:
302 Log.i("mouse", "Finger is dragging"); 305 Log.i("mouse", "Finger is dragging");
303 if (mMouseButton == BUTTON_UNDEFINED) { 306 if (mMouseButton == BUTTON_UNDEFINED) {
304 Log.i("mouse", "\tStarting left click"); 307 Log.i("mouse", "\tStarting left click");
305 mMouseButton = BUTTON_LEFT; 308 mMouseButton = BUTTON_LEFT;
306 mMousePressed = true; 309 mMousePressed = true;
307 } 310 }
308 break; 311 break;
309 312
310 case MotionEvent.ACTION_UP: 313 case MotionEvent.ACTION_UP:
311 Log.i("mouse", "Lost the finger"); 314 Log.i("mouse", "Lost the finger");
312 if (mMouseButton == BUTTON_UNDEFINED) { 315 if (mMouseButton == BUTTON_UNDEFINED) {
313 // The user pressed and released without moving: do left click and release. 316 // The user pressed and released without moving: do left click and release.
314 Log.i("mouse", "\tStarting and finishing left click"); 317 Log.i("mouse", "\tStarting and finishing left click");
315 handleMouseMovement(new float[] {coordinates[0], coordin ates[1]}, 318 handleMouseMovement(x, y, BUTTON_LEFT, true);
316 BUTTON_LEFT, true);
317 mMouseButton = BUTTON_LEFT; 319 mMouseButton = BUTTON_LEFT;
318 mMousePressed = false; 320 mMousePressed = false;
319 } 321 }
320 else if (mMousePressed) { 322 else if (mMousePressed) {
321 Log.i("mouse", "\tReleasing the currently-pressed button "); 323 Log.i("mouse", "\tReleasing the currently-pressed button ");
322 mMousePressed = false; 324 mMousePressed = false;
323 } 325 }
324 else { 326 else {
325 Log.w("mouse", "Button already in released state before gesture ended"); 327 Log.w("mouse", "Button already in released state before gesture ended");
326 } 328 }
327 break; 329 break;
328 330
329 default: 331 default:
330 return handled; 332 return handled;
331 } 333 }
332 handleMouseMovement(coordinates, mMouseButton, mMousePressed); 334 handleMouseMovement(x, y, mMouseButton, mMousePressed);
333 335
334 return true; 336 return true;
335 } 337 }
336 338
337 return handled; 339 return handled;
338 } 340 }
339 341
340 /** Responds to touch events filtered by the gesture detectors. */ 342 /** Responds to touch events filtered by the gesture detectors. */
341 private class DesktopListener extends GestureDetector.SimpleOnGestureListene r 343 private class DesktopListener extends GestureDetector.SimpleOnGestureListene r
342 implements ScaleGestureDetector.OnScaleGestureListener { 344 implements ScaleGestureDetector.OnScaleGestureListener {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 onScale(detector); 399 onScale(detector);
398 } 400 }
399 401
400 /** Called when the user holds down on the screen. Starts a right-click. */ 402 /** Called when the user holds down on the screen. Starts a right-click. */
401 @Override 403 @Override
402 public void onLongPress(MotionEvent e) { 404 public void onLongPress(MotionEvent e) {
403 if (e.getPointerCount() > 1) { 405 if (e.getPointerCount() > 1) {
404 return; 406 return;
405 } 407 }
406 408
407 float[] coordinates = new float[] {e.getRawX(), e.getY()}; 409 float x = e.getRawX();
410 float y = e.getY();
408 411
409 Log.i("mouse", "Finger held down"); 412 Log.i("mouse", "Finger held down");
410 if (mMousePressed) { 413 if (mMousePressed) {
411 Log.i("mouse", "\tReleasing the currently-pressed button"); 414 Log.i("mouse", "\tReleasing the currently-pressed button");
412 handleMouseMovement(coordinates, mMouseButton, false); 415 handleMouseMovement(x, y, mMouseButton, false);
413 } 416 }
414 417
415 Log.i("mouse", "\tStarting right click"); 418 Log.i("mouse", "\tStarting right click");
416 mMouseButton = BUTTON_RIGHT; 419 mMouseButton = BUTTON_RIGHT;
417 mMousePressed = true; 420 mMousePressed = true;
418 handleMouseMovement(coordinates, mMouseButton, mMousePressed); 421 handleMouseMovement(x, y, mMouseButton, mMousePressed);
419 } 422 }
420 } 423 }
421 } 424 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698