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);
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,
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId())) {
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId())
|| mUserInfo.isMain()) {
removePreference(KEY_REMOVE_USER);
}
@@ -331,7 +335,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
@VisibleForTesting
boolean canDeleteUser() {
if (!mUserManager.isAdminUser()) {
if (!mUserManager.isAdminUser() || mUserInfo.isMain()) {
return false;
}

View File

@@ -387,6 +387,16 @@ public class UserDetailsSettingsTest {
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
public void initialize_disallowRemoveUserRestriction_shouldNotShowRemovePreference() {
setupSelectedUser();
@@ -571,10 +581,22 @@ public class UserDetailsSettingsTest {
assertThat(result).isFalse();
}
@Test
public void canDeleteUser_onMainUser_shouldReturnFalse() {
setupSelectedMainUser();
mUserManager.setIsAdminUser(true);
mFragment.mUserInfo = mUserInfo;
boolean result = mFragment.canDeleteUser();
assertThat(result).isFalse();
}
@Test
public void canDeleteUser_adminSelectsUser_noRestrictions_shouldReturnTrue() {
setupSelectedUser();
mUserManager.setIsAdminUser(true);
mFragment.mUserInfo = mUserInfo;
boolean result = mFragment.canDeleteUser();
@@ -585,6 +607,7 @@ public class UserDetailsSettingsTest {
public void canDeleteUser_adminSelectsUser_hasRemoveRestriction_shouldReturnFalse() {
setupSelectedUser();
mUserManager.setIsAdminUser(true);
mFragment.mUserInfo = mUserInfo;
ComponentName componentName = new ComponentName("test", "test");
ShadowDevicePolicyManager.getShadow().setDeviceOwnerComponentOnAnyUser(componentName);
ShadowDevicePolicyManager.getShadow().setDeviceOwnerUserId(UserHandle.myUserId());
@@ -611,6 +634,15 @@ public class UserDetailsSettingsTest {
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() {
mArguments.putInt("user_id", 23);
mUserInfo = new UserInfo(23, "Guest", null,