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

Commit fb111541 authored by Yasin Kilicdere's avatar Yasin Kilicdere Committed by Android (Google) Code Review
Browse files

Merge "Revert "Set user state to STATE_BOOTING before UC.startUserInternal returns."" into main

parents 28a8e20f 0475ce68
Loading
Loading
Loading
Loading
+47 −50
Original line number Diff line number Diff line
@@ -1983,6 +1983,27 @@ class UserController implements Handler.Callback {
                return false;
            }

            final Runnable continueStartUserInternal = () -> continueStartUserInternal(userInfo,
                    oldUserId, userStartMode, unlockListener, callingUid, callingPid);
            if (foreground) {
                mHandler.post(() -> dispatchOnBeforeUserSwitching(userId, () ->
                        mHandler.post(continueStartUserInternal)));
            } else {
                continueStartUserInternal.run();
            }
        } finally {
            Binder.restoreCallingIdentity(ident);
        }

        return true;
    }

    private void continueStartUserInternal(UserInfo userInfo, int oldUserId, int userStartMode,
            IProgressListener unlockListener, int callingUid, int callingPid) {
        final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
        final boolean foreground = userStartMode == USER_START_MODE_FOREGROUND;
        final int userId = userInfo.id;

        boolean needStart = false;
        boolean updateUmState = false;
        UserState uss;
@@ -2006,7 +2027,7 @@ class UserController implements Handler.Callback {
                mPendingUserStarts.add(new PendingUserStart(userId, userStartMode,
                        unlockListener));
                t.traceEnd(); // updateStartedUserArrayStarting
                    return true;
                return;
            }
        }

@@ -2028,30 +2049,6 @@ class UserController implements Handler.Callback {
            mInjector.getUserManagerInternal().setUserState(userId, uss.state);
            t.traceEnd();
        }

            UserState finalUss = uss;
            boolean finalNeedStart = needStart;
            final Runnable continueStartUserInternal = () -> continueStartUserInternal(userInfo,
                    oldUserId, userStartMode, finalUss, finalNeedStart, callingUid, callingPid);
            if (foreground) {
                mHandler.post(() -> dispatchOnBeforeUserSwitching(userId, () ->
                        mHandler.post(continueStartUserInternal)));
            } else {
                continueStartUserInternal.run();
            }
        } finally {
            Binder.restoreCallingIdentity(ident);
        }

        return true;
    }

    private void continueStartUserInternal(UserInfo userInfo, int oldUserId, int userStartMode,
            UserState uss, boolean needStart, int callingUid, int callingPid) {
        final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
        final boolean foreground = userStartMode == USER_START_MODE_FOREGROUND;
        final int userId = userInfo.id;

        t.traceBegin("updateConfigurationAndProfileIds");
        if (foreground) {
            // Make sure the old user is no longer considering the display to be on.