Loading services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java +117 −0 Original line number Diff line number Diff line Loading @@ -15,12 +15,18 @@ */ package com.android.server.pm; import static android.os.UserManager.DISALLOW_USER_SWITCH; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertThrows; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; Loading @@ -30,6 +36,7 @@ import android.app.ActivityManagerInternal; import android.content.Context; import android.content.pm.PackageManagerInternal; import android.content.pm.UserInfo; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; Loading Loading @@ -88,6 +95,7 @@ public final class UserManagerServiceTest { public final ExtendedMockitoRule mExtendedMockitoRule = new ExtendedMockitoRule.Builder(this) .spyStatic(UserManager.class) .spyStatic(LocalServices.class) .spyStatic(SystemProperties.class) .mockStatic(Settings.Global.class) .build(); Loading Loading @@ -402,6 +410,115 @@ public final class UserManagerServiceTest { .isEqualTo(USER_ID); } @Test public void assertIsUserSwitcherEnabledOnMultiUserSettings() throws Exception { resetUserSwitcherEnabled(); mockUserSwitcherEnabled(false); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockUserSwitcherEnabled(true); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnMaxSupportedUsers() throws Exception { resetUserSwitcherEnabled(); mockMaxSupportedUsers(/* maxUsers= */ 1); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockMaxSupportedUsers(/* maxUsers= */ 8); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabled() throws Exception { resetUserSwitcherEnabled(); mockMaxSupportedUsers(/* maxUsers= */ 8); assertThat(mUms.isUserSwitcherEnabled(true, USER_ID)).isTrue(); mockUserSwitcherEnabled(false); assertThat(mUms.isUserSwitcherEnabled(true, USER_ID)).isFalse(); mockUserSwitcherEnabled(true); assertThat(mUms.isUserSwitcherEnabled(false, USER_ID)).isTrue(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, true, USER_ID); assertThat(mUms.isUserSwitcherEnabled(false, USER_ID)).isFalse(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, false, USER_ID); mockMaxSupportedUsers(1); assertThat(mUms.isUserSwitcherEnabled(true, USER_ID)).isFalse(); } @Test public void assertIsUserSwitcherEnabledOnShowMultiuserUI() throws Exception { resetUserSwitcherEnabled(); mockShowMultiuserUI(/* show= */ false); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockShowMultiuserUI(/* show= */ true); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnUserRestrictions() throws Exception { resetUserSwitcherEnabled(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, true, USER_ID); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, false, USER_ID); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnDemoMode() throws Exception { resetUserSwitcherEnabled(); mockDeviceDemoMode(/* enabled= */ true); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockDeviceDemoMode(/* enabled= */ false); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } private void resetUserSwitcherEnabled() { mUms.putUserInfo(new UserInfo(USER_ID, "Test User", 0)); mUms.setUserRestriction(DISALLOW_USER_SWITCH, false, USER_ID); mockUserSwitcherEnabled(/* enabled= */ true); mockDeviceDemoMode(/* enabled= */ false); mockMaxSupportedUsers(/* maxUsers= */ 8); mockShowMultiuserUI(/* show= */ true); } private void mockUserSwitcherEnabled(boolean enabled) { doReturn(enabled ? 1 : 0).when(() -> Settings.Global.getInt( any(), eq(android.provider.Settings.Global.USER_SWITCHER_ENABLED), anyInt())); } private void mockDeviceDemoMode(boolean enabled) { doReturn(enabled ? 1 : 0).when(() -> Settings.Global.getInt( any(), eq(android.provider.Settings.Global.DEVICE_DEMO_MODE), anyInt())); } private void mockMaxSupportedUsers(int maxUsers) { doReturn(maxUsers).when(() -> SystemProperties.getInt(eq("fw.max_users"), anyInt())); } private void mockShowMultiuserUI(boolean show) { doReturn(show).when(() -> SystemProperties.getBoolean(eq("fw.show_multiuserui"), anyBoolean())); } private void mockCurrentUser(@UserIdInt int userId) { mockGetLocalService(ActivityManagerInternal.class, mActivityManagerInternal); Loading services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java +0 −127 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.pm; import static android.os.UserManager.DISALLOW_USER_SWITCH; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import android.app.ActivityManager; import android.app.PropertyInvalidatedCache; Loading @@ -29,7 +28,6 @@ import android.os.Bundle; import android.os.FileUtils; import android.os.Looper; import android.os.Parcelable; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.platform.test.annotations.Postsubmit; Loading Loading @@ -72,10 +70,6 @@ public class UserManagerServiceTest { LocalServices.removeServiceForTest(UserManagerInternal.class); mUserManagerService = new UserManagerService(InstrumentationRegistry.getContext()); // Put the current user to mUsers. UMS can't find userlist.xml, and fallbackToSingleUserLP. mUserManagerService.putUserInfo( new UserInfo(ActivityManager.getCurrentUser(), "Current User", 0)); restrictionsFile = new File(mContext.getCacheDir(), "restrictions.xml"); restrictionsFile.delete(); } Loading Loading @@ -198,129 +192,8 @@ public class UserManagerServiceTest { .isFalse(); } @Test public void assertIsUserSwitcherEnabledOnMultiUserSettings() throws Exception { int userId = ActivityManager.getCurrentUser(); resetUserSwitcherEnabled(); setUserSwitch(false); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setUserSwitch(true); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnMaxSupportedUsers() throws Exception { int userId = ActivityManager.getCurrentUser(); setMaxSupportedUsers(1); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setMaxSupportedUsers(8); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabled() throws Exception { int userId = ActivityManager.getCurrentUser(); setMaxSupportedUsers(8); assertThat(mUserManagerService.isUserSwitcherEnabled(true, userId)).isTrue(); setUserSwitch(false); assertThat(mUserManagerService.isUserSwitcherEnabled(true, userId)).isFalse(); setUserSwitch(true); assertThat(mUserManagerService.isUserSwitcherEnabled(false, userId)).isTrue(); mUserManagerService.setUserRestriction(UserManager.DISALLOW_ADD_USER, true, userId); assertThat(mUserManagerService.isUserSwitcherEnabled(false, userId)).isFalse(); mUserManagerService.setUserRestriction(UserManager.DISALLOW_ADD_USER, false, userId); setMaxSupportedUsers(1); assertThat(mUserManagerService.isUserSwitcherEnabled(true, userId)).isFalse(); } @Test public void assertIsUserSwitcherEnabledOnShowMultiuserUI() throws Exception { int userId = ActivityManager.getCurrentUser(); setShowMultiuserUI(false); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setShowMultiuserUI(true); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnUserRestrictions() throws Exception { int userId = ActivityManager.getCurrentUser(); resetUserSwitcherEnabled(); mUserManagerService.setUserRestriction(DISALLOW_USER_SWITCH, true, userId); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); mUserManagerService.setUserRestriction(DISALLOW_USER_SWITCH, false, userId); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnDemoMode() throws Exception { int userId = ActivityManager.getCurrentUser(); resetUserSwitcherEnabled(); setDeviceDemoMode(true); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setDeviceDemoMode(false); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } private void resetUserSwitcherEnabled() throws Exception { int userId = ActivityManager.getCurrentUser(); setUserSwitch(true); setShowMultiuserUI(true); setDeviceDemoMode(false); setMaxSupportedUsers(8); mUserManagerService.setUserRestriction(DISALLOW_USER_SWITCH, false, userId); } private void setUserSwitch(boolean enabled) { android.provider.Settings.Global.putInt(mContext.getContentResolver(), android.provider.Settings.Global.USER_SWITCHER_ENABLED, enabled ? 1 : 0); } private void setDeviceDemoMode(boolean enabled) { android.provider.Settings.Global.putInt(mContext.getContentResolver(), android.provider.Settings.Global.DEVICE_DEMO_MODE, enabled ? 1 : 0); } private static String runShellCommand(String cmd) throws Exception { return UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) .executeShellCommand(cmd); } private static String setSystemProperty(String name, String value) throws Exception { final String oldValue = runShellCommand("getprop " + name); assertWithMessage("can not set system property") .that(runShellCommand("setprop " + name + " " + value)).isEqualTo(""); assertWithMessage("failed to set system property") .that(SystemProperties.get(name)).isEqualTo(value); return oldValue; } private static void setMaxSupportedUsers(int max) throws Exception { setSystemProperty("fw.max_users", String.valueOf(max)); } public static void setShowMultiuserUI(boolean show) throws Exception { setSystemProperty("fw.show_multiuserui", String.valueOf(show)); } } Loading
services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java +117 −0 Original line number Diff line number Diff line Loading @@ -15,12 +15,18 @@ */ package com.android.server.pm; import static android.os.UserManager.DISALLOW_USER_SWITCH; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertThrows; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; Loading @@ -30,6 +36,7 @@ import android.app.ActivityManagerInternal; import android.content.Context; import android.content.pm.PackageManagerInternal; import android.content.pm.UserInfo; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; Loading Loading @@ -88,6 +95,7 @@ public final class UserManagerServiceTest { public final ExtendedMockitoRule mExtendedMockitoRule = new ExtendedMockitoRule.Builder(this) .spyStatic(UserManager.class) .spyStatic(LocalServices.class) .spyStatic(SystemProperties.class) .mockStatic(Settings.Global.class) .build(); Loading Loading @@ -402,6 +410,115 @@ public final class UserManagerServiceTest { .isEqualTo(USER_ID); } @Test public void assertIsUserSwitcherEnabledOnMultiUserSettings() throws Exception { resetUserSwitcherEnabled(); mockUserSwitcherEnabled(false); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockUserSwitcherEnabled(true); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnMaxSupportedUsers() throws Exception { resetUserSwitcherEnabled(); mockMaxSupportedUsers(/* maxUsers= */ 1); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockMaxSupportedUsers(/* maxUsers= */ 8); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabled() throws Exception { resetUserSwitcherEnabled(); mockMaxSupportedUsers(/* maxUsers= */ 8); assertThat(mUms.isUserSwitcherEnabled(true, USER_ID)).isTrue(); mockUserSwitcherEnabled(false); assertThat(mUms.isUserSwitcherEnabled(true, USER_ID)).isFalse(); mockUserSwitcherEnabled(true); assertThat(mUms.isUserSwitcherEnabled(false, USER_ID)).isTrue(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, true, USER_ID); assertThat(mUms.isUserSwitcherEnabled(false, USER_ID)).isFalse(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, false, USER_ID); mockMaxSupportedUsers(1); assertThat(mUms.isUserSwitcherEnabled(true, USER_ID)).isFalse(); } @Test public void assertIsUserSwitcherEnabledOnShowMultiuserUI() throws Exception { resetUserSwitcherEnabled(); mockShowMultiuserUI(/* show= */ false); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockShowMultiuserUI(/* show= */ true); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnUserRestrictions() throws Exception { resetUserSwitcherEnabled(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, true, USER_ID); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mUms.setUserRestriction(DISALLOW_USER_SWITCH, false, USER_ID); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnDemoMode() throws Exception { resetUserSwitcherEnabled(); mockDeviceDemoMode(/* enabled= */ true); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isFalse(); mockDeviceDemoMode(/* enabled= */ false); assertThat(mUms.isUserSwitcherEnabled(USER_ID)).isTrue(); } private void resetUserSwitcherEnabled() { mUms.putUserInfo(new UserInfo(USER_ID, "Test User", 0)); mUms.setUserRestriction(DISALLOW_USER_SWITCH, false, USER_ID); mockUserSwitcherEnabled(/* enabled= */ true); mockDeviceDemoMode(/* enabled= */ false); mockMaxSupportedUsers(/* maxUsers= */ 8); mockShowMultiuserUI(/* show= */ true); } private void mockUserSwitcherEnabled(boolean enabled) { doReturn(enabled ? 1 : 0).when(() -> Settings.Global.getInt( any(), eq(android.provider.Settings.Global.USER_SWITCHER_ENABLED), anyInt())); } private void mockDeviceDemoMode(boolean enabled) { doReturn(enabled ? 1 : 0).when(() -> Settings.Global.getInt( any(), eq(android.provider.Settings.Global.DEVICE_DEMO_MODE), anyInt())); } private void mockMaxSupportedUsers(int maxUsers) { doReturn(maxUsers).when(() -> SystemProperties.getInt(eq("fw.max_users"), anyInt())); } private void mockShowMultiuserUI(boolean show) { doReturn(show).when(() -> SystemProperties.getBoolean(eq("fw.show_multiuserui"), anyBoolean())); } private void mockCurrentUser(@UserIdInt int userId) { mockGetLocalService(ActivityManagerInternal.class, mActivityManagerInternal); Loading
services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java +0 −127 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.pm; import static android.os.UserManager.DISALLOW_USER_SWITCH; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import android.app.ActivityManager; import android.app.PropertyInvalidatedCache; Loading @@ -29,7 +28,6 @@ import android.os.Bundle; import android.os.FileUtils; import android.os.Looper; import android.os.Parcelable; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.platform.test.annotations.Postsubmit; Loading Loading @@ -72,10 +70,6 @@ public class UserManagerServiceTest { LocalServices.removeServiceForTest(UserManagerInternal.class); mUserManagerService = new UserManagerService(InstrumentationRegistry.getContext()); // Put the current user to mUsers. UMS can't find userlist.xml, and fallbackToSingleUserLP. mUserManagerService.putUserInfo( new UserInfo(ActivityManager.getCurrentUser(), "Current User", 0)); restrictionsFile = new File(mContext.getCacheDir(), "restrictions.xml"); restrictionsFile.delete(); } Loading Loading @@ -198,129 +192,8 @@ public class UserManagerServiceTest { .isFalse(); } @Test public void assertIsUserSwitcherEnabledOnMultiUserSettings() throws Exception { int userId = ActivityManager.getCurrentUser(); resetUserSwitcherEnabled(); setUserSwitch(false); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setUserSwitch(true); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnMaxSupportedUsers() throws Exception { int userId = ActivityManager.getCurrentUser(); setMaxSupportedUsers(1); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setMaxSupportedUsers(8); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabled() throws Exception { int userId = ActivityManager.getCurrentUser(); setMaxSupportedUsers(8); assertThat(mUserManagerService.isUserSwitcherEnabled(true, userId)).isTrue(); setUserSwitch(false); assertThat(mUserManagerService.isUserSwitcherEnabled(true, userId)).isFalse(); setUserSwitch(true); assertThat(mUserManagerService.isUserSwitcherEnabled(false, userId)).isTrue(); mUserManagerService.setUserRestriction(UserManager.DISALLOW_ADD_USER, true, userId); assertThat(mUserManagerService.isUserSwitcherEnabled(false, userId)).isFalse(); mUserManagerService.setUserRestriction(UserManager.DISALLOW_ADD_USER, false, userId); setMaxSupportedUsers(1); assertThat(mUserManagerService.isUserSwitcherEnabled(true, userId)).isFalse(); } @Test public void assertIsUserSwitcherEnabledOnShowMultiuserUI() throws Exception { int userId = ActivityManager.getCurrentUser(); setShowMultiuserUI(false); assertThat(UserManager.supportsMultipleUsers()).isFalse(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setShowMultiuserUI(true); assertThat(UserManager.supportsMultipleUsers()).isTrue(); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnUserRestrictions() throws Exception { int userId = ActivityManager.getCurrentUser(); resetUserSwitcherEnabled(); mUserManagerService.setUserRestriction(DISALLOW_USER_SWITCH, true, userId); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); mUserManagerService.setUserRestriction(DISALLOW_USER_SWITCH, false, userId); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } @Test public void assertIsUserSwitcherEnabledOnDemoMode() throws Exception { int userId = ActivityManager.getCurrentUser(); resetUserSwitcherEnabled(); setDeviceDemoMode(true); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isFalse(); setDeviceDemoMode(false); assertThat(mUserManagerService.isUserSwitcherEnabled(userId)).isTrue(); } private void resetUserSwitcherEnabled() throws Exception { int userId = ActivityManager.getCurrentUser(); setUserSwitch(true); setShowMultiuserUI(true); setDeviceDemoMode(false); setMaxSupportedUsers(8); mUserManagerService.setUserRestriction(DISALLOW_USER_SWITCH, false, userId); } private void setUserSwitch(boolean enabled) { android.provider.Settings.Global.putInt(mContext.getContentResolver(), android.provider.Settings.Global.USER_SWITCHER_ENABLED, enabled ? 1 : 0); } private void setDeviceDemoMode(boolean enabled) { android.provider.Settings.Global.putInt(mContext.getContentResolver(), android.provider.Settings.Global.DEVICE_DEMO_MODE, enabled ? 1 : 0); } private static String runShellCommand(String cmd) throws Exception { return UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) .executeShellCommand(cmd); } private static String setSystemProperty(String name, String value) throws Exception { final String oldValue = runShellCommand("getprop " + name); assertWithMessage("can not set system property") .that(runShellCommand("setprop " + name + " " + value)).isEqualTo(""); assertWithMessage("failed to set system property") .that(SystemProperties.get(name)).isEqualTo(value); return oldValue; } private static void setMaxSupportedUsers(int max) throws Exception { setSystemProperty("fw.max_users", String.valueOf(max)); } public static void setShowMultiuserUI(boolean show) throws Exception { setSystemProperty("fw.show_multiuserui", String.valueOf(show)); } }