Fixing pressHome when a context menu is visible

Bug: 132460627
Change-Id: I78064166fccd3a29bcb3fa6175bd4937ae032a98
diff --git a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
index d4cfe3a..4e4ba73 100644
--- a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
+++ b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
@@ -100,6 +100,14 @@
         executeOnLauncher(
                 launcher -> assertTrue("Launcher internal state didn't switch to Showing Menu",
                         OptionsPopupView.getOptionsPopup(launcher) != null));
+        // Check that pressHome works when the menu is shown.
+        mLauncher.pressHome();
+    }
+
+    @Test
+    public void testPressHomeOnAllAppsContextMenu() throws Exception {
+        mLauncher.getWorkspace().switchToAllApps().getAppIcon("TestActivity7").openMenu();
+        mLauncher.pressHome();
     }
 
     public static void runAllAppsTest(AbstractLauncherUiTest test, AllApps allApps) {
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
index a442e2b..f7befd1 100644
--- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
+++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
@@ -400,13 +400,22 @@
         // accessibility events prior to pressing Home.
         final String action;
         if (getNavigationModel() == NavigationModel.ZERO_BUTTON) {
+            final Point displaySize = getRealDisplaySize();
+
+            if (hasLauncherObject("deep_shortcuts_container")) {
+                linearGesture(
+                        displaySize.x / 2, displaySize.y - 1,
+                        displaySize.x / 2, 0,
+                        ZERO_BUTTON_STEPS_FROM_BACKGROUND_TO_HOME);
+                assertTrue("Context menu is still visible afterswiping up to home",
+                        !hasLauncherObject("deep_shortcuts_container"));
+            }
             if (hasLauncherObject(WORKSPACE_RES_ID)) {
                 log(action = "already at home");
             } else {
                 log(action = "swiping up to home");
                 final int finalState = mDevice.hasObject(By.pkg(getLauncherPackageName()))
                         ? NORMAL_STATE_ORDINAL : BACKGROUND_APP_STATE_ORDINAL;
-                final Point displaySize = getRealDisplaySize();
 
                 swipeToState(
                         displaySize.x / 2, displaySize.y - 1,