Merge "Update NavHandle tests to use more conservative timings." into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
19db412ca6
+29
-46
@@ -28,6 +28,7 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_CONTEXTUAL_SEARCH_LPNH_ABANDON;
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static com.android.quickstep.DeviceConfigWrapper.DEFAULT_LPNH_TIMEOUT_MS;
|
||||
import static com.android.quickstep.inputconsumers.NavHandleLongPressInputConsumer.MIN_TIME_TO_LOG_ABANDON_MS;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@@ -147,8 +148,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
public void testDelegateDisallowsTouchInterceptAfterTouchDown() {
|
||||
// Touch down and wait the minimum abandonment time.
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
SystemClock.sleep(NavHandleLongPressInputConsumer.MIN_TIME_TO_LOG_ABANDON_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(MIN_TIME_TO_LOG_ABANDON_MS);
|
||||
|
||||
// Delegate should still get touches unless long press is triggered.
|
||||
verify(mDelegate).onMotionEvent(any());
|
||||
@@ -173,8 +173,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testLongPressTriggered() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_ACTIVE);
|
||||
assertTrue(mLongPressTriggered.get());
|
||||
@@ -191,10 +190,8 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testLongPressTriggeredWithSlightVerticalMovement() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEventWithYOffset(ACTION_MOVE,
|
||||
-(TOUCH_SLOP - 1)));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEventWithYOffset(ACTION_MOVE, 1));
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_ACTIVE);
|
||||
assertTrue(mLongPressTriggered.get());
|
||||
@@ -207,10 +204,8 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testLongPressTriggeredWithSlightHorizontalMovement() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
mUnderTest.onMotionEvent(generateMotionEvent(ACTION_MOVE,
|
||||
mScreenWidth / 2f - (TOUCH_SLOP - 1), 0));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
mUnderTest.onMotionEvent(generateMotionEvent(ACTION_MOVE, mScreenWidth / 2f + 1, 0));
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_ACTIVE);
|
||||
assertTrue(mLongPressTriggered.get());
|
||||
@@ -230,8 +225,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
mUnderTest.onMotionEvent(generateMotionEvent(ACTION_MOVE,
|
||||
mScreenWidth / 2f - (TOUCH_SLOP - 1), 0));
|
||||
// We have entered the second stage, so the normal timeout shouldn't trigger.
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -241,9 +235,8 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
// After an extended time, the long press should trigger.
|
||||
float extendedDurationMultiplier =
|
||||
(DeviceConfigWrapper.get().getTwoStageDurationPercentage() / 100f);
|
||||
SystemClock.sleep((long) (DEFAULT_LPNH_TIMEOUT_MS
|
||||
sleep((long) (DEFAULT_LPNH_TIMEOUT_MS
|
||||
* (extendedDurationMultiplier - 1))); // -1 because we already waited 1x
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_ACTIVE);
|
||||
assertTrue(mLongPressTriggered.get());
|
||||
@@ -264,8 +257,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
// We have not entered the second stage, so the normal timeout should trigger.
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_ACTIVE);
|
||||
assertTrue(mLongPressTriggered.get());
|
||||
@@ -281,16 +273,14 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testLongPressAbortedByTouchUp() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS - 10);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(MIN_TIME_TO_LOG_ABANDON_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_UP));
|
||||
// Wait past the long press timeout, to be extra sure it wouldn't have triggered.
|
||||
SystemClock.sleep(20);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -303,16 +293,14 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testLongPressAbortedByTouchCancel() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS - 10);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(MIN_TIME_TO_LOG_ABANDON_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_CANCEL));
|
||||
// Wait past the long press timeout, to be extra sure it wouldn't have triggered.
|
||||
SystemClock.sleep(20);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -325,8 +313,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testLongPressAbortedByTouchSlopPassedVertically() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS - 10);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(MIN_TIME_TO_LOG_ABANDON_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -334,8 +321,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEventWithYOffset(ACTION_MOVE,
|
||||
-(TOUCH_SLOP + 1)));
|
||||
// Wait past the long press timeout, to be extra sure it wouldn't have triggered.
|
||||
SystemClock.sleep(20);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -348,8 +334,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testLongPressAbortedByTouchSlopPassedHorizontally() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS - 10);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(MIN_TIME_TO_LOG_ABANDON_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -357,8 +342,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
mUnderTest.onMotionEvent(generateMotionEvent(ACTION_MOVE,
|
||||
mScreenWidth / 2f - (TOUCH_SLOP + 1), 0));
|
||||
// Wait past the long press timeout, to be extra sure it wouldn't have triggered.
|
||||
SystemClock.sleep(20);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -379,8 +363,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEventWithYOffset(ACTION_MOVE,
|
||||
-(TOUCH_SLOP - 1)));
|
||||
// Normal duration shouldn't trigger.
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -391,9 +374,8 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
// Wait past the extended long press timeout, to be sure it wouldn't have triggered.
|
||||
float extendedDurationMultiplier =
|
||||
(DeviceConfigWrapper.get().getTwoStageDurationPercentage() / 100f);
|
||||
SystemClock.sleep((long) (DEFAULT_LPNH_TIMEOUT_MS
|
||||
sleep((long) (DEFAULT_LPNH_TIMEOUT_MS
|
||||
* (extendedDurationMultiplier - 1))); // -1 because we already waited 1x
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -418,8 +400,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
mUnderTest.onMotionEvent(generateMotionEvent(ACTION_MOVE,
|
||||
mScreenWidth / 2f - (TOUCH_SLOP - 1), 0));
|
||||
// Normal duration shouldn't trigger.
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -430,9 +411,8 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
// Wait past the extended long press timeout, to be sure it wouldn't have triggered.
|
||||
float extendedDurationMultiplier =
|
||||
(DeviceConfigWrapper.get().getTwoStageDurationPercentage() / 100f);
|
||||
SystemClock.sleep((long) (DEFAULT_LPNH_TIMEOUT_MS
|
||||
sleep((long) (DEFAULT_LPNH_TIMEOUT_MS
|
||||
* (extendedDurationMultiplier - 1))); // -1 because we already waited 1x
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
assertFalse(mLongPressTriggered.get());
|
||||
@@ -450,8 +430,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
public void testTouchOutsideNavHandleIgnored() {
|
||||
// Touch the far left side of the screen. (y=0 is top of navbar region, picked arbitrarily)
|
||||
mUnderTest.onMotionEvent(generateMotionEvent(ACTION_DOWN, 0, 0));
|
||||
SystemClock.sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(DEFAULT_LPNH_TIMEOUT_MS);
|
||||
|
||||
// Should be ignored because the x position was not centered in the navbar region.
|
||||
assertThat(mUnderTest.mState).isEqualTo(DelegateInputConsumer.STATE_INACTIVE);
|
||||
@@ -484,8 +463,7 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
@Test
|
||||
public void testNoLogsForShortTouch() {
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_DOWN));
|
||||
SystemClock.sleep(10);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
sleep(10);
|
||||
mUnderTest.onMotionEvent(generateCenteredMotionEvent(ACTION_UP));
|
||||
verifyNoMoreInteractions(mStatsLogManager);
|
||||
verifyNoMoreInteractions(mStatsLogger);
|
||||
@@ -509,6 +487,11 @@ public class NavHandleLongPressInputConsumerTest {
|
||||
mDownTimeMs = 0;
|
||||
}
|
||||
|
||||
private static void sleep(long sleepMs) {
|
||||
SystemClock.sleep(sleepMs);
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
}
|
||||
|
||||
/** Generate a motion event centered horizontally in the screen. */
|
||||
private MotionEvent generateCenteredMotionEvent(int motionAction) {
|
||||
return generateCenteredMotionEventWithYOffset(motionAction, 0);
|
||||
|
||||
Reference in New Issue
Block a user