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);
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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,
|
||||||
|
Reference in New Issue
Block a user