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

Commit 71f3804a authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Hide lock icon while WAKE_AND_UNLOCK is happening.

The lock icon is on top of the front scrim, otherwise it wouldn't be visible on a
scrimmed bouncer (activities occluding the keyguard.)
Because of this, the black layer the covers most of the lock screen won't cover the
icon animation. We need to ensure that the icon is invisible while the biometric
unlock animation is running, and only unblock it after the keyguard has finished
fading away.

Test: manually unlock with fingerprint from AOD and LS
Test: press power while unlocking
Fixes: 132198859
Change-Id: Ied501586abe05dc333e4d76e4c045f32070595a7
parent c560293e
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
    private float mDozeAmount;
    private int mIconRes;
    private boolean mWasPulsingOnThisFrame;
    private boolean mWakeAndUnlockRunning;

    private final Runnable mDrawOffTimeout = () -> update(true /* forceUpdate */);
    private final DockManager.DockEventListener mDockEventListener =
@@ -277,7 +278,8 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
            mLastBouncerVisible = mBouncerVisible;
        }

        boolean invisible = mDozing && (!mPulsing || mDocked);
        boolean onAodNotPulsingOrDocked = mDozing && (!mPulsing || mDocked);
        boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning;
        setVisibility(invisible ? INVISIBLE : VISIBLE);
        updateClickability();
    }
@@ -450,4 +452,23 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
    public void onUnlockMethodStateChanged() {
        update();
    }

    /**
     * We need to hide the lock whenever there's a fingerprint unlock, otherwise you'll see the
     * icon on top of the black front scrim.
     */
    public void onBiometricAuthModeChanged(boolean wakeAndUnlock) {
        if (wakeAndUnlock) {
            mWakeAndUnlockRunning = true;
        }
        update();
    }

    /**
     * Triggered after the unlock animation is over and the user is looking at launcher.
     */
    public void onKeyguardFadedAway() {
        mWakeAndUnlockRunning = false;
        update();
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -527,6 +527,7 @@ public class StatusBar extends SystemUI implements DemoMode,
            }
            if (mKeyguardMonitor.isKeyguardFadingAway()) {
                mStatusBarKeyguardViewManager.onKeyguardFadedAway();
                mStatusBarWindow.onKeyguardFadedAway();
            }
        }

@@ -3791,6 +3792,7 @@ public class StatusBar extends SystemUI implements DemoMode,
    public void notifyBiometricAuthModeChanged() {
        updateDozing();
        updateScrimController();
        mStatusBarWindow.onBiometricAuthModeChanged(mBiometricUnlockController.isWakeAndUnlock());
    }

    @VisibleForTesting
+15 −0
Original line number Diff line number Diff line
@@ -265,6 +265,21 @@ public class StatusBarWindowView extends FrameLayout {
        mLockIcon.setPulsing(pulsing);
    }

    /**
     * Called when the biometric authentication mode changes.
     * @param wakeAndUnlock If the type is {@link BiometricUnlockController#isWakeAndUnlock()}
     */
    public void onBiometricAuthModeChanged(boolean wakeAndUnlock) {
        mLockIcon.onBiometricAuthModeChanged(wakeAndUnlock);
    }

    /**
     * Called after finished unlocking and the status bar window is already collapsed.
     */
    public void onKeyguardFadedAway() {
        mLockIcon.onKeyguardFadedAway();
    }

    public void setStatusBarView(PhoneStatusBarView statusBarView) {
        mStatusBarView = statusBarView;
    }
+1 −1

File changed.

Contains only whitespace changes.