Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c5fb86e authored by Nikhil Kumar's avatar Nikhil Kumar Committed by Android (Google) Code Review
Browse files

Merge "Enable Name and Avatar change without turning on multi-user"

parents 7144d95e 0661a764
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -1196,11 +1196,19 @@ public class UserSettings extends SettingsPreferenceFragment
        if (context == null) {
            return;
        }
        final List<UserInfo> users = mUserManager.getAliveUsers()

        List<UserInfo> users;
        if (mUserCaps.mUserSwitcherEnabled) {
            // Only users that can be switched to should show up here.
            // e.g. Managed profiles appear under Accounts Settings instead
                .stream().filter(UserInfo::supportsSwitchToByUser)
            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<UserPreference> userPreferences = new ArrayList<>();

@@ -1276,7 +1284,6 @@ public class UserSettings extends SettingsPreferenceFragment
            userPreferences.add(pref);
        }


        // Sort list of users by serialNum
        Collections.sort(userPreferences, UserPreference.SERIAL_NUMBER_COMPARATOR);

@@ -1299,7 +1306,6 @@ public class UserSettings extends SettingsPreferenceFragment
        // Remove everything from mUserListCategory and add new users.
        mUserListCategory.removeAll();

        // If multi-user is disabled, just show top info and return.
        final Preference addUserOnLockScreen = getPreferenceScreen().findPreference(
                mAddUserWhenLockedPreferenceController.getPreferenceKey());
        mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
@@ -1311,16 +1317,11 @@ public class UserSettings extends SettingsPreferenceFragment
        final Preference multiUserTopIntroPreference = getPreferenceScreen().findPreference(
                mMultiUserTopIntroPreferenceController.getPreferenceKey());
        mMultiUserTopIntroPreferenceController.updateState(multiUserTopIntroPreference);
        mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
        updateGuestPreferences();
        updateGuestCategory(context, users);
        updateAddUser(context);
        updateAddSupervisedUser(context);

        if (!mUserCaps.mUserSwitcherEnabled) {
            return;
        }

        for (UserPreference userPreference : userPreferences) {
            userPreference.setOrder(Preference.DEFAULT_ORDER);
            mUserListCategory.addPreference(userPreference);
+46 −0
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@ public class UserSettingsTest {
        doReturn(prefs).when(mMockPreferenceManager).getSharedPreferences();
        doReturn(mContext).when(mMockPreferenceManager).getContext();
        doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
        doReturn(ACTIVE_USER_ID).when(mContext).getUserId();

        mFragment.mMePreference = mMePreference;
        mFragment.mAddUser = mAddUserPreference;
@@ -443,6 +444,7 @@ public class UserSettingsTest {

    @Test
    public void updateUserList_userSwitcherDisabled_shouldNotShowAddUser() {
        givenUsers(getAdminUser(true));
        mUserCapabilities.mCanAddUser = true;
        mUserCapabilities.mUserSwitcherEnabled = false;

@@ -453,6 +455,7 @@ public class UserSettingsTest {

    @Test
    public void updateUserList_userSwitcherDisabled_shouldNotShowAddGuest() {
        givenUsers(getAdminUser(true));
        mUserCapabilities.mCanAddGuest = true;
        mUserCapabilities.mUserSwitcherEnabled = false;

@@ -511,6 +514,47 @@ public class UserSettingsTest {
        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
    public void updateUserList_existingRestrictedUser_shouldAddRestrictedUserPreference() {
        givenUsers(getAdminUser(true), getRestrictedUser(false));
@@ -800,6 +844,8 @@ public class UserSettingsTest {
        List<UserInfo> users = Arrays.asList(userInfo);
        doReturn(users).when(mUserManager).getUsers();
        doReturn(users).when(mUserManager).getAliveUsers();
        users.forEach(user ->
                doReturn(user).when(mUserManager).getUserInfo(user.id));
    }

    private static void removeFlag(UserInfo userInfo, int flag) {