Loading tests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ filegroup { srcs: [ "src/com/android/launcher3/allapps/OopTaplOpenCloseAllApps.java", "src/com/android/launcher3/dragging/TaplDragTest.java", "src/com/android/launcher3/dragging/TaplUninstallRemove.java", "src/com/android/launcher3/ui/AbstractLauncherUiTest.java", "src/com/android/launcher3/ui/PortraitLandscapeRunner.java", "src/com/android/launcher3/ui/TaplTestsLauncher3.java", Loading tests/src/com/android/launcher3/dragging/TaplUninstallRemove.java 0 → 100644 +167 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.dragging; import static com.android.launcher3.testing.shared.TestProtocol.ICON_MISSING; import static com.android.launcher3.ui.TaplTestsLauncher3.APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.DUMMY_APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.MAPS_APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.STORE_APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.initialize; import static com.google.common.truth.Truth.assertThat; import android.graphics.Point; import android.platform.test.annotations.PlatinumTest; import android.util.Log; import com.android.launcher3.tapl.HomeAllApps; import com.android.launcher3.tapl.HomeAppIcon; import com.android.launcher3.tapl.Workspace; import com.android.launcher3.ui.AbstractLauncherUiTest; import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape; import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.Wait; import com.android.launcher3.util.rule.ScreenRecordRule; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.util.Map; /** * Test runs in Out of process (Oop) and In process (Ipc) * Test the behaviour of uninstalling and removing apps both from AllApps and from the Workspace. */ public class TaplUninstallRemove extends AbstractLauncherUiTest { @Before public void setUp() throws Exception { super.setUp(); initialize(this); } /** * Deletes app both built-in and user-installed from the Workspace and makes sure it's no longer * in the Workspace. */ @Test @PortraitLandscape public void testDeleteFromWorkspace() { for (String appName : new String[]{"Gmail", "Play Store", APP_NAME}) { final HomeAppIcon homeAppIcon = createShortcutInCenterIfNotExist(appName); Workspace workspace = mLauncher.getWorkspace().deleteAppIcon(homeAppIcon); workspace.verifyWorkspaceAppIconIsGone( appName + " app was found after being deleted from workspace", appName); } } private void verifyAppUninstalledFromAllApps(Workspace workspace, String appName) { final HomeAllApps allApps = workspace.switchToAllApps(); Wait.atMost(appName + " app was found on all apps after being uninstalled", () -> allApps.tryGetAppIcon(appName) == null, DEFAULT_UI_TIMEOUT, mLauncher); } private void installDummyAppAndWaitForUIUpdate() throws IOException { TestUtil.installDummyApp(); waitForLauncherUIUpdate(); } private void waitForLauncherUIUpdate() { // Wait for model thread completion as it may be processing // the install event from the SystemService mLauncher.waitForModelQueueCleared(); // Wait for Launcher UI thread completion, as it may be processing updating the UI in // response to the model update. Not that `waitForLauncherInitialized` is just a proxy // method, we can use any method which touches Launcher UI thread, mLauncher.waitForLauncherInitialized(); } /** * Makes sure you can uninstall an app from the Workspace. * @throws Exception */ @Test @PortraitLandscape // TODO(b/293944634): Remove Screenrecord after flaky debug, and add // @PlatinumTest(focusArea = "launcher") back @ScreenRecordRule.ScreenRecord public void testUninstallFromWorkspace() throws Exception { installDummyAppAndWaitForUIUpdate(); try { verifyAppUninstalledFromAllApps( createShortcutInCenterIfNotExist(DUMMY_APP_NAME).uninstall(), DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } /** * Makes sure you can uninstall an app from AllApps. * @throws Exception */ @Test @PortraitLandscape @PlatinumTest(focusArea = "launcher") public void testUninstallFromAllApps() throws Exception { installDummyAppAndWaitForUIUpdate(); try { Workspace workspace = mLauncher.getWorkspace(); final HomeAllApps allApps = workspace.switchToAllApps(); workspace = allApps.getAppIcon(DUMMY_APP_NAME).uninstall(); verifyAppUninstalledFromAllApps(workspace, DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } /** * Adds three icons to the workspace and removes one of them by dragging to uninstall. */ @Test @PlatinumTest(focusArea = "launcher") public void uninstallWorkspaceIcon() throws IOException { Point[] gridPositions = TestUtil.getCornersAndCenterPositions(mLauncher); StringBuilder sb = new StringBuilder(); for (Point p : gridPositions) { sb.append(p).append(", "); } Log.d(ICON_MISSING, "allGridPositions: " + sb); createShortcutIfNotExist(STORE_APP_NAME, gridPositions[0]); createShortcutIfNotExist(MAPS_APP_NAME, gridPositions[1]); installDummyAppAndWaitForUIUpdate(); try { createShortcutIfNotExist(DUMMY_APP_NAME, gridPositions[2]); Map<String, Point> initialPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(initialPositions.keySet()) .containsAtLeast(DUMMY_APP_NAME, MAPS_APP_NAME, STORE_APP_NAME); mLauncher.getWorkspace().getWorkspaceAppIcon(DUMMY_APP_NAME).uninstall(); mLauncher.getWorkspace().verifyWorkspaceAppIconIsGone( DUMMY_APP_NAME + " was expected to disappear after uninstall.", DUMMY_APP_NAME); Map<String, Point> finalPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(finalPositions).doesNotContainKey(DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } } tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java +0 −108 Original line number Diff line number Diff line Loading @@ -16,12 +16,9 @@ package com.android.launcher3.ui; import static com.android.launcher3.testing.shared.TestProtocol.ICON_MISSING; import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL; import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; Loading @@ -29,9 +26,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeFalse; import android.content.Intent; import android.graphics.Point; import android.platform.test.annotations.PlatinumTest; import android.util.Log; import androidx.test.filters.FlakyTest; import androidx.test.filters.LargeTest; Loading @@ -53,7 +48,6 @@ import com.android.launcher3.tapl.Workspace; import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape; import com.android.launcher3.util.LauncherLayoutBuilder; import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.Wait; import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord; import com.android.launcher3.util.rule.TISBindRule; import com.android.launcher3.util.rule.TestStabilityRule.Stability; Loading @@ -66,9 +60,6 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import java.io.IOException; import java.util.Map; @LargeTest @RunWith(AndroidJUnit4.class) public class TaplTestsLauncher3 extends AbstractLauncherUiTest { Loading Loading @@ -322,90 +313,6 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { waitForState("Launcher internal state didn't switch to Home", () -> LauncherState.NORMAL); } @Test @PortraitLandscape public void testDeleteFromWorkspace() throws Exception { // test delete both built-in apps and user-installed app from workspace for (String appName : new String[]{"Gmail", "Play Store", APP_NAME}) { final HomeAppIcon homeAppIcon = createShortcutInCenterIfNotExist(appName); Workspace workspace = mLauncher.getWorkspace().deleteAppIcon(homeAppIcon); workspace.verifyWorkspaceAppIconIsGone( appName + " app was found after being deleted from workspace", appName); } } private void verifyAppUninstalledFromAllApps(Workspace workspace, String appName) { final HomeAllApps allApps = workspace.switchToAllApps(); Wait.atMost(appName + " app was found on all apps after being uninstalled", () -> allApps.tryGetAppIcon(appName) == null, DEFAULT_UI_TIMEOUT, mLauncher); } @Test @PortraitLandscape // TODO(b/293944634): Remove Screenrecord after flaky debug, and add // @PlatinumTest(focusArea = "launcher") back @ScreenRecord public void testUninstallFromWorkspace() throws Exception { installDummyAppAndWaitForUIUpdate(); try { verifyAppUninstalledFromAllApps( createShortcutInCenterIfNotExist(DUMMY_APP_NAME).uninstall(), DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } @Test @PortraitLandscape @PlatinumTest(focusArea = "launcher") public void testUninstallFromAllApps() throws Exception { installDummyAppAndWaitForUIUpdate(); try { Workspace workspace = mLauncher.getWorkspace(); final HomeAllApps allApps = workspace.switchToAllApps(); workspace = allApps.getAppIcon(DUMMY_APP_NAME).uninstall(); verifyAppUninstalledFromAllApps(workspace, DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } /** * Adds three icons to the workspace and removes one of them by dragging to uninstall. */ @Test @ScreenRecord // b/241821721 @PlatinumTest(focusArea = "launcher") public void uninstallWorkspaceIcon() throws IOException { Point[] gridPositions = TestUtil.getCornersAndCenterPositions(mLauncher); StringBuilder sb = new StringBuilder(); for (Point p : gridPositions) { sb.append(p).append(", "); } Log.d(ICON_MISSING, "allGridPositions: " + sb); createShortcutIfNotExist(STORE_APP_NAME, gridPositions[0]); createShortcutIfNotExist(MAPS_APP_NAME, gridPositions[1]); installDummyAppAndWaitForUIUpdate(); try { createShortcutIfNotExist(DUMMY_APP_NAME, gridPositions[2]); Map<String, Point> initialPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(initialPositions.keySet()) .containsAtLeast(DUMMY_APP_NAME, MAPS_APP_NAME, STORE_APP_NAME); mLauncher.getWorkspace().getWorkspaceAppIcon(DUMMY_APP_NAME).uninstall(); mLauncher.getWorkspace().verifyWorkspaceAppIconIsGone( DUMMY_APP_NAME + " was expected to disappear after uninstall.", DUMMY_APP_NAME); Map<String, Point> finalPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(finalPositions).doesNotContainKey(DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } @Test @PortraitLandscape public void testAddDeleteShortcutOnHotseat() { Loading @@ -418,21 +325,6 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { mLauncher.getWorkspace().getHotseatAppIcon(APP_NAME)); } private void installDummyAppAndWaitForUIUpdate() throws IOException { TestUtil.installDummyApp(); waitForLauncherUIUpdate(); } private void waitForLauncherUIUpdate() { // Wait for model thread completion as it may be processing // the install event from the SystemService mLauncher.waitForModelQueueCleared(); // Wait for Launcher UI thread completion, as it may be processing updating the UI in // response to the model update. Not that `waitForLauncherInitialized` is just a proxy // method, we can use any method which touches Launcher UI thread, mLauncher.waitForLauncherInitialized(); } @Test public void testGetAppIconName() { HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps(); Loading Loading
tests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ filegroup { srcs: [ "src/com/android/launcher3/allapps/OopTaplOpenCloseAllApps.java", "src/com/android/launcher3/dragging/TaplDragTest.java", "src/com/android/launcher3/dragging/TaplUninstallRemove.java", "src/com/android/launcher3/ui/AbstractLauncherUiTest.java", "src/com/android/launcher3/ui/PortraitLandscapeRunner.java", "src/com/android/launcher3/ui/TaplTestsLauncher3.java", Loading
tests/src/com/android/launcher3/dragging/TaplUninstallRemove.java 0 → 100644 +167 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.dragging; import static com.android.launcher3.testing.shared.TestProtocol.ICON_MISSING; import static com.android.launcher3.ui.TaplTestsLauncher3.APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.DUMMY_APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.MAPS_APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.STORE_APP_NAME; import static com.android.launcher3.ui.TaplTestsLauncher3.initialize; import static com.google.common.truth.Truth.assertThat; import android.graphics.Point; import android.platform.test.annotations.PlatinumTest; import android.util.Log; import com.android.launcher3.tapl.HomeAllApps; import com.android.launcher3.tapl.HomeAppIcon; import com.android.launcher3.tapl.Workspace; import com.android.launcher3.ui.AbstractLauncherUiTest; import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape; import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.Wait; import com.android.launcher3.util.rule.ScreenRecordRule; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.util.Map; /** * Test runs in Out of process (Oop) and In process (Ipc) * Test the behaviour of uninstalling and removing apps both from AllApps and from the Workspace. */ public class TaplUninstallRemove extends AbstractLauncherUiTest { @Before public void setUp() throws Exception { super.setUp(); initialize(this); } /** * Deletes app both built-in and user-installed from the Workspace and makes sure it's no longer * in the Workspace. */ @Test @PortraitLandscape public void testDeleteFromWorkspace() { for (String appName : new String[]{"Gmail", "Play Store", APP_NAME}) { final HomeAppIcon homeAppIcon = createShortcutInCenterIfNotExist(appName); Workspace workspace = mLauncher.getWorkspace().deleteAppIcon(homeAppIcon); workspace.verifyWorkspaceAppIconIsGone( appName + " app was found after being deleted from workspace", appName); } } private void verifyAppUninstalledFromAllApps(Workspace workspace, String appName) { final HomeAllApps allApps = workspace.switchToAllApps(); Wait.atMost(appName + " app was found on all apps after being uninstalled", () -> allApps.tryGetAppIcon(appName) == null, DEFAULT_UI_TIMEOUT, mLauncher); } private void installDummyAppAndWaitForUIUpdate() throws IOException { TestUtil.installDummyApp(); waitForLauncherUIUpdate(); } private void waitForLauncherUIUpdate() { // Wait for model thread completion as it may be processing // the install event from the SystemService mLauncher.waitForModelQueueCleared(); // Wait for Launcher UI thread completion, as it may be processing updating the UI in // response to the model update. Not that `waitForLauncherInitialized` is just a proxy // method, we can use any method which touches Launcher UI thread, mLauncher.waitForLauncherInitialized(); } /** * Makes sure you can uninstall an app from the Workspace. * @throws Exception */ @Test @PortraitLandscape // TODO(b/293944634): Remove Screenrecord after flaky debug, and add // @PlatinumTest(focusArea = "launcher") back @ScreenRecordRule.ScreenRecord public void testUninstallFromWorkspace() throws Exception { installDummyAppAndWaitForUIUpdate(); try { verifyAppUninstalledFromAllApps( createShortcutInCenterIfNotExist(DUMMY_APP_NAME).uninstall(), DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } /** * Makes sure you can uninstall an app from AllApps. * @throws Exception */ @Test @PortraitLandscape @PlatinumTest(focusArea = "launcher") public void testUninstallFromAllApps() throws Exception { installDummyAppAndWaitForUIUpdate(); try { Workspace workspace = mLauncher.getWorkspace(); final HomeAllApps allApps = workspace.switchToAllApps(); workspace = allApps.getAppIcon(DUMMY_APP_NAME).uninstall(); verifyAppUninstalledFromAllApps(workspace, DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } /** * Adds three icons to the workspace and removes one of them by dragging to uninstall. */ @Test @PlatinumTest(focusArea = "launcher") public void uninstallWorkspaceIcon() throws IOException { Point[] gridPositions = TestUtil.getCornersAndCenterPositions(mLauncher); StringBuilder sb = new StringBuilder(); for (Point p : gridPositions) { sb.append(p).append(", "); } Log.d(ICON_MISSING, "allGridPositions: " + sb); createShortcutIfNotExist(STORE_APP_NAME, gridPositions[0]); createShortcutIfNotExist(MAPS_APP_NAME, gridPositions[1]); installDummyAppAndWaitForUIUpdate(); try { createShortcutIfNotExist(DUMMY_APP_NAME, gridPositions[2]); Map<String, Point> initialPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(initialPositions.keySet()) .containsAtLeast(DUMMY_APP_NAME, MAPS_APP_NAME, STORE_APP_NAME); mLauncher.getWorkspace().getWorkspaceAppIcon(DUMMY_APP_NAME).uninstall(); mLauncher.getWorkspace().verifyWorkspaceAppIconIsGone( DUMMY_APP_NAME + " was expected to disappear after uninstall.", DUMMY_APP_NAME); Map<String, Point> finalPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(finalPositions).doesNotContainKey(DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } }
tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java +0 −108 Original line number Diff line number Diff line Loading @@ -16,12 +16,9 @@ package com.android.launcher3.ui; import static com.android.launcher3.testing.shared.TestProtocol.ICON_MISSING; import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL; import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; Loading @@ -29,9 +26,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeFalse; import android.content.Intent; import android.graphics.Point; import android.platform.test.annotations.PlatinumTest; import android.util.Log; import androidx.test.filters.FlakyTest; import androidx.test.filters.LargeTest; Loading @@ -53,7 +48,6 @@ import com.android.launcher3.tapl.Workspace; import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape; import com.android.launcher3.util.LauncherLayoutBuilder; import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.Wait; import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord; import com.android.launcher3.util.rule.TISBindRule; import com.android.launcher3.util.rule.TestStabilityRule.Stability; Loading @@ -66,9 +60,6 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import java.io.IOException; import java.util.Map; @LargeTest @RunWith(AndroidJUnit4.class) public class TaplTestsLauncher3 extends AbstractLauncherUiTest { Loading Loading @@ -322,90 +313,6 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { waitForState("Launcher internal state didn't switch to Home", () -> LauncherState.NORMAL); } @Test @PortraitLandscape public void testDeleteFromWorkspace() throws Exception { // test delete both built-in apps and user-installed app from workspace for (String appName : new String[]{"Gmail", "Play Store", APP_NAME}) { final HomeAppIcon homeAppIcon = createShortcutInCenterIfNotExist(appName); Workspace workspace = mLauncher.getWorkspace().deleteAppIcon(homeAppIcon); workspace.verifyWorkspaceAppIconIsGone( appName + " app was found after being deleted from workspace", appName); } } private void verifyAppUninstalledFromAllApps(Workspace workspace, String appName) { final HomeAllApps allApps = workspace.switchToAllApps(); Wait.atMost(appName + " app was found on all apps after being uninstalled", () -> allApps.tryGetAppIcon(appName) == null, DEFAULT_UI_TIMEOUT, mLauncher); } @Test @PortraitLandscape // TODO(b/293944634): Remove Screenrecord after flaky debug, and add // @PlatinumTest(focusArea = "launcher") back @ScreenRecord public void testUninstallFromWorkspace() throws Exception { installDummyAppAndWaitForUIUpdate(); try { verifyAppUninstalledFromAllApps( createShortcutInCenterIfNotExist(DUMMY_APP_NAME).uninstall(), DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } @Test @PortraitLandscape @PlatinumTest(focusArea = "launcher") public void testUninstallFromAllApps() throws Exception { installDummyAppAndWaitForUIUpdate(); try { Workspace workspace = mLauncher.getWorkspace(); final HomeAllApps allApps = workspace.switchToAllApps(); workspace = allApps.getAppIcon(DUMMY_APP_NAME).uninstall(); verifyAppUninstalledFromAllApps(workspace, DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } /** * Adds three icons to the workspace and removes one of them by dragging to uninstall. */ @Test @ScreenRecord // b/241821721 @PlatinumTest(focusArea = "launcher") public void uninstallWorkspaceIcon() throws IOException { Point[] gridPositions = TestUtil.getCornersAndCenterPositions(mLauncher); StringBuilder sb = new StringBuilder(); for (Point p : gridPositions) { sb.append(p).append(", "); } Log.d(ICON_MISSING, "allGridPositions: " + sb); createShortcutIfNotExist(STORE_APP_NAME, gridPositions[0]); createShortcutIfNotExist(MAPS_APP_NAME, gridPositions[1]); installDummyAppAndWaitForUIUpdate(); try { createShortcutIfNotExist(DUMMY_APP_NAME, gridPositions[2]); Map<String, Point> initialPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(initialPositions.keySet()) .containsAtLeast(DUMMY_APP_NAME, MAPS_APP_NAME, STORE_APP_NAME); mLauncher.getWorkspace().getWorkspaceAppIcon(DUMMY_APP_NAME).uninstall(); mLauncher.getWorkspace().verifyWorkspaceAppIconIsGone( DUMMY_APP_NAME + " was expected to disappear after uninstall.", DUMMY_APP_NAME); Map<String, Point> finalPositions = mLauncher.getWorkspace().getWorkspaceIconsPositions(); assertThat(finalPositions).doesNotContainKey(DUMMY_APP_NAME); } finally { TestUtil.uninstallDummyApp(); } } @Test @PortraitLandscape public void testAddDeleteShortcutOnHotseat() { Loading @@ -418,21 +325,6 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { mLauncher.getWorkspace().getHotseatAppIcon(APP_NAME)); } private void installDummyAppAndWaitForUIUpdate() throws IOException { TestUtil.installDummyApp(); waitForLauncherUIUpdate(); } private void waitForLauncherUIUpdate() { // Wait for model thread completion as it may be processing // the install event from the SystemService mLauncher.waitForModelQueueCleared(); // Wait for Launcher UI thread completion, as it may be processing updating the UI in // response to the model update. Not that `waitForLauncherInitialized` is just a proxy // method, we can use any method which touches Launcher UI thread, mLauncher.waitForLauncherInitialized(); } @Test public void testGetAppIconName() { HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps(); Loading