Merge "Fix testQuickSwitchFromApp" into ub-launcher3-master
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
index d270d76..8cd3bb6 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
@@ -248,33 +248,32 @@
     @Test
     @NavigationModeSwitch
     @PortraitLandscape
-    @Ignore("Temporarily disabled b/140252765")
     public void testQuickSwitchFromApp() throws Exception {
-        startAppFast(getAppPackageName());
         startTestActivity(2);
-        String calculatorPackage = resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
-        startAppFast(calculatorPackage);
+        startTestActivity(3);
+        startTestActivity(4);
 
         Background background = getAndAssertBackground();
         background.quickSwitchToPreviousApp();
         assertTrue("The first app we should have quick switched to is not running",
-                isTestActivityRunning("TestActivity2"));
+                isTestActivityRunning(3));
 
         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));
+                    isTestActivityRunning(4));
         } else {
             assertTrue("The second app we should have quick switched to is not running",
-                    isTestActivityRunning("Test Pin Item"));
+                    isTestActivityRunning(2));
         }
         getAndAssertBackground();
     }
 
-    private boolean isTestActivityRunning(String activityLabel) {
-        return mDevice.wait(Until.hasObject(By.pkg(getAppPackageName()).text(activityLabel)),
+    private boolean isTestActivityRunning(int activityNumber) {
+        return mDevice.wait(Until.hasObject(By.pkg(getAppPackageName())
+                        .text("TestActivity" + activityNumber)),
                 DEFAULT_UI_TIMEOUT);
     }
 
@@ -285,7 +284,7 @@
         startTestActivity(2);
         mLauncher.pressHome().quickSwitchToPreviousApp();
         assertTrue("The most recent task is not running after quick switching from home",
-                isTestActivityRunning("TestActivity2"));
+                isTestActivityRunning(2));
         getAndAssertBackground();
     }
 }
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index 62989a3..76b5d28 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -26,6 +26,8 @@
 
 import static java.lang.System.exit;
 
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -373,7 +375,8 @@
         startIntent(
                 getInstrumentation().getContext().getPackageManager().getLaunchIntentForPackage(
                         packageName),
-                By.pkg(packageName).depth(0));
+                By.pkg(packageName).depth(0),
+                true /* newTask */);
     }
 
     public static void startTestActivity(int activityNumber) {
@@ -382,12 +385,17 @@
                 getLaunchIntentForPackage(packageName);
         intent.setComponent(new ComponentName(packageName,
                 "com.android.launcher3.tests.Activity" + activityNumber));
-        startIntent(intent, By.pkg(packageName).text("TestActivity" + activityNumber));
+        startIntent(intent, By.pkg(packageName).text("TestActivity" + activityNumber),
+                false /* newTask */);
     }
 
-    private static void startIntent(Intent intent, BySelector selector) {
+    private static void startIntent(Intent intent, BySelector selector, boolean newTask) {
         intent.addCategory(Intent.CATEGORY_LAUNCHER);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+        if (newTask) {
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+        } else {
+            intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+        }
         getInstrumentation().getTargetContext().startActivity(intent);
         assertTrue("App didn't start: " + selector,
                 UiDevice.getInstance(getInstrumentation())