diff options
| -rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java | 117 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java | 127 |
2 files changed, 117 insertions, 127 deletions
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java index 60c15fe635ff..0664ab8f5519 100644 --- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java @@ -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; @@ -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; @@ -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(); @@ -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); diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java index d94f10dfa7ea..8fc670472685 100644 --- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java @@ -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; @@ -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; @@ -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(); } @@ -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)); - } } |