Remove "Add users from lock screen" from secondary users
Fixes: 124885010
Test: Robolectric, manual
Change-Id: I1c940fda2fa5f3da39c19bd119ac483024f5a83b
diff --git a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
index c097d41..f931fa4 100644
--- a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
+++ b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
@@ -38,9 +38,13 @@
mUserCaps.updateAddUserCapabilities(mContext);
final RestrictedSwitchPreference restrictedSwitchPreference =
(RestrictedSwitchPreference) preference;
- restrictedSwitchPreference.setDisabledByAdmin(
- mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
- restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
+ if (!isAvailable()) {
+ restrictedSwitchPreference.setVisible(false);
+ } else {
+ restrictedSwitchPreference.setDisabledByAdmin(
+ mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
+ restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
+ }
}
@Override
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 5a83f34..98263e2 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -289,10 +289,8 @@
}
final PreferenceScreen screen = getPreferenceScreen();
- if (mAddUserWhenLockedPreferenceController.isAvailable()) {
- mAddUserWhenLockedPreferenceController.updateState(screen.findPreference(
- mAddUserWhenLockedPreferenceController.getPreferenceKey()));
- }
+ mAddUserWhenLockedPreferenceController.updateState(screen.findPreference(
+ mAddUserWhenLockedPreferenceController.getPreferenceKey()));
if (mShouldUpdateUserList) {
updateUI();
diff --git a/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java
index dd0260b..b27b636 100644
--- a/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java
@@ -30,6 +30,7 @@
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.RestrictedSwitchPreference;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -57,6 +58,12 @@
mContext = RuntimeEnvironment.application;
mUserManager = ShadowUserManager.getShadow();
mController = new AddUserWhenLockedPreferenceController(mContext, "fake_key");
+ mUserManager.setSupportsMultipleUsers(true);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowUserManager.reset();
}
@Test
@@ -72,6 +79,30 @@
}
@Test
+ public void updateState_NotAdmin_shouldNotDisplayPreference() {
+ mUserManager.setIsAdminUser(false);
+ final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+
+ mController.updateState(preference);
+
+ verify(preference).setVisible(false);
+ }
+
+ @Test
+ public void updateState_Admin_shouldDisplayPreference() {
+ mUserManager.setIsAdminUser(true);
+ mUserManager.setUserSwitcherEnabled(true);
+ mUserManager.setSupportsMultipleUsers(true);
+ final AddUserWhenLockedPreferenceController controller =
+ new AddUserWhenLockedPreferenceController(mContext, "fake_key");
+ final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+
+ controller.updateState(preference);
+
+ verify(preference).setVisible(true);
+ }
+
+ @Test
public void updateState_preferenceSetCheckedWhenSettingIsOn() {
final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
Global.putInt(mContext.getContentResolver(), Global.ADD_USERS_WHEN_LOCKED, 1);