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.Client; | 10 import org.chromium.chromoting.jni.JniInterface; |
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; | |
20 | 19 |
21 /** Mouse-button currently held down, or BUTTON_UNDEFINED otherwise. */ | 20 /** Mouse-button currently held down, or BUTTON_UNDEFINED otherwise. */ |
22 private int mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; | 21 private int mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; |
23 | 22 |
24 public TrackpadInputStrategy(RenderData renderData, Client client) { | 23 public TrackpadInputStrategy(RenderData renderData) { |
25 mRenderData = renderData; | 24 mRenderData = renderData; |
26 mClient = client; | |
27 | 25 |
28 synchronized (mRenderData) { | 26 synchronized (mRenderData) { |
29 mRenderData.drawCursor = true; | 27 mRenderData.drawCursor = true; |
30 } | 28 } |
31 } | 29 } |
32 | 30 |
33 @Override | 31 @Override |
34 public boolean onTap(int button) { | 32 public boolean onTap(int button) { |
35 injectMouseButtonEvent(button, true); | 33 injectMouseButtonEvent(button, true); |
36 injectMouseButtonEvent(button, false); | 34 injectMouseButtonEvent(button, false); |
37 return true; | 35 return true; |
38 } | 36 } |
39 | 37 |
40 @Override | 38 @Override |
41 public boolean onPressAndHold(int button) { | 39 public boolean onPressAndHold(int button) { |
42 injectMouseButtonEvent(button, true); | 40 injectMouseButtonEvent(button, true); |
43 mHeldButton = button; | 41 mHeldButton = button; |
44 return true; | 42 return true; |
45 } | 43 } |
46 | 44 |
47 @Override | 45 @Override |
48 public void onScroll(float distanceX, float distanceY) { | 46 public void onScroll(float distanceX, float distanceY) { |
49 mClient.sendMouseWheelEvent((int) -distanceX, (int) -distanceY); | 47 JniInterface.sendMouseWheelEvent((int) -distanceX, (int) -distanceY); |
50 } | 48 } |
51 | 49 |
52 @Override | 50 @Override |
53 public void onMotionEvent(MotionEvent event) { | 51 public void onMotionEvent(MotionEvent event) { |
54 if (event.getActionMasked() == MotionEvent.ACTION_UP | 52 if (event.getActionMasked() == MotionEvent.ACTION_UP |
55 && mHeldButton != TouchInputHandlerInterface.BUTTON_UNDEFINED) { | 53 && mHeldButton != TouchInputHandlerInterface.BUTTON_UNDEFINED) { |
56 injectMouseButtonEvent(mHeldButton, false); | 54 injectMouseButtonEvent(mHeldButton, false); |
57 mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; | 55 mHeldButton = TouchInputHandlerInterface.BUTTON_UNDEFINED; |
58 } | 56 } |
59 } | 57 } |
60 | 58 |
61 @Override | 59 @Override |
62 public void injectCursorMoveEvent(int x, int y) { | 60 public void injectCursorMoveEvent(int x, int y) { |
63 mClient.sendMouseEvent(x, y, TouchInputHandlerInterface.BUTTON_UNDEFINED
, false); | 61 JniInterface.sendMouseEvent(x, y, TouchInputHandlerInterface.BUTTON_UNDE
FINED, false); |
64 } | 62 } |
65 | 63 |
66 @Override | 64 @Override |
67 public DesktopView.InputFeedbackType getShortPressFeedbackType() { | 65 public DesktopView.InputFeedbackType getShortPressFeedbackType() { |
68 return DesktopView.InputFeedbackType.NONE; | 66 return DesktopView.InputFeedbackType.NONE; |
69 } | 67 } |
70 | 68 |
71 @Override | 69 @Override |
72 public DesktopView.InputFeedbackType getLongPressFeedbackType() { | 70 public DesktopView.InputFeedbackType getLongPressFeedbackType() { |
73 return DesktopView.InputFeedbackType.SMALL_ANIMATION; | 71 return DesktopView.InputFeedbackType.SMALL_ANIMATION; |
74 } | 72 } |
75 | 73 |
76 @Override | 74 @Override |
77 public boolean isIndirectInputMode() { | 75 public boolean isIndirectInputMode() { |
78 return true; | 76 return true; |
79 } | 77 } |
80 | 78 |
81 private void injectMouseButtonEvent(int button, boolean pressed) { | 79 private void injectMouseButtonEvent(int button, boolean pressed) { |
82 Point cursorPosition; | 80 Point cursorPosition; |
83 synchronized (mRenderData) { | 81 synchronized (mRenderData) { |
84 cursorPosition = mRenderData.getCursorPosition(); | 82 cursorPosition = mRenderData.getCursorPosition(); |
85 } | 83 } |
86 mClient.sendMouseEvent(cursorPosition.x, cursorPosition.y, button, press
ed); | 84 JniInterface.sendMouseEvent(cursorPosition.x, cursorPosition.y, button,
pressed); |
87 } | 85 } |
88 } | 86 } |
OLD | NEW |