Loading src/com/android/settings/users/UserCapabilities.java +10 −4 Original line number Diff line number Diff line Loading @@ -58,7 +58,9 @@ public class UserCapabilities { DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( Context.DEVICE_POLICY_SERVICE); // No restricted profiles for tablets with a device owner, or phones. if (dpm.isDeviceManaged() || Utils.isVoiceCapable(context)) { if (dpm.isDeviceManaged() || Utils.isVoiceCapable(context) || !userManager.isUserTypeEnabled(UserManager.USER_TYPE_FULL_RESTRICTED)) { caps.mCanAddRestrictedProfile = false; } caps.updateAddUserCapabilities(context); Loading @@ -76,15 +78,19 @@ public class UserCapabilities { mDisallowAddUser = (mEnforcedAdmin != null || hasBaseUserRestriction); mUserSwitcherEnabled = userManager.isUserSwitcherEnabled(); mCanAddUser = true; if (!mIsAdmin || UserManager.getMaxSupportedUsers() < 2 if (!mIsAdmin || UserManager.getMaxSupportedUsers() < 2 || !UserManager.supportsMultipleUsers() || mDisallowAddUser) { || mDisallowAddUser || (!userManager.isUserTypeEnabled(UserManager.USER_TYPE_FULL_SECONDARY) && !mCanAddRestrictedProfile)) { mCanAddUser = false; } final boolean canAddUsersWhenLocked = mIsAdmin || Settings.Global.getInt( context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1; mCanAddGuest = !mIsGuest && !mDisallowAddUser && canAddUsersWhenLocked; mCanAddGuest = !mIsGuest && !mDisallowAddUser && canAddUsersWhenLocked && userManager.isUserTypeEnabled(UserManager.USER_TYPE_FULL_GUEST); mDisallowSwitchUser = userManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH); } Loading src/com/android/settings/users/UserSettings.java +5 −1 Original line number Diff line number Diff line Loading @@ -1080,6 +1080,7 @@ public class UserSettings extends SettingsPreferenceFragment private void updateAddGuest(Context context, boolean isGuestAlreadyCreated) { if (!isGuestAlreadyCreated && mUserCaps.mCanAddGuest && mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_GUEST) && WizardManagerHelper.isDeviceProvisioned(context) && mUserCaps.mUserSwitcherEnabled) { mAddGuest.setVisible(true); Loading @@ -1104,7 +1105,10 @@ public class UserSettings extends SettingsPreferenceFragment && mUserCaps.mUserSwitcherEnabled) { mAddUser.setVisible(true); mAddUser.setSelectable(true); final boolean canAddMoreUsers = mUserManager.canAddMoreUsers(); final boolean canAddMoreUsers = mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_SECONDARY) || (mUserCaps.mCanAddRestrictedProfile && mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_RESTRICTED)); mAddUser.setEnabled(canAddMoreUsers && !mAddingUser && canSwitchUserNow()); if (!canAddMoreUsers) { mAddUser.setSummary( Loading tests/robotests/src/com/android/settings/users/UserSettingsTest.java +9 −5 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.notNull; import static org.mockito.Mockito.doReturn; Loading Loading @@ -258,7 +259,8 @@ public class UserSettingsTest { @Test public void updateUserList_canAddUserAndSwitchUser_shouldShowAddUser() { mUserCapabilities.mCanAddUser = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true) .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_SECONDARY)); doReturn(true).when(mAddUserPreference).isEnabled(); doReturn(SWITCHABILITY_STATUS_OK).when(mUserManager).getUserSwitchability(); Loading @@ -274,7 +276,8 @@ public class UserSettingsTest { @Test public void updateUserList_canAddGuestAndSwitchUser_shouldShowAddGuest() { mUserCapabilities.mCanAddGuest = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true) .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST)); doReturn(SWITCHABILITY_STATUS_OK).when(mUserManager).getUserSwitchability(); mFragment.updateUserList(); Loading @@ -288,7 +291,7 @@ public class UserSettingsTest { @Test public void updateUserList_cannotSwitchUser_shouldDisableAddUser() { mUserCapabilities.mCanAddUser = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true).when(mUserManager).canAddMoreUsers(anyString()); doReturn(true).when(mAddUserPreference).isEnabled(); doReturn(SWITCHABILITY_STATUS_USER_SWITCH_DISALLOWED) .when(mUserManager).getUserSwitchability(); Loading @@ -304,7 +307,7 @@ public class UserSettingsTest { @Test public void updateUserList_canNotAddMoreUsers_shouldDisableAddUserWithSummary() { mUserCapabilities.mCanAddUser = true; doReturn(false).when(mUserManager).canAddMoreUsers(); doReturn(false).when(mUserManager).canAddMoreUsers(anyString()); doReturn(false).when(mAddUserPreference).isEnabled(); doReturn(SWITCHABILITY_STATUS_OK).when(mUserManager).getUserSwitchability(); doReturn(4).when(mFragment).getRealUsersCount(); Loading @@ -320,7 +323,8 @@ public class UserSettingsTest { @Test public void updateUserList_cannotSwitchUser_shouldDisableAddGuest() { mUserCapabilities.mCanAddGuest = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true) .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST)); doReturn(SWITCHABILITY_STATUS_USER_IN_CALL).when(mUserManager).getUserSwitchability(); mFragment.updateUserList(); Loading Loading
src/com/android/settings/users/UserCapabilities.java +10 −4 Original line number Diff line number Diff line Loading @@ -58,7 +58,9 @@ public class UserCapabilities { DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( Context.DEVICE_POLICY_SERVICE); // No restricted profiles for tablets with a device owner, or phones. if (dpm.isDeviceManaged() || Utils.isVoiceCapable(context)) { if (dpm.isDeviceManaged() || Utils.isVoiceCapable(context) || !userManager.isUserTypeEnabled(UserManager.USER_TYPE_FULL_RESTRICTED)) { caps.mCanAddRestrictedProfile = false; } caps.updateAddUserCapabilities(context); Loading @@ -76,15 +78,19 @@ public class UserCapabilities { mDisallowAddUser = (mEnforcedAdmin != null || hasBaseUserRestriction); mUserSwitcherEnabled = userManager.isUserSwitcherEnabled(); mCanAddUser = true; if (!mIsAdmin || UserManager.getMaxSupportedUsers() < 2 if (!mIsAdmin || UserManager.getMaxSupportedUsers() < 2 || !UserManager.supportsMultipleUsers() || mDisallowAddUser) { || mDisallowAddUser || (!userManager.isUserTypeEnabled(UserManager.USER_TYPE_FULL_SECONDARY) && !mCanAddRestrictedProfile)) { mCanAddUser = false; } final boolean canAddUsersWhenLocked = mIsAdmin || Settings.Global.getInt( context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1; mCanAddGuest = !mIsGuest && !mDisallowAddUser && canAddUsersWhenLocked; mCanAddGuest = !mIsGuest && !mDisallowAddUser && canAddUsersWhenLocked && userManager.isUserTypeEnabled(UserManager.USER_TYPE_FULL_GUEST); mDisallowSwitchUser = userManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH); } Loading
src/com/android/settings/users/UserSettings.java +5 −1 Original line number Diff line number Diff line Loading @@ -1080,6 +1080,7 @@ public class UserSettings extends SettingsPreferenceFragment private void updateAddGuest(Context context, boolean isGuestAlreadyCreated) { if (!isGuestAlreadyCreated && mUserCaps.mCanAddGuest && mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_GUEST) && WizardManagerHelper.isDeviceProvisioned(context) && mUserCaps.mUserSwitcherEnabled) { mAddGuest.setVisible(true); Loading @@ -1104,7 +1105,10 @@ public class UserSettings extends SettingsPreferenceFragment && mUserCaps.mUserSwitcherEnabled) { mAddUser.setVisible(true); mAddUser.setSelectable(true); final boolean canAddMoreUsers = mUserManager.canAddMoreUsers(); final boolean canAddMoreUsers = mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_SECONDARY) || (mUserCaps.mCanAddRestrictedProfile && mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_RESTRICTED)); mAddUser.setEnabled(canAddMoreUsers && !mAddingUser && canSwitchUserNow()); if (!canAddMoreUsers) { mAddUser.setSummary( Loading
tests/robotests/src/com/android/settings/users/UserSettingsTest.java +9 −5 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.notNull; import static org.mockito.Mockito.doReturn; Loading Loading @@ -258,7 +259,8 @@ public class UserSettingsTest { @Test public void updateUserList_canAddUserAndSwitchUser_shouldShowAddUser() { mUserCapabilities.mCanAddUser = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true) .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_SECONDARY)); doReturn(true).when(mAddUserPreference).isEnabled(); doReturn(SWITCHABILITY_STATUS_OK).when(mUserManager).getUserSwitchability(); Loading @@ -274,7 +276,8 @@ public class UserSettingsTest { @Test public void updateUserList_canAddGuestAndSwitchUser_shouldShowAddGuest() { mUserCapabilities.mCanAddGuest = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true) .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST)); doReturn(SWITCHABILITY_STATUS_OK).when(mUserManager).getUserSwitchability(); mFragment.updateUserList(); Loading @@ -288,7 +291,7 @@ public class UserSettingsTest { @Test public void updateUserList_cannotSwitchUser_shouldDisableAddUser() { mUserCapabilities.mCanAddUser = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true).when(mUserManager).canAddMoreUsers(anyString()); doReturn(true).when(mAddUserPreference).isEnabled(); doReturn(SWITCHABILITY_STATUS_USER_SWITCH_DISALLOWED) .when(mUserManager).getUserSwitchability(); Loading @@ -304,7 +307,7 @@ public class UserSettingsTest { @Test public void updateUserList_canNotAddMoreUsers_shouldDisableAddUserWithSummary() { mUserCapabilities.mCanAddUser = true; doReturn(false).when(mUserManager).canAddMoreUsers(); doReturn(false).when(mUserManager).canAddMoreUsers(anyString()); doReturn(false).when(mAddUserPreference).isEnabled(); doReturn(SWITCHABILITY_STATUS_OK).when(mUserManager).getUserSwitchability(); doReturn(4).when(mFragment).getRealUsersCount(); Loading @@ -320,7 +323,8 @@ public class UserSettingsTest { @Test public void updateUserList_cannotSwitchUser_shouldDisableAddGuest() { mUserCapabilities.mCanAddGuest = true; doReturn(true).when(mUserManager).canAddMoreUsers(); doReturn(true) .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST)); doReturn(SWITCHABILITY_STATUS_USER_IN_CALL).when(mUserManager).getUserSwitchability(); mFragment.updateUserList(); Loading