Merge "Hide remove user option for main user in multi user settings"
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user