mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-27 15:26:58 +00:00
Change TAPL to swipe to stash taskbar (instead of deprecated long press)
This also means Taskbar is transient by default in automated tests, instead of persistent. Updated some checks accordingly. Flag: LEGACY ENABLE_TRANSIENT_TASKBAR ENABLED Test: TaskbarExpandCollapse#hideShowTaskbar; TaplTestsTaskbar; TaplTestsTransientTaskbar; TaplTestsPersistentTaskbar Bug: 270395798 Change-Id: Ib6e592a31a55a912a7ea991a421a9c60bca51c80
This commit is contained in:
@@ -106,10 +106,10 @@ public class QuickstepTestInformationHandler extends TestInformationHandler {
|
||||
});
|
||||
return response;
|
||||
|
||||
case TestProtocol.REQUEST_STASHED_TASKBAR_HEIGHT: {
|
||||
case TestProtocol.REQUEST_TASKBAR_FROM_NAV_THRESHOLD: {
|
||||
final Resources resources = mContext.getResources();
|
||||
response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD,
|
||||
resources.getDimensionPixelSize(R.dimen.taskbar_stashed_size));
|
||||
resources.getDimensionPixelSize(R.dimen.taskbar_from_nav_threshold));
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.android.launcher3.util.LauncherLayoutBuilder;
|
||||
import com.android.launcher3.util.TestUtil;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Assume;
|
||||
|
||||
import java.util.List;
|
||||
@@ -86,6 +87,11 @@ public class AbstractTaplTestsTaskbar extends AbstractQuickStepTest {
|
||||
taskbarIconNames, hotseatIconNames);
|
||||
}
|
||||
|
||||
if (!isTaskbarInTransientMode(mTargetContext)) {
|
||||
Assert.assertEquals("Persistent taskbar should fill screen width",
|
||||
taskbar.getVisibleBounds().width(), mLauncher.getRealDisplaySize().x);
|
||||
}
|
||||
|
||||
return taskbar;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,9 +20,10 @@ import static com.android.quickstep.TaskbarModeSwitchRule.Mode.PERSISTENT;
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
|
||||
import com.android.quickstep.NavigationModeSwitchRule.NavigationModeSwitch;
|
||||
import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -32,17 +33,10 @@ public class TaplTestsPersistentTaskbar extends AbstractTaplTestsTaskbar {
|
||||
|
||||
@Test
|
||||
@TaskbarModeSwitch(mode = PERSISTENT)
|
||||
public void testHideShowTaskbar() {
|
||||
getTaskbar().hide();
|
||||
mLauncher.getLaunchedAppState().showTaskbar();
|
||||
}
|
||||
|
||||
@Test
|
||||
@TaskbarModeSwitch(mode = PERSISTENT)
|
||||
@Ignore // b/301575789
|
||||
public void testHideTaskbarPersistsOnRecreate() {
|
||||
getTaskbar().hide();
|
||||
mLauncher.recreateTaskbar();
|
||||
mLauncher.getLaunchedAppState().assertTaskbarHidden();
|
||||
@PortraitLandscape
|
||||
@NavigationModeSwitch
|
||||
public void testTaskbarFillsWidth() {
|
||||
// Width check is performed inside TAPL whenever getTaskbar() is called.
|
||||
getTaskbar();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.quickstep;
|
||||
|
||||
import static com.android.quickstep.TaskbarModeSwitchRule.Mode.PERSISTENT;
|
||||
import static com.android.quickstep.TaskbarModeSwitchRule.Mode.TRANSIENT;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -298,7 +297,7 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
|
||||
@Test
|
||||
@ScreenRecord // b/242163205
|
||||
@PlatinumTest(focusArea = "launcher")
|
||||
@TaskbarModeSwitch(mode = PERSISTENT)
|
||||
@TaskbarModeSwitch
|
||||
public void testQuickSwitchToPreviousAppForTablet() throws Exception {
|
||||
assumeTrue(mLauncher.isTablet());
|
||||
startTestActivity(2);
|
||||
@@ -307,18 +306,28 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
|
||||
// Set ignoreTaskbarVisibility to true to verify the task bar visibility explicitly.
|
||||
mLauncher.setIgnoreTaskbarVisibility(true);
|
||||
|
||||
// Expect task bar invisible when the launched app was the IME activity.
|
||||
LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
|
||||
launchedAppState.assertTaskbarHidden();
|
||||
try {
|
||||
// Expect task bar invisible when the launched app was the IME activity.
|
||||
LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
|
||||
launchedAppState.assertTaskbarHidden();
|
||||
|
||||
// Quick-switch to the test app with swiping to right.
|
||||
quickSwitchToPreviousAppAndAssert(true /* toRight */);
|
||||
// Quick-switch to the test app with swiping to right.
|
||||
quickSwitchToPreviousAppAndAssert(true /* toRight */);
|
||||
|
||||
assertTestActivityIsRunning(2,
|
||||
"The first app we should have quick switched to is not running");
|
||||
// Expect task bar visible when the launched app was the test activity.
|
||||
launchedAppState = getAndAssertLaunchedApp();
|
||||
launchedAppState.assertTaskbarVisible();
|
||||
assertTestActivityIsRunning(2,
|
||||
"The first app we should have quick switched to is not running");
|
||||
launchedAppState = getAndAssertLaunchedApp();
|
||||
boolean isTransientTaskbar = mLauncher.isTransientTaskbar();
|
||||
if (isTransientTaskbar) {
|
||||
launchedAppState.assertTaskbarHidden();
|
||||
} else {
|
||||
// Expect taskbar visible when the launched app was the test activity.
|
||||
launchedAppState.assertTaskbarVisible();
|
||||
}
|
||||
} finally {
|
||||
// Reset ignoreTaskbarVisibility to ensure other tests still verify it.
|
||||
mLauncher.setIgnoreTaskbarVisibility(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -354,7 +363,7 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
|
||||
|
||||
@Test
|
||||
@PortraitLandscape
|
||||
@TaskbarModeSwitch(mode = PERSISTENT)
|
||||
@TaskbarModeSwitch()
|
||||
@PlatinumTest(focusArea = "launcher")
|
||||
@ScreenRecord
|
||||
public void testOverviewForTablet() throws Exception {
|
||||
@@ -449,6 +458,7 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
|
||||
|
||||
@Test
|
||||
@PortraitLandscape
|
||||
@TaskbarModeSwitch
|
||||
public void testTaskbarDeadzonesForTablet() throws Exception {
|
||||
assumeTrue(mLauncher.isTablet());
|
||||
|
||||
@@ -461,15 +471,29 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
|
||||
launcher -> assertTrue("Should have at least 3 tasks",
|
||||
getTaskCount(launcher) >= 3));
|
||||
|
||||
// On persistent taskbar, it should not dismiss when tapping the taskbar
|
||||
overview.touchTaskbarBottomCorner(/* tapRight= */ false);
|
||||
assertTrue("Launcher internal state should be Overview",
|
||||
isInState(() -> LauncherState.OVERVIEW));
|
||||
if (mLauncher.isTransientTaskbar()) {
|
||||
// On transient taskbar, it should dismiss when tapping outside taskbar bounds.
|
||||
overview.touchTaskbarBottomCorner(/* tapRight= */ false);
|
||||
assertTrue("Launcher internal state should be Normal",
|
||||
isInState(() -> LauncherState.NORMAL));
|
||||
|
||||
// On persistent taskbar, it should not dismiss when tapping the taskbar
|
||||
overview.touchTaskbarBottomCorner(/* tapRight= */ true);
|
||||
assertTrue("Launcher internal state should be Overview",
|
||||
isInState(() -> LauncherState.OVERVIEW));
|
||||
overview = mLauncher.getWorkspace().switchToOverview();
|
||||
|
||||
// On transient taskbar, it should dismiss when tapping outside taskbar bounds.
|
||||
overview.touchTaskbarBottomCorner(/* tapRight= */ true);
|
||||
assertTrue("Launcher internal state should be Normal",
|
||||
isInState(() -> LauncherState.NORMAL));
|
||||
} else {
|
||||
// On persistent taskbar, it should not dismiss when tapping the taskbar
|
||||
overview.touchTaskbarBottomCorner(/* tapRight= */ false);
|
||||
assertTrue("Launcher internal state should be Overview",
|
||||
isInState(() -> LauncherState.OVERVIEW));
|
||||
|
||||
// On persistent taskbar, it should not dismiss when tapping the taskbar
|
||||
overview.touchTaskbarBottomCorner(/* tapRight= */ true);
|
||||
assertTrue("Launcher internal state should be Overview",
|
||||
isInState(() -> LauncherState.OVERVIEW));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -24,6 +24,7 @@ import static org.junit.Assume.assumeTrue;
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
|
||||
import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -64,4 +65,12 @@ public class TaplTestsTransientTaskbar extends AbstractTaplTestsTaskbar {
|
||||
getTaskbar().getAppIcon(TEST_APP_NAME).launch(TEST_APP_PACKAGE);
|
||||
mLauncher.getLaunchedAppState().clickStashedTaskbarToGoHome();
|
||||
}
|
||||
|
||||
@Test
|
||||
@TaskbarModeSwitch(mode = TRANSIENT)
|
||||
@PortraitLandscape
|
||||
public void testSwipeToStashAndUnstash() {
|
||||
getTaskbar().swipeDownToStash();
|
||||
mLauncher.getLaunchedAppState().swipeUpToUnstashTaskbar();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ import com.android.launcher3.dragndrop.DragLayer;
|
||||
import com.android.launcher3.testing.shared.HotseatCellCenterRequest;
|
||||
import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import com.android.launcher3.testing.shared.WorkspaceCellCenterRequest;
|
||||
import com.android.launcher3.util.DisplayController;
|
||||
import com.android.launcher3.util.ResourceBasedOverride;
|
||||
import com.android.launcher3.widget.picker.WidgetsFullSheet;
|
||||
|
||||
@@ -170,6 +171,11 @@ public class TestInformationHandler implements ResourceBasedOverride {
|
||||
mDeviceProfile.numShownAllAppsColumns);
|
||||
return response;
|
||||
|
||||
case TestProtocol.REQUEST_IS_TRANSIENT_TASKBAR:
|
||||
response.putBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD,
|
||||
DisplayController.isTransientTaskbar(mContext));
|
||||
return response;
|
||||
|
||||
case TestProtocol.REQUEST_IS_TWO_PANELS:
|
||||
response.putBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD,
|
||||
FOLDABLE_SINGLE_PAGE.get() ? false : mDeviceProfile.isTwoPanels);
|
||||
|
||||
@@ -71,7 +71,7 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
|
||||
|
||||
private static final String TAG = "DisplayController";
|
||||
private static final boolean DEBUG = false;
|
||||
private static boolean sTransientTaskbarStatusForTests;
|
||||
private static boolean sTransientTaskbarStatusForTests = true;
|
||||
|
||||
// TODO(b/254119092) remove all logs with this tag
|
||||
public static final String TASKBAR_NOT_DESTROYED_TAG = "b/254119092";
|
||||
|
||||
@@ -41,6 +41,7 @@ import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.InsettableFrameLayout;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.testing.shared.ResourceUtils;
|
||||
import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
|
||||
import com.android.launcher3.util.MultiValueAlpha;
|
||||
import com.android.launcher3.util.TouchController;
|
||||
@@ -559,7 +560,8 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
|
||||
DeviceProfile dp = mActivity.getDeviceProfile();
|
||||
if (dp.isTaskbarPresent) {
|
||||
// Ignore taskbar gesture insets to avoid interfering with TouchControllers.
|
||||
gestureInsetBottom = Math.max(0, gestureInsetBottom - dp.taskbarHeight);
|
||||
gestureInsetBottom = ResourceUtils.getNavbarSize(
|
||||
ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, getResources());
|
||||
}
|
||||
mSystemGestureRegion.set(
|
||||
Math.max(gestureInsets.left, imeInset.left),
|
||||
|
||||
@@ -93,8 +93,9 @@ public final class TestProtocol {
|
||||
public static final String REQUEST_DISABLE_BLOCK_TIMEOUT = "disable-block-timeout";
|
||||
public static final String REQUEST_ENABLE_TRANSIENT_TASKBAR = "enable-transient-taskbar";
|
||||
public static final String REQUEST_DISABLE_TRANSIENT_TASKBAR = "disable-transient-taskbar";
|
||||
public static final String REQUEST_IS_TRANSIENT_TASKBAR = "is-transient-taskbar";
|
||||
public static final String REQUEST_UNSTASH_TASKBAR_IF_STASHED = "unstash-taskbar-if-stashed";
|
||||
public static final String REQUEST_STASHED_TASKBAR_HEIGHT = "stashed-taskbar-height";
|
||||
public static final String REQUEST_TASKBAR_FROM_NAV_THRESHOLD = "taskbar-from-nav-threshold";
|
||||
public static final String REQUEST_STASHED_TASKBAR_SCALE = "taskbar-stash-handle-scale";
|
||||
public static final String REQUEST_RECREATE_TASKBAR = "recreate-taskbar";
|
||||
public static final String REQUEST_APP_LIST_FREEZE_FLAGS = "app-list-freeze-flags";
|
||||
|
||||
@@ -183,7 +183,14 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
|
||||
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
|
||||
Taskbar taskbar = new Taskbar(mLauncher);
|
||||
taskbar.touchBottomCorner(tapRight);
|
||||
verifyActiveContainer();
|
||||
if (mLauncher.isTransientTaskbar()) {
|
||||
// Tapping outside Transient Taskbar returns to Workspace, wait for that state.
|
||||
new Workspace(mLauncher);
|
||||
} else {
|
||||
// Should stay in Overview.
|
||||
verifyActiveContainer();
|
||||
verifyActionsViewVisibility();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,12 +20,11 @@ import static com.android.launcher3.tapl.LauncherInstrumentation.DEFAULT_POLL_IN
|
||||
import static com.android.launcher3.tapl.LauncherInstrumentation.TASKBAR_RES_ID;
|
||||
import static com.android.launcher3.tapl.LauncherInstrumentation.WAIT_TIME_MS;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_BLOCK_TIMEOUT;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_BLOCK_TIMEOUT;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_SHELL_DRAG_READY;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_STASHED_TASKBAR_HEIGHT;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_STASHED_TASKBAR_SCALE;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_TASKBAR_FROM_NAV_THRESHOLD;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.TEST_INFO_RESPONSE_FIELD;
|
||||
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
@@ -84,8 +83,6 @@ public final class LaunchedAppState extends Background {
|
||||
public Taskbar getTaskbar() {
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"want to get the taskbar")) {
|
||||
mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
|
||||
return new Taskbar(mLauncher);
|
||||
}
|
||||
}
|
||||
@@ -113,37 +110,32 @@ public final class LaunchedAppState extends Background {
|
||||
/**
|
||||
* Returns the Taskbar in a visible state.
|
||||
*
|
||||
* The taskbar must already be hidden when calling this method.
|
||||
* The taskbar must already be hidden and in transient mode when calling this method.
|
||||
*/
|
||||
public Taskbar showTaskbar() {
|
||||
mLauncher.getTestInfo(REQUEST_ENABLE_MANUAL_TASKBAR_STASHING);
|
||||
public Taskbar swipeUpToUnstashTaskbar() {
|
||||
mLauncher.assertTrue("Taskbar is not transient, swipe up not supported",
|
||||
mLauncher.isTransientTaskbar());
|
||||
|
||||
mLauncher.getTestInfo(REQUEST_ENABLE_BLOCK_TIMEOUT);
|
||||
|
||||
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
|
||||
LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
|
||||
"want to show the taskbar")) {
|
||||
"want to swipe up to unstash the taskbar")) {
|
||||
mLauncher.waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
|
||||
final long downTime = SystemClock.uptimeMillis();
|
||||
final int unstashTargetY = mLauncher.getRealDisplaySize().y
|
||||
- (mLauncher.getTestInfo(REQUEST_STASHED_TASKBAR_HEIGHT)
|
||||
.getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD) / 2);
|
||||
final Point unstashTarget = new Point(
|
||||
mLauncher.getRealDisplaySize().x / 2, unstashTargetY);
|
||||
int taskbarFromNavThreshold = mLauncher.getTestInfo(REQUEST_TASKBAR_FROM_NAV_THRESHOLD)
|
||||
.getInt(TEST_INFO_RESPONSE_FIELD);
|
||||
int startX = mLauncher.getRealDisplaySize().x / 2;
|
||||
int startY = mLauncher.getRealDisplaySize().y - 1;
|
||||
int endX = startX;
|
||||
int endY = startY - taskbarFromNavThreshold;
|
||||
|
||||
mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_DOWN, unstashTarget,
|
||||
mLauncher.linearGesture(startX, startY, endX, endY, 10, /* slowDown= */ true,
|
||||
LauncherInstrumentation.GestureScope.EXPECT_PILFER);
|
||||
LauncherInstrumentation.log("showTaskbar: sent down");
|
||||
LauncherInstrumentation.log("swipeUpToUnstashTaskbar: sent linear swipe up gesture");
|
||||
|
||||
try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("pressed down")) {
|
||||
mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP, unstashTarget,
|
||||
LauncherInstrumentation.GestureScope.EXPECT_PILFER);
|
||||
|
||||
return new Taskbar(mLauncher);
|
||||
}
|
||||
return new Taskbar(mLauncher);
|
||||
} finally {
|
||||
mLauncher.getTestInfo(REQUEST_DISABLE_MANUAL_TASKBAR_STASHING);
|
||||
mLauncher.getTestInfo(REQUEST_DISABLE_BLOCK_TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -799,12 +799,7 @@ public final class LauncherInstrumentation {
|
||||
waitUntilSystemLauncherObjectGone(OVERVIEW_RES_ID);
|
||||
waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
|
||||
waitUntilLauncherObjectGone(KEYBOARD_QUICK_SWITCH_RES_ID);
|
||||
|
||||
if (is3PLauncher() && isTablet()) {
|
||||
waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
} else {
|
||||
waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
}
|
||||
waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
|
||||
return waitForLauncherObject(WORKSPACE_RES_ID);
|
||||
}
|
||||
@@ -814,12 +809,7 @@ public final class LauncherInstrumentation {
|
||||
waitUntilSystemLauncherObjectGone(OVERVIEW_RES_ID);
|
||||
waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
|
||||
waitUntilLauncherObjectGone(KEYBOARD_QUICK_SWITCH_RES_ID);
|
||||
|
||||
if (is3PLauncher() && isTablet()) {
|
||||
waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
} else {
|
||||
waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
}
|
||||
waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
|
||||
return waitForLauncherObject(WIDGETS_RES_ID);
|
||||
}
|
||||
@@ -840,7 +830,7 @@ public final class LauncherInstrumentation {
|
||||
waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
|
||||
waitUntilLauncherObjectGone(KEYBOARD_QUICK_SWITCH_RES_ID);
|
||||
|
||||
if (is3PLauncher() && isTablet()) {
|
||||
if (is3PLauncher() && isTablet() && !isTransientTaskbar()) {
|
||||
waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
} else {
|
||||
waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
@@ -853,7 +843,7 @@ public final class LauncherInstrumentation {
|
||||
waitUntilLauncherObjectGone(APPS_RES_ID);
|
||||
waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
|
||||
waitUntilLauncherObjectGone(WIDGETS_RES_ID);
|
||||
if (isTablet()) {
|
||||
if (isTablet() && !is3PLauncher()) {
|
||||
waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
} else {
|
||||
waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
@@ -890,7 +880,11 @@ public final class LauncherInstrumentation {
|
||||
}
|
||||
|
||||
if (isTablet()) {
|
||||
waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
// Only check that Persistent Taskbar is visible, since Transient Taskbar
|
||||
// may or may not be visible by design.
|
||||
if (!isTransientTaskbar()) {
|
||||
waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
}
|
||||
} else {
|
||||
waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
}
|
||||
@@ -964,7 +958,7 @@ public final class LauncherInstrumentation {
|
||||
/**
|
||||
* Using swiping up gesture to dismiss closable floating views, such as Menu or Folder Content.
|
||||
*/
|
||||
private void swipeUpToCloseFloatingView(boolean gestureStartFromLauncher) {
|
||||
private void swipeUpToCloseFloatingView() {
|
||||
final Point displaySize = getRealDisplaySize();
|
||||
|
||||
final Optional<String> floatingRes = getFloatingResId();
|
||||
@@ -973,16 +967,11 @@ public final class LauncherInstrumentation {
|
||||
return;
|
||||
}
|
||||
|
||||
GestureScope gestureScope = gestureStartFromLauncher
|
||||
// Without the navigation bar layer, the gesture scope on tablets remains inside the
|
||||
// launcher process.
|
||||
? (isTablet() ? GestureScope.DONT_EXPECT_PILFER : GestureScope.EXPECT_PILFER)
|
||||
: GestureScope.EXPECT_PILFER;
|
||||
linearGesture(
|
||||
displaySize.x / 2, displaySize.y - 1,
|
||||
displaySize.x / 2, 0,
|
||||
ZERO_BUTTON_STEPS_FROM_BACKGROUND_TO_HOME,
|
||||
false, gestureScope);
|
||||
false, GestureScope.EXPECT_PILFER);
|
||||
|
||||
try (LauncherInstrumentation.Closable c1 = addContextLayer(
|
||||
String.format("Swiped up from floating view %s to home", floatingRes.get()))) {
|
||||
@@ -1050,11 +1039,8 @@ public final class LauncherInstrumentation {
|
||||
|
||||
final Point displaySize = getRealDisplaySize();
|
||||
|
||||
boolean gestureStartFromLauncher =
|
||||
isTablet() ? !isLauncher3() : isLauncherVisible();
|
||||
|
||||
// CLose floating views before going back to home.
|
||||
swipeUpToCloseFloatingView(gestureStartFromLauncher);
|
||||
swipeUpToCloseFloatingView();
|
||||
|
||||
if (hasLauncherObject(WORKSPACE_RES_ID)) {
|
||||
log(action = "already at home");
|
||||
@@ -1984,7 +1970,8 @@ public final class LauncherInstrumentation {
|
||||
}
|
||||
}
|
||||
|
||||
Point getRealDisplaySize() {
|
||||
/** Returns the bounds of the display as a Point where x is width and y is height. */
|
||||
public Point getRealDisplaySize() {
|
||||
final Rect displayBounds = getContext().getSystemService(WindowManager.class)
|
||||
.getMaximumWindowMetrics()
|
||||
.getBounds();
|
||||
@@ -2046,6 +2033,11 @@ public final class LauncherInstrumentation {
|
||||
: TestProtocol.REQUEST_DISABLE_BLOCK_TIMEOUT);
|
||||
}
|
||||
|
||||
public boolean isTransientTaskbar() {
|
||||
return getTestInfo(TestProtocol.REQUEST_IS_TRANSIENT_TASKBAR)
|
||||
.getBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD);
|
||||
}
|
||||
|
||||
/** Enables transient taskbar for testing purposes only. */
|
||||
public void enableTransientTaskbar(boolean enable) {
|
||||
getTestInfo(enable
|
||||
|
||||
@@ -18,8 +18,6 @@ package com.android.launcher3.tapl;
|
||||
import static android.view.KeyEvent.KEYCODE_META_RIGHT;
|
||||
|
||||
import static com.android.launcher3.tapl.LauncherInstrumentation.TASKBAR_RES_ID;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
|
||||
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
@@ -45,6 +43,10 @@ public final class Taskbar {
|
||||
|
||||
Taskbar(LauncherInstrumentation launcher) {
|
||||
mLauncher = launcher;
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"expect new taskbar to be visible")) {
|
||||
mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -61,33 +63,32 @@ public final class Taskbar {
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides this taskbar.
|
||||
*
|
||||
* The taskbar must already be visible when calling this method.
|
||||
* Stashes this taskbar.
|
||||
* <p>
|
||||
* The taskbar must already be unstashed and in transient mode when calling this method.
|
||||
*/
|
||||
public void hide() {
|
||||
mLauncher.getTestInfo(REQUEST_ENABLE_MANUAL_TASKBAR_STASHING);
|
||||
public void swipeDownToStash() {
|
||||
mLauncher.assertTrue("Taskbar is not transient, swipe down not supported",
|
||||
mLauncher.isTransientTaskbar());
|
||||
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"want to hide the taskbar");
|
||||
LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
|
||||
mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
|
||||
|
||||
final long downTime = SystemClock.uptimeMillis();
|
||||
Point stashTarget = new Point(
|
||||
mLauncher.getRealDisplaySize().x - 1, mLauncher.getRealDisplaySize().y - 1);
|
||||
Rect taskbarBounds = getVisibleBounds();
|
||||
int startX = taskbarBounds.centerX();
|
||||
int startY = taskbarBounds.centerY();
|
||||
int endX = startX;
|
||||
int endY = mLauncher.getRealDisplaySize().y - 1;
|
||||
|
||||
mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_DOWN, stashTarget,
|
||||
mLauncher.linearGesture(startX, startY, endX, endY, 10, false,
|
||||
LauncherInstrumentation.GestureScope.DONT_EXPECT_PILFER);
|
||||
LauncherInstrumentation.log("hideTaskbar: sent down");
|
||||
|
||||
try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("pressed down")) {
|
||||
LauncherInstrumentation.log("swipeDownToStash: sent linear swipe down gesture");
|
||||
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
|
||||
"expect transient taskbar to be hidden after swipe down")) {
|
||||
mLauncher.waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
|
||||
mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP, stashTarget,
|
||||
LauncherInstrumentation.GestureScope.DONT_EXPECT_PILFER);
|
||||
}
|
||||
} finally {
|
||||
mLauncher.getTestInfo(REQUEST_DISABLE_MANUAL_TASKBAR_STASHING);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +146,7 @@ public final class Taskbar {
|
||||
return By.clazz(TextView.class).text("");
|
||||
}
|
||||
|
||||
private Rect getVisibleBounds() {
|
||||
public Rect getVisibleBounds() {
|
||||
return mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID).getVisibleBounds();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user