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

Commit 98571a09 authored by Rubin Xu's avatar Rubin Xu
Browse files

Notify caller when unlockUser() bails out

Returns false and notify caller's progress callback when unlockUser()
fails to progress due to unmet preconditions.

Bug: 122876105
Test: None
Change-Id: Ifcf485c9a4992ae884d64aa8668696c61e1ff43e
parent 0d99ab3f
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -383,14 +383,14 @@ class UserController implements Handler.Callback {
     * Step from {@link UserState#STATE_RUNNING_LOCKED} to
     * {@link UserState#STATE_RUNNING_UNLOCKING}.
     */
    private void finishUserUnlocking(final UserState uss) {
    private boolean finishUserUnlocking(final UserState uss) {
        final int userId = uss.mHandle.getIdentifier();
        // Only keep marching forward if user is actually unlocked
        if (!StorageManager.isUserKeyUnlocked(userId)) return;
        if (!StorageManager.isUserKeyUnlocked(userId)) return false;
        synchronized (mLock) {
            // Do not proceed if unexpected state or a stale user
            if (mStartedUsers.get(userId) != uss || uss.state != STATE_RUNNING_LOCKED) {
                return;
                return false;
            }
        }
        uss.mUnlockProgress.start();
@@ -421,6 +421,7 @@ class UserController implements Handler.Callback {
            mHandler.obtainMessage(SYSTEM_USER_UNLOCK_MSG, userId, 0, uss)
                    .sendToTarget();
        });
        return true;
    }

    /**
@@ -1180,7 +1181,10 @@ class UserController implements Handler.Callback {
            return false;
        }

        finishUserUnlocking(uss);
        if (!finishUserUnlocking(uss)) {
            notifyFinished(userId, listener);
            return false;
        }

        // We just unlocked a user, so let's now attempt to unlock any
        // managed profiles under that user.