From 6951aef06038135a9ad26838c2a77f79ddbcb8de Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Fri, 30 Jul 2021 16:24:58 +0100 Subject: [PATCH] Fix Launcher3 tests for tablets - Consider taskbar size for bottom gesture size, by using TargetInsets - TargetInsets should substract overlapping taskbar size when it's present - For pressHome, use the same gesture scope when context menu is present as well. - For pressHome, GestureScope.INSIDE_TO_OUTSIDE should only be used when it's already at home screen on launcher3 tablet. Bug: 193539246 Test: NexusLauncherTest and Launcher3Test Change-Id: I4a20522f3b38ef326acae4b189df11a125990411 --- .../testing/TestInformationHandler.java | 7 +++++-- .../tapl/LauncherInstrumentation.java | 19 +++++++++++-------- .../com/android/launcher3/tapl/Workspace.java | 4 +--- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/com/android/launcher3/testing/TestInformationHandler.java b/src/com/android/launcher3/testing/TestInformationHandler.java index 944a41f8d2..5106992dc7 100644 --- a/src/com/android/launcher3/testing/TestInformationHandler.java +++ b/src/com/android/launcher3/testing/TestInformationHandler.java @@ -102,8 +102,11 @@ public class TestInformationHandler implements ResourceBasedOverride { return getUIProperty(Bundle::putParcelable, a -> { WindowInsets insets = a.getWindow() .getDecorView().getRootWindowInsets(); - return Insets.max( - insets.getSystemGestureInsets(), insets.getSystemWindowInsets()); + return Insets.subtract( + Insets.max( + insets.getSystemGestureInsets(), + insets.getSystemWindowInsets()), + Insets.of(0, 0, 0, mDeviceProfile.nonOverlappingTaskbarInset)); }, this::getCurrentActivity); } diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index 93c921ef08..49934f7e46 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -728,18 +728,23 @@ public final class LauncherInstrumentation { // otherwise waitForIdle may return immediately in case when there was a big enough // pause in accessibility events prior to pressing Home. final String action; - final boolean launcherWasVisible = isLauncherVisible(); if (getNavigationModel() == NavigationModel.ZERO_BUTTON) { checkForAnomaly(); final Point displaySize = getRealDisplaySize(); + boolean gestureStartFromLauncher = isTablet() + ? !isLauncher3() || hasLauncherObject(WORKSPACE_RES_ID) + : isLauncherVisible(); + GestureScope gestureScope = gestureStartFromLauncher + ? GestureScope.INSIDE_TO_OUTSIDE + : GestureScope.OUTSIDE_WITH_PILFER; if (hasLauncherObject(CONTEXT_MENU_RES_ID)) { linearGesture( displaySize.x / 2, displaySize.y - 1, displaySize.x / 2, 0, ZERO_BUTTON_STEPS_FROM_BACKGROUND_TO_HOME, - false, GestureScope.INSIDE_TO_OUTSIDE); + false, gestureScope); try (LauncherInstrumentation.Closable c1 = addContextLayer( "Swiped up from context menu to home")) { waitUntilLauncherObjectGone(CONTEXT_MENU_RES_ID); @@ -760,9 +765,7 @@ public final class LauncherInstrumentation { displaySize.x / 2, displaySize.y - 1, displaySize.x / 2, 0, ZERO_BUTTON_STEPS_FROM_BACKGROUND_TO_HOME, NORMAL_STATE_ORDINAL, - launcherWasVisible || isTablet() - ? GestureScope.INSIDE_TO_OUTSIDE - : GestureScope.OUTSIDE_WITH_PILFER); + gestureScope); } } else { log("Hierarchy before clicking home:"); @@ -1115,9 +1118,9 @@ public final class LauncherInstrumentation { "swiping"); } - private int getBottomGestureSize() { - return ResourceUtils.getNavbarSize( - ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, getResources()) + 1; + int getBottomGestureSize() { + return Math.max(getTargetInsets().bottom, ResourceUtils.getNavbarSize( + ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, getResources())) + 1; } int getBottomGestureMarginInContainer(UiObject2 container) { diff --git a/tests/tapl/com/android/launcher3/tapl/Workspace.java b/tests/tapl/com/android/launcher3/tapl/Workspace.java index 2acf7b44b9..db2e250bd3 100644 --- a/tests/tapl/com/android/launcher3/tapl/Workspace.java +++ b/tests/tapl/com/android/launcher3/tapl/Workspace.java @@ -34,7 +34,6 @@ import androidx.test.uiautomator.By; import androidx.test.uiautomator.Direction; import androidx.test.uiautomator.UiObject2; -import com.android.launcher3.ResourceUtils; import com.android.launcher3.testing.TestProtocol; import java.util.regex.Pattern; @@ -72,8 +71,7 @@ public final class Workspace extends Home { mLauncher.addContextLayer("want to switch from workspace to all apps")) { verifyActiveContainer(); final int deviceHeight = mLauncher.getDevice().getDisplayHeight(); - final int bottomGestureMargin = ResourceUtils.getNavbarSize( - ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, mLauncher.getResources()); + final int bottomGestureMargin = mLauncher.getBottomGestureSize(); final int windowCornerRadius = (int) Math.ceil(mLauncher.getWindowCornerRadius()); final int startY = deviceHeight - Math.max(bottomGestureMargin, windowCornerRadius) - 1; final int swipeHeight = mLauncher.getTestInfo(