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

Commit 5dcdec7e authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Fix lock icon animation for bio-auth.

1) Ensure lock icon animates when using biometric authentication to
unlock a device.

2) Don't animate the lock twice. Accomplished by waiting to clear
the biometric authentication credentials until after we've started
the keyguard dismiss animation. When we cleared them before the
animation, the keyguard would be left in an inconsistent state where
it would be non-dismissable but also not-yet animating away, meaning
the keyguard appeared locked to the rest of the codebase.

Fixes: 153117689
Test: atest SystemUITests && manual
Change-Id: I8c2390e5f3ca2d366d377f6da5822f24ca311c2f
Merged-In: I8c2390e5f3ca2d366d377f6da5822f24ca311c2f
parent cd220824
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1717,9 +1717,9 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
            resetKeyguardDonePendingLocked();
        }

        mUpdateMonitor.clearBiometricRecognized();

        if (mGoingToSleep) {
            mUpdateMonitor.clearBiometricRecognized();
            Log.i(TAG, "Device is going to sleep, aborting keyguardDone");
            return;
        }
@@ -1740,6 +1740,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
        }

        handleHide();
        mUpdateMonitor.clearBiometricRecognized();
        Trace.endSection();
    }

+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,6 @@ public class LockIcon extends KeyguardAffordanceView {
            mPredrawRegistered = false;

            int newState = mState;
            mOldState = mState;
            Drawable icon = getIcon(newState);
            setImageDrawable(icon, false);

@@ -135,6 +134,7 @@ public class LockIcon extends KeyguardAffordanceView {
    }

    void update(int newState, boolean pulsing, boolean dozing, boolean keyguardJustShown) {
        mOldState = mState;
        mState = newState;
        mPulsing = pulsing;
        mDozing = dozing;
+4 −2
Original line number Diff line number Diff line
@@ -470,8 +470,10 @@ public class LockscreenLockIconController {
    }

    private int getState() {
        if ((mKeyguardStateController.canDismissLockScreen() || !mKeyguardShowing
                || mKeyguardStateController.isKeyguardGoingAway()) && !mSimLocked) {
        if ((mKeyguardStateController.canDismissLockScreen()
                || !mKeyguardStateController.isShowing()
                || mKeyguardStateController.isKeyguardGoingAway()
                || mKeyguardStateController.isKeyguardFadingAway()) && !mSimLocked) {
            return STATE_LOCK_OPEN;
        } else if (mTransientBiometricsError) {
            return STATE_BIOMETRICS_ERROR;