Loading quickstep/tests/src/com/android/quickstep/TaplPrivateSpaceTest.java +35 −11 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static com.android.launcher3.LauncherState.NORMAL; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeTrue; import android.util.Log; Loading @@ -29,6 +28,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest; import com.android.launcher3.tapl.LauncherInstrumentation; import com.android.launcher3.tapl.PrivateSpaceContainer; import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.rule.ScreenRecordRule; import org.junit.After; Loading @@ -43,7 +44,9 @@ import java.util.Objects; public class TaplPrivateSpaceTest extends AbstractQuickStepTest { private int mProfileUserId; private boolean mPrivateProfileSetupSuccessful; private static final String PRIVATE_PROFILE_NAME = "LauncherPrivateProfile"; private static final String INSTALLED_APP_NAME = "Aardwolf"; private static final String TAG = "TaplPrivateSpaceTest"; @Override Loading @@ -52,8 +55,6 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { initialize(this); createAndStartPrivateProfileUser(); assumeTrue("Private Profile Setup not successful, aborting", mPrivateProfileSetupSuccessful); mDevice.pressHome(); waitForLauncherCondition("Launcher didn't start", Objects::nonNull); Loading @@ -72,7 +73,7 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { private void createAndStartPrivateProfileUser() { String createUserOutput = executeShellCommand("pm create-user --profileOf 0 --user-type " + "android.os.usertype.profile.PRIVATE LauncherPrivateProfile"); + "android.os.usertype.profile.PRIVATE " + PRIVATE_PROFILE_NAME); updatePrivateProfileSetupSuccessful("pm create-user", createUserOutput); String[] tokens = createUserOutput.split("\\s+"); mProfileUserId = Integer.parseInt(tokens[tokens.length - 1]); Loading @@ -86,24 +87,42 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { @After public void removePrivateProfile() { String userListOutput = executeShellCommand("pm list users"); if (isPrivateProfilePresent("pm list users", userListOutput)) { String output = executeShellCommand("pm remove-user " + mProfileUserId); updateProfileRemovalSuccessful("pm remove-user", output); waitForPrivateSpaceRemoval(); } } @Test @ScreenRecordRule.ScreenRecord // b/334946529 public void testPrivateSpaceContainerIsPresent() { assumeTrue(mPrivateProfileSetupSuccessful); // Scroll to the bottom of All Apps executeOnLauncher(launcher -> launcher.getAppsView().resetAndScrollToPrivateSpaceHeader()); waitForResumed("Launcher internal state is still Background"); // Verify Unlocked View elements are present. assertNotNull("Private Space Unlocked View not found, or is not correct", mLauncher.getAllApps().getPrivateSpaceUnlockedView()); } @Test @ScreenRecordRule.ScreenRecord // b/334946529 public void testUserInstalledAppIsShownAboveDivider() throws IOException { // Ensure that the App is not installed in main user otherwise, it may not be found in // PS container. TestUtil.uninstallDummyApp(); // Install the app in Private Profile TestUtil.installDummyAppForUser(mProfileUserId); waitForLauncherUIUpdate(); // Scroll to the bottom of All Apps executeOnLauncher(launcher -> launcher.getAppsView().resetAndScrollToPrivateSpaceHeader()); // Verify the Installed App is displayed in correct position. PrivateSpaceContainer psContainer = mLauncher.getAllApps().getPrivateSpaceUnlockedView(); psContainer.verifyInstalledAppIsPresent(INSTALLED_APP_NAME); } private void waitForPrivateSpaceSetup() { waitForLauncherCondition("Private Profile not setup", launcher -> launcher.getAppsView().hasPrivateProfile(), Loading @@ -129,7 +148,7 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { private void updatePrivateProfileSetupSuccessful(String cli, String output) { Log.d(TAG, "updatePrivateProfileSetupSuccessful, cli=" + cli + " " + "output=" + output); mPrivateProfileSetupSuccessful = output.startsWith("Success"); assertTrue(output, output.startsWith("Success")); } private void updateProfileRemovalSuccessful(String cli, String output) { Loading @@ -137,6 +156,11 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { assertTrue(output, output.startsWith("Success")); } private boolean isPrivateProfilePresent(String cli, String output) { Log.d(TAG, "updatePrivateProfilePresent, cli=" + cli + " " + "output=" + output); return output.contains(PRIVATE_PROFILE_NAME); } private String executeShellCommand(String command) { try { return mDevice.executeShellCommand(command); Loading tests/tapl/com/android/launcher3/tapl/PrivateSpaceContainer.java +14 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.launcher3.tapl; import android.graphics.Point; import androidx.test.uiautomator.UiObject2; /** Loading Loading @@ -57,4 +59,16 @@ public class PrivateSpaceContainer { private void verifyDividerIsPresent() { mLauncher.waitForObjectInContainer(mAppListRecycler, DIVIDER_RES_ID); } /** * Verifies that a user installed app is present above the divider. */ public void verifyInstalledAppIsPresent(String appName) { HomeAppIcon appIcon = mLauncher.getAllApps().getAppIcon(appName); final Point iconCenter = appIcon.mObject.getVisibleCenter(); UiObject2 divider = mLauncher.waitForObjectInContainer(mAppListRecycler, DIVIDER_RES_ID); final Point dividerCenter = divider.getVisibleCenter(); mLauncher.assertTrue("Installed App: " + appName + " is not above the divider", iconCenter.y < dividerCenter.y); } } Loading
quickstep/tests/src/com/android/quickstep/TaplPrivateSpaceTest.java +35 −11 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static com.android.launcher3.LauncherState.NORMAL; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeTrue; import android.util.Log; Loading @@ -29,6 +28,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest; import com.android.launcher3.tapl.LauncherInstrumentation; import com.android.launcher3.tapl.PrivateSpaceContainer; import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.rule.ScreenRecordRule; import org.junit.After; Loading @@ -43,7 +44,9 @@ import java.util.Objects; public class TaplPrivateSpaceTest extends AbstractQuickStepTest { private int mProfileUserId; private boolean mPrivateProfileSetupSuccessful; private static final String PRIVATE_PROFILE_NAME = "LauncherPrivateProfile"; private static final String INSTALLED_APP_NAME = "Aardwolf"; private static final String TAG = "TaplPrivateSpaceTest"; @Override Loading @@ -52,8 +55,6 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { initialize(this); createAndStartPrivateProfileUser(); assumeTrue("Private Profile Setup not successful, aborting", mPrivateProfileSetupSuccessful); mDevice.pressHome(); waitForLauncherCondition("Launcher didn't start", Objects::nonNull); Loading @@ -72,7 +73,7 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { private void createAndStartPrivateProfileUser() { String createUserOutput = executeShellCommand("pm create-user --profileOf 0 --user-type " + "android.os.usertype.profile.PRIVATE LauncherPrivateProfile"); + "android.os.usertype.profile.PRIVATE " + PRIVATE_PROFILE_NAME); updatePrivateProfileSetupSuccessful("pm create-user", createUserOutput); String[] tokens = createUserOutput.split("\\s+"); mProfileUserId = Integer.parseInt(tokens[tokens.length - 1]); Loading @@ -86,24 +87,42 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { @After public void removePrivateProfile() { String userListOutput = executeShellCommand("pm list users"); if (isPrivateProfilePresent("pm list users", userListOutput)) { String output = executeShellCommand("pm remove-user " + mProfileUserId); updateProfileRemovalSuccessful("pm remove-user", output); waitForPrivateSpaceRemoval(); } } @Test @ScreenRecordRule.ScreenRecord // b/334946529 public void testPrivateSpaceContainerIsPresent() { assumeTrue(mPrivateProfileSetupSuccessful); // Scroll to the bottom of All Apps executeOnLauncher(launcher -> launcher.getAppsView().resetAndScrollToPrivateSpaceHeader()); waitForResumed("Launcher internal state is still Background"); // Verify Unlocked View elements are present. assertNotNull("Private Space Unlocked View not found, or is not correct", mLauncher.getAllApps().getPrivateSpaceUnlockedView()); } @Test @ScreenRecordRule.ScreenRecord // b/334946529 public void testUserInstalledAppIsShownAboveDivider() throws IOException { // Ensure that the App is not installed in main user otherwise, it may not be found in // PS container. TestUtil.uninstallDummyApp(); // Install the app in Private Profile TestUtil.installDummyAppForUser(mProfileUserId); waitForLauncherUIUpdate(); // Scroll to the bottom of All Apps executeOnLauncher(launcher -> launcher.getAppsView().resetAndScrollToPrivateSpaceHeader()); // Verify the Installed App is displayed in correct position. PrivateSpaceContainer psContainer = mLauncher.getAllApps().getPrivateSpaceUnlockedView(); psContainer.verifyInstalledAppIsPresent(INSTALLED_APP_NAME); } private void waitForPrivateSpaceSetup() { waitForLauncherCondition("Private Profile not setup", launcher -> launcher.getAppsView().hasPrivateProfile(), Loading @@ -129,7 +148,7 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { private void updatePrivateProfileSetupSuccessful(String cli, String output) { Log.d(TAG, "updatePrivateProfileSetupSuccessful, cli=" + cli + " " + "output=" + output); mPrivateProfileSetupSuccessful = output.startsWith("Success"); assertTrue(output, output.startsWith("Success")); } private void updateProfileRemovalSuccessful(String cli, String output) { Loading @@ -137,6 +156,11 @@ public class TaplPrivateSpaceTest extends AbstractQuickStepTest { assertTrue(output, output.startsWith("Success")); } private boolean isPrivateProfilePresent(String cli, String output) { Log.d(TAG, "updatePrivateProfilePresent, cli=" + cli + " " + "output=" + output); return output.contains(PRIVATE_PROFILE_NAME); } private String executeShellCommand(String command) { try { return mDevice.executeShellCommand(command); Loading
tests/tapl/com/android/launcher3/tapl/PrivateSpaceContainer.java +14 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.launcher3.tapl; import android.graphics.Point; import androidx.test.uiautomator.UiObject2; /** Loading Loading @@ -57,4 +59,16 @@ public class PrivateSpaceContainer { private void verifyDividerIsPresent() { mLauncher.waitForObjectInContainer(mAppListRecycler, DIVIDER_RES_ID); } /** * Verifies that a user installed app is present above the divider. */ public void verifyInstalledAppIsPresent(String appName) { HomeAppIcon appIcon = mLauncher.getAllApps().getAppIcon(appName); final Point iconCenter = appIcon.mObject.getVisibleCenter(); UiObject2 divider = mLauncher.waitForObjectInContainer(mAppListRecycler, DIVIDER_RES_ID); final Point dividerCenter = divider.getVisibleCenter(); mLauncher.assertTrue("Installed App: " + appName + " is not above the divider", iconCenter.y < dividerCenter.y); } }