Merge "Hide remove user option for main user in multi user settings"

This commit is contained in:
Nikhil Kumar
2022-11-30 10:29:49 +00:00
committed by Android (Google) Code Review
2 changed files with 38 additions and 2 deletions

View File

@@ -317,8 +317,12 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
mRemoveUserPref.setTitle(R.string.user_remove_user); mRemoveUserPref.setTitle(R.string.user_remove_user);
removePreference(KEY_APP_COPYING); removePreference(KEY_APP_COPYING);
} }
// Remove preference KEY_REMOVE_USER if DISALLOW_REMOVE_USER restriction is set
// on the current user or the user selected in user details settings is a main user.
if (RestrictedLockUtilsInternal.hasBaseUserRestriction(context, if (RestrictedLockUtilsInternal.hasBaseUserRestriction(context,
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId())) { UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId())
|| mUserInfo.isMain()) {
removePreference(KEY_REMOVE_USER); removePreference(KEY_REMOVE_USER);
} }
@@ -331,7 +335,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
@VisibleForTesting @VisibleForTesting
boolean canDeleteUser() { boolean canDeleteUser() {
if (!mUserManager.isAdminUser()) { if (!mUserManager.isAdminUser() || mUserInfo.isMain()) {
return false; return false;
} }

View File

@@ -387,6 +387,16 @@ public class UserDetailsSettingsTest {
verify(mFragment).removePreference(KEY_REMOVE_USER); verify(mFragment).removePreference(KEY_REMOVE_USER);
} }
@Test
public void initialize_onMainUser_shouldNotShowRemovePreference() {
setupSelectedMainUser();
mUserManager.setIsAdminUser(true);
mFragment.initialize(mActivity, mArguments);
verify(mFragment).removePreference(KEY_REMOVE_USER);
}
@Test @Test
public void initialize_disallowRemoveUserRestriction_shouldNotShowRemovePreference() { public void initialize_disallowRemoveUserRestriction_shouldNotShowRemovePreference() {
setupSelectedUser(); setupSelectedUser();
@@ -571,10 +581,22 @@ public class UserDetailsSettingsTest {
assertThat(result).isFalse(); assertThat(result).isFalse();
} }
@Test
public void canDeleteUser_onMainUser_shouldReturnFalse() {
setupSelectedMainUser();
mUserManager.setIsAdminUser(true);
mFragment.mUserInfo = mUserInfo;
boolean result = mFragment.canDeleteUser();
assertThat(result).isFalse();
}
@Test @Test
public void canDeleteUser_adminSelectsUser_noRestrictions_shouldReturnTrue() { public void canDeleteUser_adminSelectsUser_noRestrictions_shouldReturnTrue() {
setupSelectedUser(); setupSelectedUser();
mUserManager.setIsAdminUser(true); mUserManager.setIsAdminUser(true);
mFragment.mUserInfo = mUserInfo;
boolean result = mFragment.canDeleteUser(); boolean result = mFragment.canDeleteUser();
@@ -585,6 +607,7 @@ public class UserDetailsSettingsTest {
public void canDeleteUser_adminSelectsUser_hasRemoveRestriction_shouldReturnFalse() { public void canDeleteUser_adminSelectsUser_hasRemoveRestriction_shouldReturnFalse() {
setupSelectedUser(); setupSelectedUser();
mUserManager.setIsAdminUser(true); mUserManager.setIsAdminUser(true);
mFragment.mUserInfo = mUserInfo;
ComponentName componentName = new ComponentName("test", "test"); ComponentName componentName = new ComponentName("test", "test");
ShadowDevicePolicyManager.getShadow().setDeviceOwnerComponentOnAnyUser(componentName); ShadowDevicePolicyManager.getShadow().setDeviceOwnerComponentOnAnyUser(componentName);
ShadowDevicePolicyManager.getShadow().setDeviceOwnerUserId(UserHandle.myUserId()); ShadowDevicePolicyManager.getShadow().setDeviceOwnerUserId(UserHandle.myUserId());
@@ -611,6 +634,15 @@ public class UserDetailsSettingsTest {
mUserManager.addProfile(mUserInfo); mUserManager.addProfile(mUserInfo);
} }
private void setupSelectedMainUser() {
mArguments.putInt("user_id", 11);
mUserInfo = new UserInfo(11, "Jerry", null,
UserInfo.FLAG_FULL | UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_MAIN,
UserManager.USER_TYPE_FULL_SECONDARY);
mUserManager.addProfile(mUserInfo);
}
private void setupSelectedGuest() { private void setupSelectedGuest() {
mArguments.putInt("user_id", 23); mArguments.putInt("user_id", 23);
mUserInfo = new UserInfo(23, "Guest", null, mUserInfo = new UserInfo(23, "Guest", null,