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

Commit 036bdcac authored by Fyodor Kupolov's avatar Fyodor Kupolov Committed by android-build-merger
Browse files

Merge "Added getProfileIds method returning array of userIds" into nyc-dev

am: 4c74334c

* commit '4c74334c':
  Added getProfileIds method returning array of userIds

Change-Id: Iea98c0fa6062e759da3adfe35c324a018aef2223
parents 289eedb6 4c74334c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ interface IUserManager {
    UserInfo getPrimaryUser();
    List<UserInfo> getUsers(boolean excludeDying);
    List<UserInfo> getProfiles(int userHandle, boolean enabledOnly);
    int[] getProfileIds(int userId, boolean enabledOnly);
    boolean canAddMoreManagedProfiles(int userHandle, boolean allowedToRemoveOne);
    UserInfo getProfileParent(int userHandle);
    boolean isSameProfileGroup(int userHandle, int otherUserHandle);
+36 −8
Original line number Diff line number Diff line
@@ -1590,18 +1590,46 @@ public class UserManager {
     * @return A non-empty list of UserHandles associated with the calling user.
     */
    public List<UserHandle> getUserProfiles() {
        ArrayList<UserHandle> profiles = new ArrayList<UserHandle>();
        List<UserInfo> users;
        int[] userIds = getProfileIds(UserHandle.myUserId(), true /* enabledOnly */);
        List<UserHandle> result = new ArrayList<>(userIds.length);
        for (int userId : userIds) {
            result.add(UserHandle.of(userId));
        }
        return result;
    }

    /**
     * Returns a list of ids for profiles associated with the specified user including the user
     * itself.
     *
     * @param userId      id of the user to return profiles for
     * @param enabledOnly whether return only {@link UserInfo#isEnabled() enabled} profiles
     * @return A non-empty list of ids of profiles associated with the specified user.
     *
     * @hide
     */
    public int[] getProfileIds(@UserIdInt int userId, boolean enabledOnly) {
        try {
            users = mService.getProfiles(UserHandle.myUserId(), true /* enabledOnly */);
            return mService.getProfileIds(userId, enabledOnly);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
        for (UserInfo info : users) {
            UserHandle userHandle = new UserHandle(info.id);
            profiles.add(userHandle);
    }
        return profiles;

    /**
     * @see #getProfileIds(int, boolean)
     * @hide
     */
    public int[] getProfileIdsWithDisabled(@UserIdInt int userId) {
        return getProfileIds(userId, false /* enabledOnly */);
    }

    /**
     * @see #getProfileIds(int, boolean)
     * @hide
     */
    public int[] getEnabledProfileIds(@UserIdInt int userId) {
        return getProfileIds(userId, true /* enabledOnly */);
    }

    /**
+3 −6
Original line number Diff line number Diff line
@@ -1831,14 +1831,11 @@ public class SettingsProvider extends ContentProvider {
        private void maybeNotifyProfiles(int userId, Uri uri, String name,
                Set<String> keysCloned) {
            if (keysCloned.contains(name)) {
                List<UserInfo> profiles = mUserManager.getProfiles(userId);
                int size = profiles.size();
                for (int i = 0; i < size; i++) {
                    UserInfo profile = profiles.get(i);
                for (int profileId : mUserManager.getProfileIdsWithDisabled(userId)) {
                    // the notification for userId has already been sent.
                    if (profile.id != userId) {
                    if (profileId != userId) {
                        mHandler.obtainMessage(MyHandler.MSG_NOTIFY_URI_CHANGED,
                                profile.id, 0, uri).sendToTarget();
                                profileId, 0, uri).sendToTarget();
                    }
                }
            }
+9 −12
Original line number Diff line number Diff line
@@ -847,17 +847,16 @@ public class KeyguardViewMediator extends SystemUI {

    private void doKeyguardLaterForChildProfilesLocked() {
        UserManager um = UserManager.get(mContext);
        List<UserInfo> profiles = um.getEnabledProfiles(UserHandle.myUserId());
        for (UserInfo info : profiles) {
            if (mLockPatternUtils.isSeparateProfileChallengeEnabled(info.id)) {
                long userTimeout = getLockTimeout(info.id);
        for (int profileId : um.getEnabledProfileIds(UserHandle.myUserId())) {
            if (mLockPatternUtils.isSeparateProfileChallengeEnabled(profileId)) {
                long userTimeout = getLockTimeout(profileId);
                if (userTimeout == 0) {
                    doKeyguardForChildProfilesLocked();
                } else {
                    long userWhen = SystemClock.elapsedRealtime() + userTimeout;
                    Intent lockIntent = new Intent(DELAYED_LOCK_PROFILE_ACTION);
                    lockIntent.putExtra("seq", mDelayedProfileShowingSequence);
                    lockIntent.putExtra(Intent.EXTRA_USER_ID, info.id);
                    lockIntent.putExtra(Intent.EXTRA_USER_ID, profileId);
                    PendingIntent lockSender = PendingIntent.getBroadcast(
                            mContext, 0, lockIntent, PendingIntent.FLAG_CANCEL_CURRENT);
                    mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP,
@@ -869,10 +868,9 @@ public class KeyguardViewMediator extends SystemUI {

    private void doKeyguardForChildProfilesLocked() {
        UserManager um = UserManager.get(mContext);
        List<UserInfo> profiles = um.getEnabledProfiles(UserHandle.myUserId());
        for (UserInfo info : profiles) {
            if (mLockPatternUtils.isSeparateProfileChallengeEnabled(info.id)) {
                lockProfile(info.id);
        for (int profileId : um.getEnabledProfileIds(UserHandle.myUserId())) {
            if (mLockPatternUtils.isSeparateProfileChallengeEnabled(profileId)) {
                lockProfile(profileId);
            }
        }
    }
@@ -1482,9 +1480,8 @@ public class KeyguardViewMediator extends SystemUI {
                final UserHandle currentUser = new UserHandle(KeyguardUpdateMonitor.getCurrentUser());
                final UserManager um = (UserManager) mContext.getSystemService(
                        Context.USER_SERVICE);
                List <UserInfo> userHandles = um.getProfiles(currentUser.getIdentifier());
                for (UserInfo ui : userHandles) {
                    mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, ui.getUserHandle());
                for (int profileId : um.getProfileIdsWithDisabled(currentUser.getIdentifier())) {
                    mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, UserHandle.of(profileId));
                }
            } else {
                mBootSendUserPresent = true;
+8 −8
Original line number Diff line number Diff line
@@ -114,8 +114,8 @@ public class SecurityControllerImpl implements SecurityController {

    @Override
    public String getProfileOwnerName() {
        for (UserInfo profile : mUserManager.getProfiles(mCurrentUserId)) {
            String name = mDevicePolicyManager.getProfileOwnerNameAsUser(profile.id);
        for (int profileId : mUserManager.getProfileIdsWithDisabled(mCurrentUserId)) {
            String name = mDevicePolicyManager.getProfileOwnerNameAsUser(profileId);
            if (name != null) {
                return name;
            }
@@ -135,13 +135,13 @@ public class SecurityControllerImpl implements SecurityController {

    @Override
    public String getProfileVpnName() {
        for (UserInfo profile : mUserManager.getProfiles(mVpnUserId)) {
            if (profile.id == mVpnUserId) {
        for (int profileId : mUserManager.getProfileIdsWithDisabled(mVpnUserId)) {
            if (profileId == mVpnUserId) {
                continue;
            }
            VpnConfig cfg = mCurrentVpns.get(profile.id);
            VpnConfig cfg = mCurrentVpns.get(profileId);
            if (cfg != null) {
                return getNameForVpnConfig(cfg, profile.getUserHandle());
                return getNameForVpnConfig(cfg, UserHandle.of(profileId));
            }
        }
        return null;
@@ -149,8 +149,8 @@ public class SecurityControllerImpl implements SecurityController {

    @Override
    public boolean isVpnEnabled() {
        for (UserInfo profile : mUserManager.getProfiles(mVpnUserId)) {
            if (mCurrentVpns.get(profile.id) != null) {
        for (int profileId : mUserManager.getProfileIdsWithDisabled(mVpnUserId)) {
            if (mCurrentVpns.get(profileId) != null) {
                return true;
            }
        }
Loading