OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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.graphics.Point; | 7 import android.graphics.Point; |
8 import android.view.MotionEvent; | 8 import android.view.MotionEvent; |
9 | 9 |
10 import org.chromium.chromoting.jni.JniInterface; | 10 import org.chromium.chromoting.jni.Client; |
11 | 11 |
12 /** | 12 /** |
13 * Defines a set of behavior and methods to simulate trackpad behavior when resp
onding to | 13 * Defines a set of behavior and methods to simulate trackpad behavior when resp
onding to |
14 * local input event data. This class is also responsible for forwarding input
event data | 14 * local input event data. This class is also responsible for forwarding input
event data |
15 * to the remote host for injection there. | 15 * to the remote host for injection there. |
16 */ | 16 */ |
17 public class TrackpadInputStrategy implements InputStrategyInterface { | 17 public class TrackpadInputStrategy implements InputStrategyInterface { |
18 private final RenderData mRenderData; | 18 private final RenderData mRenderData; |
| 19 private final Client mClient; |
19 | 20 |
20 /** Mouse-button currently held down, or BUTTON_UNDEFINED otherwise. */ | 21 /** Mouse-button currently held down, or BUTTON_UNDEFINED otherwise. */ |
21 private int mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; | 22 private int mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; |
22 | 23 |
23 public TrackpadInputStrategy(RenderData renderData) { | 24 public TrackpadInputStrategy(RenderData renderData, Client client) { |
24 mRenderData = renderData; | 25 mRenderData = renderData; |
| 26 mClient = client; |
25 | 27 |
26 synchronized (mRenderData) { | 28 synchronized (mRenderData) { |
27 mRenderData.drawCursor = true; | 29 mRenderData.drawCursor = true; |
28 } | 30 } |
29 } | 31 } |
30 | 32 |
31 @Override | 33 @Override |
32 public boolean onTap(int button) { | 34 public boolean onTap(int button) { |
33 injectMouseButtonEvent(button, true); | 35 injectMouseButtonEvent(button, true); |
34 injectMouseButtonEvent(button, false); | 36 injectMouseButtonEvent(button, false); |
35 return true; | 37 return true; |
36 } | 38 } |
37 | 39 |
38 @Override | 40 @Override |
39 public boolean onPressAndHold(int button) { | 41 public boolean onPressAndHold(int button) { |
40 injectMouseButtonEvent(button, true); | 42 injectMouseButtonEvent(button, true); |
41 mHeldButton = button; | 43 mHeldButton = button; |
42 return true; | 44 return true; |
43 } | 45 } |
44 | 46 |
45 @Override | 47 @Override |
46 public void onScroll(float distanceX, float distanceY) { | 48 public void onScroll(float distanceX, float distanceY) { |
47 JniInterface.sendMouseWheelEvent((int) -distanceX, (int) -distanceY); | 49 mClient.sendMouseWheelEvent((int) -distanceX, (int) -distanceY); |
48 } | 50 } |
49 | 51 |
50 @Override | 52 @Override |
51 public void onMotionEvent(MotionEvent event) { | 53 public void onMotionEvent(MotionEvent event) { |
52 if (event.getActionMasked() == MotionEvent.ACTION_UP | 54 if (event.getActionMasked() == MotionEvent.ACTION_UP |
53 && mHeldButton != TouchInputHandlerInterface.BUTTON_UNDEFINED) { | 55 && mHeldButton != TouchInputHandlerInterface.BUTTON_UNDEFINED) { |
54 injectMouseButtonEvent(mHeldButton, false); | 56 injectMouseButtonEvent(mHeldButton, false); |
55 mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; | 57 mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; |
56 } | 58 } |
57 } | 59 } |
58 | 60 |
59 @Override | 61 @Override |
60 public void injectCursorMoveEvent(int x, int y) { | 62 public void injectCursorMoveEvent(int x, int y) { |
61 JniInterface.sendMouseEvent(x, y, TouchInputHandlerInterface.BUTTON_UNDE
FINED, false); | 63 mClient.sendMouseEvent(x, y, TouchInputHandlerInterface.BUTTON_UNDEFINED
, false); |
62 } | 64 } |
63 | 65 |
64 @Override | 66 @Override |
65 public DesktopView.InputFeedbackType getShortPressFeedbackType() { | 67 public DesktopView.InputFeedbackType getShortPressFeedbackType() { |
66 return DesktopView.InputFeedbackType.NONE; | 68 return DesktopView.InputFeedbackType.NONE; |
67 } | 69 } |
68 | 70 |
69 @Override | 71 @Override |
70 public DesktopView.InputFeedbackType getLongPressFeedbackType() { | 72 public DesktopView.InputFeedbackType getLongPressFeedbackType() { |
71 return DesktopView.InputFeedbackType.SMALL_ANIMATION; | 73 return DesktopView.InputFeedbackType.SMALL_ANIMATION; |
72 } | 74 } |
73 | 75 |
74 @Override | 76 @Override |
75 public boolean isIndirectInputMode() { | 77 public boolean isIndirectInputMode() { |
76 return true; | 78 return true; |
77 } | 79 } |
78 | 80 |
79 private void injectMouseButtonEvent(int button, boolean pressed) { | 81 private void injectMouseButtonEvent(int button, boolean pressed) { |
80 Point cursorPosition; | 82 Point cursorPosition; |
81 synchronized (mRenderData) { | 83 synchronized (mRenderData) { |
82 cursorPosition = mRenderData.getCursorPosition(); | 84 cursorPosition = mRenderData.getCursorPosition(); |
83 } | 85 } |
84 JniInterface.sendMouseEvent(cursorPosition.x, cursorPosition.y, button,
pressed); | 86 mClient.sendMouseEvent(cursorPosition.x, cursorPosition.y, button, press
ed); |
85 } | 87 } |
86 } | 88 } |
OLD | NEW |