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

Commit ec1e86cd authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 29c55f31 6790739d
Loading
Loading
Loading
Loading
+50 −47
Original line number Diff line number Diff line
@@ -1907,27 +1907,6 @@ 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;
@@ -1951,7 +1930,7 @@ class UserController implements Handler.Callback {
                    mPendingUserStarts.add(new PendingUserStart(userId, userStartMode,
                            unlockListener));
                    t.traceEnd(); // updateStartedUserArrayStarting
                return;
                    return true;
                }
            }

@@ -1973,6 +1952,30 @@ 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.