Enable Name and Avatar change without turning on multi-user
Primary user will be displayed in user list even when the multi-user settings is disabled. This will allow users to change the name and avatar of primary user without enabling the multi-user feature. Test: croot && make RunSettingsRoboTests -j40 ROBOTEST_FILTER="com.android.settings.users.UserSettingsTest" Bug: 246732754 Change-Id: I4eb5aaf97630135960410bea7cdddc52b5848a1e
This commit is contained in:
@@ -1196,11 +1196,19 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
if (context == null) {
|
if (context == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final List<UserInfo> users = mUserManager.getAliveUsers()
|
|
||||||
// Only users that can be switched to should show up here.
|
List<UserInfo> users;
|
||||||
// e.g. Managed profiles appear under Accounts Settings instead
|
if (mUserCaps.mUserSwitcherEnabled) {
|
||||||
.stream().filter(UserInfo::supportsSwitchToByUser)
|
// Only users that can be switched to should show up here.
|
||||||
.collect(Collectors.toList());
|
// e.g. Managed profiles appear under Accounts Settings instead
|
||||||
|
users = mUserManager.getAliveUsers().stream()
|
||||||
|
.filter(UserInfo::supportsSwitchToByUser)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
} else {
|
||||||
|
// Only current user will be displayed in case of multi-user switch is disabled
|
||||||
|
users = List.of(mUserManager.getUserInfo(context.getUserId()));
|
||||||
|
}
|
||||||
|
|
||||||
final ArrayList<Integer> missingIcons = new ArrayList<>();
|
final ArrayList<Integer> missingIcons = new ArrayList<>();
|
||||||
final ArrayList<UserPreference> userPreferences = new ArrayList<>();
|
final ArrayList<UserPreference> userPreferences = new ArrayList<>();
|
||||||
|
|
||||||
@@ -1276,7 +1284,6 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
userPreferences.add(pref);
|
userPreferences.add(pref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Sort list of users by serialNum
|
// Sort list of users by serialNum
|
||||||
Collections.sort(userPreferences, UserPreference.SERIAL_NUMBER_COMPARATOR);
|
Collections.sort(userPreferences, UserPreference.SERIAL_NUMBER_COMPARATOR);
|
||||||
|
|
||||||
@@ -1299,7 +1306,6 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
// Remove everything from mUserListCategory and add new users.
|
// Remove everything from mUserListCategory and add new users.
|
||||||
mUserListCategory.removeAll();
|
mUserListCategory.removeAll();
|
||||||
|
|
||||||
// If multi-user is disabled, just show top info and return.
|
|
||||||
final Preference addUserOnLockScreen = getPreferenceScreen().findPreference(
|
final Preference addUserOnLockScreen = getPreferenceScreen().findPreference(
|
||||||
mAddUserWhenLockedPreferenceController.getPreferenceKey());
|
mAddUserWhenLockedPreferenceController.getPreferenceKey());
|
||||||
mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
|
mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
|
||||||
@@ -1311,16 +1317,11 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
final Preference multiUserTopIntroPreference = getPreferenceScreen().findPreference(
|
final Preference multiUserTopIntroPreference = getPreferenceScreen().findPreference(
|
||||||
mMultiUserTopIntroPreferenceController.getPreferenceKey());
|
mMultiUserTopIntroPreferenceController.getPreferenceKey());
|
||||||
mMultiUserTopIntroPreferenceController.updateState(multiUserTopIntroPreference);
|
mMultiUserTopIntroPreferenceController.updateState(multiUserTopIntroPreference);
|
||||||
mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
|
|
||||||
updateGuestPreferences();
|
updateGuestPreferences();
|
||||||
updateGuestCategory(context, users);
|
updateGuestCategory(context, users);
|
||||||
updateAddUser(context);
|
updateAddUser(context);
|
||||||
updateAddSupervisedUser(context);
|
updateAddSupervisedUser(context);
|
||||||
|
|
||||||
if (!mUserCaps.mUserSwitcherEnabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (UserPreference userPreference : userPreferences) {
|
for (UserPreference userPreference : userPreferences) {
|
||||||
userPreference.setOrder(Preference.DEFAULT_ORDER);
|
userPreference.setOrder(Preference.DEFAULT_ORDER);
|
||||||
mUserListCategory.addPreference(userPreference);
|
mUserListCategory.addPreference(userPreference);
|
||||||
|
@@ -177,6 +177,7 @@ public class UserSettingsTest {
|
|||||||
doReturn(prefs).when(mMockPreferenceManager).getSharedPreferences();
|
doReturn(prefs).when(mMockPreferenceManager).getSharedPreferences();
|
||||||
doReturn(mContext).when(mMockPreferenceManager).getContext();
|
doReturn(mContext).when(mMockPreferenceManager).getContext();
|
||||||
doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
|
doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
|
||||||
|
doReturn(ACTIVE_USER_ID).when(mContext).getUserId();
|
||||||
|
|
||||||
mFragment.mMePreference = mMePreference;
|
mFragment.mMePreference = mMePreference;
|
||||||
mFragment.mAddUser = mAddUserPreference;
|
mFragment.mAddUser = mAddUserPreference;
|
||||||
@@ -443,6 +444,7 @@ public class UserSettingsTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateUserList_userSwitcherDisabled_shouldNotShowAddUser() {
|
public void updateUserList_userSwitcherDisabled_shouldNotShowAddUser() {
|
||||||
|
givenUsers(getAdminUser(true));
|
||||||
mUserCapabilities.mCanAddUser = true;
|
mUserCapabilities.mCanAddUser = true;
|
||||||
mUserCapabilities.mUserSwitcherEnabled = false;
|
mUserCapabilities.mUserSwitcherEnabled = false;
|
||||||
|
|
||||||
@@ -453,6 +455,7 @@ public class UserSettingsTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateUserList_userSwitcherDisabled_shouldNotShowAddGuest() {
|
public void updateUserList_userSwitcherDisabled_shouldNotShowAddGuest() {
|
||||||
|
givenUsers(getAdminUser(true));
|
||||||
mUserCapabilities.mCanAddGuest = true;
|
mUserCapabilities.mCanAddGuest = true;
|
||||||
mUserCapabilities.mUserSwitcherEnabled = false;
|
mUserCapabilities.mUserSwitcherEnabled = false;
|
||||||
|
|
||||||
@@ -511,6 +514,47 @@ public class UserSettingsTest {
|
|||||||
assertThat(userPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
|
assertThat(userPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateUserList_existingSecondaryUser_shouldAddOnlyCurrUser_MultiUserIsDisabled() {
|
||||||
|
givenUsers(getAdminUser(true), getSecondaryUser(false));
|
||||||
|
mUserCapabilities.mUserSwitcherEnabled = false;
|
||||||
|
|
||||||
|
mFragment.updateUserList();
|
||||||
|
|
||||||
|
ArgumentCaptor<UserPreference> captor = ArgumentCaptor.forClass(UserPreference.class);
|
||||||
|
verify(mFragment.mUserListCategory, times(1))
|
||||||
|
.addPreference(captor.capture());
|
||||||
|
|
||||||
|
List<UserPreference> userPrefs = captor.getAllValues();
|
||||||
|
assertThat(userPrefs.size()).isEqualTo(1);
|
||||||
|
assertThat(userPrefs.get(0)).isSameInstanceAs(mMePreference);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateUserList_existingSecondaryUser_shouldAddSecondaryUser_MultiUserIsEnabled() {
|
||||||
|
givenUsers(getAdminUser(true), getSecondaryUser(false));
|
||||||
|
|
||||||
|
mFragment.updateUserList();
|
||||||
|
|
||||||
|
ArgumentCaptor<UserPreference> captor = ArgumentCaptor.forClass(UserPreference.class);
|
||||||
|
verify(mFragment.mUserListCategory, times(2))
|
||||||
|
.addPreference(captor.capture());
|
||||||
|
|
||||||
|
List<UserPreference> userPrefs = captor.getAllValues();
|
||||||
|
UserPreference adminPref = userPrefs.get(0);
|
||||||
|
UserPreference secondaryPref = userPrefs.get(1);
|
||||||
|
|
||||||
|
assertThat(userPrefs.size()).isEqualTo(2);
|
||||||
|
assertThat(adminPref).isSameInstanceAs(mMePreference);
|
||||||
|
assertThat(secondaryPref.getUserId()).isEqualTo(INACTIVE_SECONDARY_USER_ID);
|
||||||
|
assertThat(secondaryPref.getTitle()).isEqualTo(SECONDARY_USER_NAME);
|
||||||
|
assertThat(secondaryPref.getIcon()).isNotNull();
|
||||||
|
assertThat(secondaryPref.getKey()).isEqualTo("id=" + INACTIVE_SECONDARY_USER_ID);
|
||||||
|
assertThat(secondaryPref.isEnabled()).isEqualTo(true);
|
||||||
|
assertThat(secondaryPref.isSelectable()).isEqualTo(true);
|
||||||
|
assertThat(secondaryPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateUserList_existingRestrictedUser_shouldAddRestrictedUserPreference() {
|
public void updateUserList_existingRestrictedUser_shouldAddRestrictedUserPreference() {
|
||||||
givenUsers(getAdminUser(true), getRestrictedUser(false));
|
givenUsers(getAdminUser(true), getRestrictedUser(false));
|
||||||
@@ -800,6 +844,8 @@ public class UserSettingsTest {
|
|||||||
List<UserInfo> users = Arrays.asList(userInfo);
|
List<UserInfo> users = Arrays.asList(userInfo);
|
||||||
doReturn(users).when(mUserManager).getUsers();
|
doReturn(users).when(mUserManager).getUsers();
|
||||||
doReturn(users).when(mUserManager).getAliveUsers();
|
doReturn(users).when(mUserManager).getAliveUsers();
|
||||||
|
users.forEach(user ->
|
||||||
|
doReturn(user).when(mUserManager).getUserInfo(user.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void removeFlag(UserInfo userInfo, int flag) {
|
private static void removeFlag(UserInfo userInfo, int flag) {
|
||||||
|
Reference in New Issue
Block a user