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

Commit f04121f0 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Add UserManagerInternal#getProfileIds()

The public API

  int[] UserManager#getProfileIds(int userId, boolean enabledOnly)

looks to be used enough in system_server process.  Let's have it in
UserManagerInternal as well.

Bug: 234882948
Test: atest CtsInputMethodServiceHostTestCases:MultiUserTest
Change-Id: Ie1e6bab0f9a5d2801ad57c89c23f0798276d8aa2
parent fc48388a
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1926,7 +1926,8 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub

    void updateCurrentProfileIds() {
        mSettings.setCurrentProfileIds(
                mUserManager.getProfileIdsWithDisabled(mSettings.getCurrentUserId()));
                mUserManagerInternal.getProfileIds(mSettings.getCurrentUserId(),
                        false /* enabledOnly */));
    }

    @Override
@@ -3669,7 +3670,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
                scheduleSwitchUserTaskLocked(userId, cs.mClient);
                return InputBindResult.USER_SWITCHING;
            }
            for (int profileId : mUserManager.getProfileIdsWithDisabled(nextUserId)) {
            final int[] profileIdsWithDisabled = mUserManagerInternal.getProfileIds(
                    mSettings.getCurrentUserId(), false /* enabledOnly */);
            for (int profileId : profileIdsWithDisabled) {
                if (profileId == userId) {
                    scheduleSwitchUserTaskLocked(userId, cs.mClient);
                    return InputBindResult.USER_SWITCHING;
+12 −0
Original line number Diff line number Diff line
@@ -247,6 +247,18 @@ public abstract class UserManagerInternal {
    public abstract @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying,
            boolean excludePreCreated);

    /**
     * Returns an array of ids for profiles associated with the specified user including the user
     * itself.
     * <p>Note that this includes all profile types (not including Restricted profiles).
     *
     * @param userId      id of the user to return profiles for
     * @param enabledOnly whether return only {@link UserInfo#isEnabled() enabled} profiles
     * @return A non-empty array of ids of profiles associated with the specified user if the user
     *         exists. Otherwise, an empty array.
     */
    public abstract @NonNull int[] getProfileIds(@UserIdInt int userId, boolean enabledOnly);

    /**
     * Checks if the {@code callingUserId} and {@code targetUserId} are same or in same group
     * and that the {@code callingUserId} is not a profile and {@code targetUserId} is enabled.
+7 −0
Original line number Diff line number Diff line
@@ -6699,6 +6699,13 @@ public class UserManagerService extends IUserManager.Stub {
                    excludePreCreated);
        }

        @Override
        public @NonNull int[] getProfileIds(@UserIdInt int userId, boolean enabledOnly) {
            synchronized (mUsersLock) {
                return getProfileIdsLU(userId, null /* userType */, enabledOnly).toArray();
            }
        }

        @Override
        public boolean isUserUnlockingOrUnlocked(@UserIdInt int userId) {
            int state;