diff options
| -rw-r--r-- | services/core/java/com/android/server/policy/SingleKeyGestureDetector.java | 4 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java | 12 |
2 files changed, 15 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java b/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java index 9c3b38ab51a3..b999bbb3dce2 100644 --- a/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java +++ b/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java @@ -314,7 +314,9 @@ public final class SingleKeyGestureDetector { if (eventTime < mLastDownTime + mActiveRule.getVeryLongPressTimeoutMs()) { mHandler.removeMessages(MSG_KEY_VERY_LONG_PRESS); } else { - mHandledByLongPress = mActiveRule.supportVeryLongPress(); + // If long press or very long press (~3.5s) had been handled, we should skip the + // short press behavior. + mHandledByLongPress |= mActiveRule.supportVeryLongPress(); } } diff --git a/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java b/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java index 280afbadec30..3bb86a7bfecb 100644 --- a/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java +++ b/services/tests/wmtests/src/com/android/server/policy/SingleKeyGestureTests.java @@ -316,4 +316,16 @@ public class SingleKeyGestureTests { pressKey(KEYCODE_POWER, 0 /* pressTime */); assertTrue(mShortPressed.await(mWaitTimeout, TimeUnit.MILLISECONDS)); } + + // Verify short press should not be triggered if no very long press behavior defined but the + // press time exceeded the very long press timeout. + @Test + public void testTimeoutExceedVeryLongPress() throws InterruptedException { + mVeryLongPressOnPowerBehavior = false; + + pressKey(KEYCODE_POWER, mVeryLongPressTime + 50); + assertTrue(mLongPressed.await(mWaitTimeout, TimeUnit.MILLISECONDS)); + assertEquals(mVeryLongPressed.getCount(), 1); + assertEquals(mShortPressed.getCount(), 1); + } } |