Don't hide "Add user" when disallowed by admin
Bug: 125226170 Test: atest tests/robotests/src/com/android/settings/users/UserSettingsTest.java Test: manual, with TestDPC Change-Id: I347fae04030e04325a5ee5c634f782e554ece263
This commit is contained in:
@@ -118,6 +118,8 @@ public class UserCapabilities {
|
||||
", mDisallowAddUser=" + mDisallowAddUser +
|
||||
", mEnforcedAdmin=" + mEnforcedAdmin +
|
||||
", mDisallowSwitchUser=" + mDisallowSwitchUser +
|
||||
", mDisallowAddUserSetByAdmin=" + mDisallowAddUserSetByAdmin +
|
||||
", mUserSwitcherEnabled=" + mUserSwitcherEnabled +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
@@ -271,18 +271,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
mMePreference.setSummary(R.string.user_admin);
|
||||
}
|
||||
mAddUser = (RestrictedPreference) findPreference(KEY_ADD_USER);
|
||||
mAddUser.useAdminDisabledSummary(false);
|
||||
// Determine if add user/profile button should be visible
|
||||
if (mUserCaps.mCanAddUser && Utils.isDeviceProvisioned(activity)) {
|
||||
mAddUser.setVisible(true);
|
||||
mAddUser.setOnPreferenceClickListener(this);
|
||||
// change label to only mention user, if restricted profiles are not supported
|
||||
if (!mUserCaps.mCanAddRestrictedProfile) {
|
||||
mAddUser.setTitle(R.string.user_add_user_menu);
|
||||
}
|
||||
} else {
|
||||
mAddUser.setVisible(false);
|
||||
}
|
||||
|
||||
activity.registerReceiverAsUser(
|
||||
mUserChangeReceiver, UserHandle.ALL, USER_REMOVED_INTENT_FILTER, null, mHandler);
|
||||
@@ -968,9 +957,10 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
mAddUserWhenLockedPreferenceController.getPreferenceKey());
|
||||
mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
|
||||
mMultiUserFooterPreferenceController.updateState(null /* preference */);
|
||||
mAddUser.setVisible(mUserCaps.mCanAddUser && Utils.isDeviceProvisioned(context)
|
||||
&& mUserCaps.mUserSwitcherEnabled);
|
||||
mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
|
||||
|
||||
updateAddUser(context);
|
||||
|
||||
if (!mUserCaps.mUserSwitcherEnabled) {
|
||||
return;
|
||||
}
|
||||
@@ -980,10 +970,13 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
mUserListCategory.addPreference(userPreference);
|
||||
}
|
||||
|
||||
// Append Add user to the end of the list
|
||||
if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) &&
|
||||
Utils.isDeviceProvisioned(context)) {
|
||||
boolean moreUsers = mUserManager.canAddMoreUsers();
|
||||
}
|
||||
|
||||
private void updateAddUser(Context context) {
|
||||
if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin)
|
||||
&& Utils.isDeviceProvisioned(context) && mUserCaps.mUserSwitcherEnabled) {
|
||||
mAddUser.setVisible(true);
|
||||
final boolean moreUsers = mUserManager.canAddMoreUsers();
|
||||
mAddUser.setEnabled(moreUsers && !mAddingUser && mUserManager.canSwitchUsers());
|
||||
if (!moreUsers) {
|
||||
mAddUser.setSummary(getString(R.string.user_add_max_count, getMaxRealUsers()));
|
||||
@@ -994,6 +987,8 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
mAddUser.setDisabledByAdmin(
|
||||
mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
|
||||
}
|
||||
} else {
|
||||
mAddUser.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -57,7 +57,6 @@ import com.android.settingslib.RestrictedPreference;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.AdditionalMatchers;
|
||||
@@ -101,15 +100,23 @@ public class UserSettingsTest {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mActivity = spy(ActivityController.of(new FragmentActivity()).get());
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
mUserCapabilities = UserCapabilities.create(mContext);
|
||||
|
||||
mFragment = spy(new UserSettings());
|
||||
ReflectionHelpers.setField(mFragment, "mAddUserWhenLockedPreferenceController",
|
||||
mock(AddUserWhenLockedPreferenceController.class));
|
||||
ReflectionHelpers.setField(mFragment, "mMultiUserFooterPreferenceController",
|
||||
mock(MultiUserFooterPreferenceController.class));
|
||||
mUserCapabilities = UserCapabilities.create(mContext);
|
||||
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
|
||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
|
||||
ReflectionHelpers.setField(mFragment, "mAddingUser", false);
|
||||
mFragment.mMePreference = mMePreference;
|
||||
|
||||
when((Object) mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||
doReturn(mActivity).when(mFragment).getActivity();
|
||||
doReturn(mContext).when(mFragment).getContext();
|
||||
doReturn(mMockPreferenceManager).when(mFragment).getPreferenceManager();
|
||||
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
|
||||
mProvisioned = Settings.Global.getInt(mContext.getContentResolver(),
|
||||
Settings.Global.DEVICE_PROVISIONED, 0);
|
||||
@@ -157,10 +164,6 @@ public class UserSettingsTest {
|
||||
mUserCapabilities.mDisallowSwitchUser = false;
|
||||
mUserCapabilities.mUserSwitcherEnabled = true;
|
||||
|
||||
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
|
||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
|
||||
mFragment.mMePreference = mMePreference;
|
||||
mFragment.mUserListCategory = userListCategory;
|
||||
mFragment.mAddUser = addUser;
|
||||
|
||||
@@ -186,11 +189,6 @@ public class UserSettingsTest {
|
||||
mUserCapabilities.mDisallowAddUser = false;
|
||||
mUserCapabilities.mUserSwitcherEnabled = true;
|
||||
|
||||
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
|
||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
|
||||
ReflectionHelpers.setField(mFragment, "mAddingUser", false);
|
||||
mFragment.mMePreference = mMePreference;
|
||||
mFragment.mUserListCategory = userListCategory;
|
||||
mFragment.mAddUser = addUser;
|
||||
|
||||
@@ -206,7 +204,6 @@ public class UserSettingsTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void updateUserList_cannotAddUserButCanSwitchUser_shouldNotShowAddUser() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.DEVICE_PROVISIONED, 1);
|
||||
@@ -216,11 +213,6 @@ public class UserSettingsTest {
|
||||
mUserCapabilities.mDisallowAddUser = true;
|
||||
mUserCapabilities.mUserSwitcherEnabled = true;
|
||||
|
||||
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
|
||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
|
||||
ReflectionHelpers.setField(mFragment, "mAddingUser", false);
|
||||
mFragment.mMePreference = mMePreference;
|
||||
mFragment.mUserListCategory = mock(PreferenceCategory.class);
|
||||
mFragment.mAddUser = addUser;
|
||||
|
||||
@@ -251,9 +243,6 @@ public class UserSettingsTest {
|
||||
doReturn(true).when(mUserManager).canSwitchUsers();
|
||||
mUserCapabilities.mIsAdmin = false;
|
||||
|
||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
|
||||
|
||||
Menu menu = mock(Menu.class);
|
||||
MenuItem menuItem = mock(MenuItem.class);
|
||||
final String title = "title";
|
||||
@@ -279,9 +268,6 @@ public class UserSettingsTest {
|
||||
doReturn(true).when(mUserManager).canSwitchUsers();
|
||||
mUserCapabilities.mIsAdmin = false;
|
||||
|
||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||
ReflectionHelpers.setField(mFragment, "mUserManager", mock(UserManager.class));
|
||||
|
||||
Menu menu = mock(Menu.class);
|
||||
MenuItem menuItem = mock(MenuItem.class);
|
||||
final String title = "title";
|
||||
@@ -301,7 +287,6 @@ public class UserSettingsTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void updateUserList_canAddUserAndSwitchUser_shouldShowAddUser() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.DEVICE_PROVISIONED, 1);
|
||||
@@ -311,13 +296,8 @@ public class UserSettingsTest {
|
||||
mUserCapabilities.mDisallowAddUser = false;
|
||||
mUserCapabilities.mUserSwitcherEnabled = true;
|
||||
|
||||
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
|
||||
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
|
||||
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
|
||||
ReflectionHelpers.setField(mFragment, "mAddingUser", false);
|
||||
mFragment.mMePreference = mMePreference;
|
||||
mFragment.mUserListCategory = mock(PreferenceCategory.class);
|
||||
mFragment.mAddUser = addUser;
|
||||
mFragment.mUserListCategory = mock(PreferenceCategory.class);
|
||||
|
||||
doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
|
||||
doReturn("Test summary").when(mFragment).getString(anyInt(), anyInt());
|
||||
@@ -326,4 +306,26 @@ public class UserSettingsTest {
|
||||
|
||||
verify(addUser).setVisible(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateUserList_addUserDisallowedByAdmin_shouldShowAddUserDisabled() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.DEVICE_PROVISIONED, 1);
|
||||
final RestrictedPreference addUser = mock(RestrictedPreference.class);
|
||||
|
||||
mUserCapabilities.mCanAddUser = false;
|
||||
mUserCapabilities.mDisallowAddUser = true;
|
||||
mUserCapabilities.mDisallowAddUserSetByAdmin = true;
|
||||
mUserCapabilities.mUserSwitcherEnabled = true;
|
||||
|
||||
mFragment.mUserListCategory = mock(PreferenceCategory.class);
|
||||
mFragment.mAddUser = addUser;
|
||||
|
||||
doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
|
||||
|
||||
mFragment.updateUserList();
|
||||
|
||||
verify(addUser).setVisible(true);
|
||||
assertThat(addUser.isEnabled()).isFalse();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user