From e845b40f35c76dc00a8bb17daec2aed53c2ef963 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Fri, 7 Sep 2018 14:08:49 -0700 Subject: [PATCH] Do not show AddUser if adding user is not allowed. - when multi user is enabled, we should keep the current visibility for AddUser preference, since earlier check has been done to update its visibility according to the add user capability. We should only set the visibility to false if multi user is disabled. Change-Id: I246e9242f255dbd57c5309b2d16c95d202607531 Fixes: 114241868 Test: make RunSettingsRoboTests --- .../android/settings/users/UserSettings.java | 2 +- .../settings/users/UserSettingsTest.java | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 181ab9dabd5..5e961a6d20d 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -964,9 +964,9 @@ public class UserSettings extends SettingsPreferenceFragment mAddUserWhenLockedPreferenceController.getPreferenceKey()); mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen); mMultiUserFooterPreferenceController.updateState(null /* preference */); - mAddUser.setVisible(mUserCaps.mUserSwitcherEnabled); mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled); if (!mUserCaps.mUserSwitcherEnabled) { + mAddUser.setVisible(false); return; } diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java index 41f48c6d01a..413d77154e3 100644 --- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java +++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java @@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -184,4 +185,31 @@ public class UserSettingsTest { assertThat(addUser.isEnabled()).isFalse(); } + + @Test + public void updateUserList_cannotAddUserButCanSwitchUser_shouldNotShowAddUser() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 1); + final RestrictedPreference addUser = mock(RestrictedPreference.class); + + mUserCapabilities.mCanAddUser = false; + 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; + + doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen(); + + mFragment.updateUserList(); + + verify(addUser, never()).setVisible(true); + + } + }