From 73d7773eb20a4d370f7d91badcd0a1db9069ffc3 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Wed, 12 Sep 2018 12:33:46 -0700 Subject: [PATCH] Fix visibility of AddUser when toggling multiuser. - when enabling multi user, also need to update the visibility of the Add user preference, but need to check the add user capability as well. Change-Id: Ia243901c7537bdb39ca3a39aed559b003f803e4d Fixes: 115397726 Test: make RunSettingsRoboTests --- .../android/settings/users/UserSettings.java | 3 ++- .../settings/users/UserSettingsTest.java | 27 +++++++++++++++++++ 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 5e961a6d20d..6e3174d8272 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -964,9 +964,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); 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 413d77154e3..02c279e4b23 100644 --- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java +++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java @@ -212,4 +212,31 @@ public class UserSettingsTest { } + @Test + public void updateUserList_canAddUserAndSwitchUser_shouldShowAddUser() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 1); + final RestrictedPreference addUser = mock(RestrictedPreference.class); + + mUserCapabilities.mCanAddUser = true; + 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; + + doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen(); + doReturn("Test summary").when(mFragment).getString(anyInt(), anyInt()); + + mFragment.updateUserList(); + + verify(addUser).setVisible(true); + + } + }