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);