diff --git a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java index c097d416d44..f931fa4f662 100644 --- a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java +++ b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java @@ -38,9 +38,13 @@ public class AddUserWhenLockedPreferenceController extends TogglePreferenceContr 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 5a83f341259..98263e29af1 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -289,10 +289,8 @@ public class UserSettings extends SettingsPreferenceFragment } 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 dd0260b6604..b27b6367879 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 androidx.preference.PreferenceScreen; 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 @@ public class AddUserWhenLockedPreferenceControllerTest { mContext = RuntimeEnvironment.application; mUserManager = ShadowUserManager.getShadow(); mController = new AddUserWhenLockedPreferenceController(mContext, "fake_key"); + mUserManager.setSupportsMultipleUsers(true); + } + + @After + public void tearDown() { + ShadowUserManager.reset(); } @Test @@ -71,6 +78,30 @@ public class AddUserWhenLockedPreferenceControllerTest { verify(preference).setVisible(false); } + @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);