From 0d352887e2820cf99d4935576c998a710538115f Mon Sep 17 00:00:00 2001 From: Ameer Armaly Date: Fri, 4 Mar 2022 15:48:59 -0800 Subject: [PATCH] Fix service touch exploration. We were queueing up ACTION_HOVER_EXIT when initiating touch exploration which doesn't make sense. ACTION_HOVER_EXIT only makes sense on ACTION_UP when touch exploring. Fix: 219814318 Fix: 220387502 Test: Verify that entering a pin works as expected. Test: Verify that touch exploration does not get stuck often, only occasionally per b/215654623 Change-Id: Iab29f7736ab4ff3ea24c26109073481a876ffb58 --- .../server/accessibility/gestures/TouchExplorer.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 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 86777a2f62fd1..e20b15a3e8073 100644 --- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java +++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java @@ -1327,14 +1327,13 @@ public class TouchExplorer extends BaseEventStreamTransformation if (mState.isServiceDetectingGestures() && mState.isTouchInteracting()) { // Cancel without deleting events. mHandler.removeCallbacks(mSendHoverEnterAndMoveDelayed); - mSendHoverEnterAndMoveDelayed.run(); - mSendHoverEnterAndMoveDelayed.clear(); - final MotionEvent prototype = mState.getLastReceivedEvent(); - final MotionEvent rawEvent = mState.getLastReceivedRawEvent(); final int pointerId = mReceivedPointerTracker.getPrimaryPointerId(); final int pointerIdBits = (1 << pointerId); final int policyFlags = mState.getLastReceivedPolicyFlags(); - mSendHoverExitDelayed.post(prototype, rawEvent, pointerIdBits, policyFlags); + mSendHoverEnterAndMoveDelayed.setPointerIdBits(pointerIdBits); + mSendHoverEnterAndMoveDelayed.setPolicyFlags(policyFlags); + mSendHoverEnterAndMoveDelayed.run(); + mSendHoverEnterAndMoveDelayed.clear(); } }