diff options
| author | 2024-02-21 22:11:11 +0000 | |
|---|---|---|
| committer | 2024-02-22 19:45:25 +0000 | |
| commit | 35b7f96739bdd53e23fcc24c6c5b47ea8226cefb (patch) | |
| tree | 6b47a23ae318d667b31eb63492cf78a800df2ab8 | |
| parent | 77c6fd2c11f1b7166a8ca93b6243038e13192475 (diff) | |
TouchExplorer: reset hover event timer on ACTION_UP.
This insures that users have the correct interval between taps.
Fix: 326260351
Flag: reset_hover_event_timer_on_action_up
Test: atest TouchExplorerTest -- --test-arg com.android.tradefed.testtype.AndroidJUnitTest:instrumentation-arg:randomize:=true --test-arg com.android.tradefed.testtype.AndroidJUnitTest:instrumentation-arg:randomSeed:=-9204845749734110277
Change-Id: I82a8dc36d956b8d184f30554f3721946f2eb61d0
| -rw-r--r-- | services/accessibility/accessibility.aconfig | 10 | ||||
| -rw-r--r-- | services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java | 13 |
2 files changed, 23 insertions, 0 deletions
diff --git a/services/accessibility/accessibility.aconfig b/services/accessibility/accessibility.aconfig index 015c35eed326..e10ecad20eb4 100644 --- a/services/accessibility/accessibility.aconfig +++ b/services/accessibility/accessibility.aconfig @@ -80,6 +80,16 @@ flag { } flag { + name: "reset_hover_event_timer_on_action_up" + namespace: "accessibility" + description: "Reset the timer for sending hover events on receiving ACTION_UP to guarantee the correct amount of time is available between taps." + bug: "326260351" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "scan_packages_without_lock" namespace: "accessibility" description: "Scans packages for accessibility service/activity info without holding the A11yMS lock" 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 3086ce1ceb40..4fc65bfeca58 100644 --- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java +++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java @@ -852,6 +852,11 @@ public class TouchExplorer extends BaseEventStreamTransformation final int pointerIdBits = (1 << pointerId); if (mSendHoverEnterAndMoveDelayed.isPending()) { // If we have not delivered the enter schedule an exit. + if (Flags.resetHoverEventTimerOnActionUp()) { + // We cancel first to reset the time window so that the user has the full amount of + // time to do a multi tap. + mSendHoverEnterAndMoveDelayed.repost(); + } mSendHoverExitDelayed.post(event, rawEvent, pointerIdBits, policyFlags); } else { // The user is touch exploring so we send events for end. @@ -1554,6 +1559,14 @@ public class TouchExplorer extends BaseEventStreamTransformation } } + public void repost() { + // cancel without clearing + if (isPending()) { + mHandler.removeCallbacks(this); + mHandler.postDelayed(this, mDetermineUserIntentTimeout); + } + } + private boolean isPending() { return mHandler.hasCallbacks(this); } |