summaryrefslogtreecommitdiff
path: root/services/accessibility
diff options
context:
space:
mode:
authorryanlwlin <ryanlwlin@google.com>2020-08-20 09:53:58 +0800
committerAmeer Armaly <aarmaly@google.com>2020-10-11 08:04:43 -0700
commitdd8ef30adfc6e47b6d48c2aa558c1a793ce8eab9 (patch)
tree5f5506a6dcfd6037fb255c671190856890a289e2 /services/accessibility
parent217bb3b1d2182d83101337cff0930d2696254699 (diff)
[DO NOT MERGE] Fix hardly to perform 3-finger swipe from the bottom
We accidentky checked invalid pointers down position. In stead of checking all pointers, we check the pointer ids from the motion event. Bug: 165576902 Test: manually test atest TouchExplorerTest Change-Id: Id530bf4b760351215726b2afd781433b590f57ce
Diffstat (limited to 'services/accessibility')
-rw-r--r--services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java27
1 files changed, 17 insertions, 10 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
index a13f59c2e549..abde43076c4e 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
@@ -622,18 +622,9 @@ public class TouchExplorer extends BaseEventStreamTransformation
if (mGestureDetector.isMultiFingerGesturesEnabled()) {
if (mGestureDetector.isTwoFingerPassthroughEnabled()) {
if (event.getPointerCount() == 3) {
- boolean isOnBottomEdge = true;
// If three fingers went down on the bottom edge of the screen, delegate
// immediately.
- final long screenHeight =
- mContext.getResources().getDisplayMetrics().heightPixels;
- for (int i = 0; i < TouchState.MAX_POINTER_COUNT; ++i) {
- if (mReceivedPointerTracker.getReceivedPointerDownY(i)
- < (screenHeight - mEdgeSwipeHeightPixels)) {
- isOnBottomEdge = false;
- }
- }
- if (isOnBottomEdge) {
+ if (allPointersDownOnBottomEdge(event)) {
if (DEBUG) {
Slog.d(LOG_TAG, "Three-finger edge swipe detected.");
}
@@ -1050,6 +1041,22 @@ public class TouchExplorer extends BaseEventStreamTransformation
return downEvent;
}
+ private boolean allPointersDownOnBottomEdge(MotionEvent event) {
+ final long screenHeight =
+ mContext.getResources().getDisplayMetrics().heightPixels;
+ for (int i = 0; i < event.getPointerCount(); ++i) {
+ final int pointerId = event.getPointerId(i);
+ final float pointerDownY = mReceivedPointerTracker.getReceivedPointerDownY(pointerId);
+ if (pointerDownY < (screenHeight - mEdgeSwipeHeightPixels)) {
+ if (DEBUG) {
+ Slog.d(LOG_TAG, "The pointer is not on the bottom edge" + pointerDownY);
+ }
+ return false;
+ }
+ }
+ return true;
+ }
+
public TouchState getState() {
return mState;
}