diff options
3 files changed, 101 insertions, 4 deletions
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java index 885fdbf42..41f4a8217 100644 --- a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java +++ b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java @@ -17,6 +17,7 @@ package com.android.quickstep; import static com.android.launcher3.ui.TaplTestsLauncher3.getAppPackageName; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -34,6 +35,7 @@ import com.android.launcher3.LauncherState; import com.android.launcher3.tapl.AllApps; import com.android.launcher3.tapl.AllAppsFromOverview; import com.android.launcher3.tapl.Background; +import com.android.launcher3.tapl.LauncherInstrumentation.NavigationModel; import com.android.launcher3.tapl.Overview; import com.android.launcher3.tapl.OverviewTask; import com.android.launcher3.tapl.TestHelpers; @@ -210,16 +212,21 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest { @PortraitLandscape public void testBackground() throws Exception { startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR)); + final Background background = getAndAssertBackground(); + + assertNotNull("Background.switchToOverview() returned null", background.switchToOverview()); + assertTrue("Launcher internal state didn't switch to Overview", + isInState(LauncherState.OVERVIEW)); + } + + private Background getAndAssertBackground() { final Background background = mLauncher.getBackground(); assertNotNull("Launcher.getBackground() returned null", background); executeOnLauncher(launcher -> assertTrue( "Launcher activity is the top activity; expecting another activity to be the top " + "one", isInBackground(launcher))); - - assertNotNull("Background.switchToOverview() returned null", background.switchToOverview()); - assertTrue("Launcher internal state didn't switch to Overview", - isInState(LauncherState.OVERVIEW)); + return background; } @Test @@ -237,4 +244,47 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest { assertTrue("Launcher internal state is not Home", isInState(LauncherState.NORMAL)); assertNotNull("getHome returned null", mLauncher.getWorkspace()); } + + @Test + @NavigationModeSwitch + @PortraitLandscape + public void testQuickSwitchFromApp() throws Exception { + startAppFast(getAppPackageName()); + startTestActivity(2); + String calculatorPackage = resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR); + startAppFast(calculatorPackage); + + Background background = getAndAssertBackground(); + background.quickSwitchToPreviousApp(); + assertTrue("The first app we should have quick switched to is not running", + isTestActivityRunning("TestActivity2")); + + background = getAndAssertBackground(); + background.quickSwitchToPreviousApp(); + if (mLauncher.getNavigationModel() == NavigationModel.THREE_BUTTON) { + // 3-button mode toggles between 2 apps, rather than going back further. + assertTrue("Second quick switch should have returned to the first app.", + mDevice.wait(Until.hasObject(By.pkg(calculatorPackage)), DEFAULT_UI_TIMEOUT)); + } else { + assertTrue("The second app we should have quick switched to is not running", + isTestActivityRunning("Test Pin Item")); + } + getAndAssertBackground(); + } + + private boolean isTestActivityRunning(String activityLabel) { + return mDevice.wait(Until.hasObject(By.pkg(getAppPackageName()).text(activityLabel)), + DEFAULT_UI_TIMEOUT); + } + + @Test + @NavigationModeSwitch + @PortraitLandscape + public void testQuickSwitchFromHome() throws Exception { + startTestActivity(2); + mLauncher.pressHome().quickSwitchToPreviousApp(); + assertTrue("The most recent task is not running after quick switching from home", + isTestActivityRunning("TestActivity2")); + getAndAssertBackground(); + } } diff --git a/tests/tapl/com/android/launcher3/tapl/Background.java b/tests/tapl/com/android/launcher3/tapl/Background.java index bcce8ef57..0dd3e775c 100644 --- a/tests/tapl/com/android/launcher3/tapl/Background.java +++ b/tests/tapl/com/android/launcher3/tapl/Background.java @@ -23,6 +23,7 @@ import android.os.SystemClock; import android.view.MotionEvent; import androidx.annotation.NonNull; +import androidx.test.uiautomator.UiObject2; import com.android.launcher3.testing.TestProtocol; @@ -114,6 +115,46 @@ public class Background extends LauncherInstrumentation.VisibleContainer { } } + /** + * Swipes right or double presses the square button to switch to the previous app. + */ + public Background quickSwitchToPreviousApp() { + try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer( + "want to quick switch to the previous app")) { + verifyActiveContainer(); + quickSwitchToPreviousApp(getExpectedStateForQuickSwitch()); + return new Background(mLauncher); + } + } + + protected int getExpectedStateForQuickSwitch() { + return BACKGROUND_APP_STATE_ORDINAL; + } + + protected void quickSwitchToPreviousApp(int expectedState) { + switch (mLauncher.getNavigationModel()) { + case ZERO_BUTTON: + // Fall through, zero button and two button modes behave the same. + case TWO_BUTTON: { + // Swipe from the bottom left to the bottom right of the screen. + final int startX = 0; + final int startY = getSwipeStartY(); + final int endX = mLauncher.getDevice().getDisplayWidth(); + final int endY = startY; + mLauncher.swipeToState(startX, startY, endX, endY, 20, expectedState); + break; + } + + case THREE_BUTTON: + // Double press the recents button. + UiObject2 recentsButton = mLauncher.waitForSystemUiObject("recent_apps"); + recentsButton.click(); + mLauncher.getOverview(); + recentsButton.click(); + break; + } + } + protected String getSwipeHeightRequestName() { return TestProtocol.REQUEST_BACKGROUND_TO_OVERVIEW_SWIPE_HEIGHT; } diff --git a/tests/tapl/com/android/launcher3/tapl/Home.java b/tests/tapl/com/android/launcher3/tapl/Home.java index cfc43749d..e0fe933ee 100644 --- a/tests/tapl/com/android/launcher3/tapl/Home.java +++ b/tests/tapl/com/android/launcher3/tapl/Home.java @@ -17,6 +17,7 @@ package com.android.launcher3.tapl; import static com.android.launcher3.testing.TestProtocol.OVERVIEW_STATE_ORDINAL; +import static com.android.launcher3.testing.TestProtocol.QUICK_SWITCH_STATE_ORDINAL; import androidx.annotation.NonNull; @@ -58,4 +59,9 @@ public abstract class Home extends Background { } } } + + @Override + protected int getExpectedStateForQuickSwitch() { + return QUICK_SWITCH_STATE_ORDINAL; + } }
\ No newline at end of file |