summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java117
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java127
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));
- }
}