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

Commit a7f79365 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Do not animate padlock when fp

Do not animate the padlock opening when unlocking with fingerprint,
the animation duration is too long, and overlaps with the activity
transition.

Fixes: 161656850
Test: manual, on crosshatch
Test: atest BiometricsUnlockControllerTest
Change-Id: If99d5b20d0f69491d38cfdbc21dfa8d2fe2d0edb
Merged-In: If99d5b20d0f69491d38cfdbc21dfa8d2fe2d0edb
parent 224d3e04
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -152,6 +152,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
    private final Context mContext;
    private final int mWakeUpDelay;
    private int mMode;
    private BiometricSourceType mBiometricType;
    private KeyguardViewController mKeyguardViewController;
    private DozeScrimController mDozeScrimController;
    private KeyguardViewMediator mKeyguardViewMediator;
@@ -340,6 +341,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
            Trace.endSection();
            return;
        }
        mBiometricType = biometricSourceType;
        mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH)
                .setType(MetricsEvent.TYPE_SUCCESS).setSubtype(toSubtype(biometricSourceType)));
        Optional.ofNullable(BiometricUiEvent.SUCCESS_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
@@ -615,6 +617,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp

    private void resetMode() {
        mMode = MODE_NONE;
        mBiometricType = null;
        mNotificationShadeWindowController.setForceDozeBrightness(false);
        if (mStatusBar.getNavigationBarView() != null) {
            mStatusBar.getNavigationBarView().setWakeAndUnlocking(false);
@@ -680,8 +683,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
    /**
     * Successful authentication with fingerprint, face, or iris when the lockscreen fades away
     */
    public boolean isUnlockFading() {
        return mMode == MODE_UNLOCK_FADING;
    public BiometricSourceType getBiometricType() {
        return mBiometricType;
    }

    /**
+13 −4
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ public class LockscreenLockIconController {
    private boolean mWakeAndUnlockRunning;
    private boolean mShowingLaunchAffordance;
    private boolean mBouncerShowingScrimmed;
    private boolean mFingerprintUnlock;
    private int mStatusBarState = StatusBarState.SHADE;
    private LockIcon mLockIcon;

@@ -389,14 +390,19 @@ public class LockscreenLockIconController {
    /**
     * 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.
     * We also want to halt padlock the animation when we're in face bypass mode or dismissing the
     * keyguard with fingerprint.
     * @param wakeAndUnlock are we wake and unlocking
     * @param isUnlock are we currently unlocking
     */
    public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock) {
    public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock,
            BiometricSourceType type) {
        if (wakeAndUnlock) {
            mWakeAndUnlockRunning = true;
        }
        if (isUnlock && mKeyguardBypassController.getBypassEnabled() && canBlockUpdates()) {
        mFingerprintUnlock = type == BiometricSourceType.FINGERPRINT;
        if (isUnlock && (mFingerprintUnlock || mKeyguardBypassController.getBypassEnabled())
                && canBlockUpdates()) {
            // We don't want the icon to change while we are unlocking
            mBlockUpdates = true;
        }
@@ -513,10 +519,13 @@ public class LockscreenLockIconController {
                && (!mStatusBarStateController.isPulsing() || mDocked);
        boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning
                || mShowingLaunchAffordance;
        if (mKeyguardBypassController.getBypassEnabled() && !mBouncerShowingScrimmed) {
        boolean fingerprintOrBypass = mFingerprintUnlock
                || mKeyguardBypassController.getBypassEnabled();
        if (fingerprintOrBypass && !mBouncerShowingScrimmed) {
            if ((mHeadsUpManagerPhone.isHeadsUpGoingAway()
                    || mHeadsUpManagerPhone.hasPinnedHeadsUp()
                    || mStatusBarState == StatusBarState.KEYGUARD)
                    || mStatusBarState == StatusBarState.KEYGUARD
                    || mStatusBarState == StatusBarState.SHADE)
                    && !mNotificationWakeUpCoordinator.getNotificationsFullyHidden()) {
                invisible = true;
            }
+2 −1
Original line number Diff line number Diff line
@@ -3969,7 +3969,8 @@ public class StatusBar extends SystemUI implements DemoMode,
        updateScrimController();
        mLockscreenLockIconController.onBiometricAuthModeChanged(
                mBiometricUnlockController.isWakeAndUnlock(),
                mBiometricUnlockController.isBiometricUnlock());
                mBiometricUnlockController.isBiometricUnlock(),
                mBiometricUnlockController.getBiometricType());
    }

    @VisibleForTesting
+4 −0
Original line number Diff line number Diff line
@@ -136,6 +136,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
                anyFloat());
        assertThat(mBiometricUnlockController.getMode())
                .isEqualTo(BiometricUnlockController.MODE_SHOW_BOUNCER);
        assertThat(mBiometricUnlockController.getBiometricType())
                .isEqualTo(BiometricSourceType.FINGERPRINT);
    }

    @Test
@@ -268,6 +270,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
        verify(mStatusBarKeyguardViewManager).notifyKeyguardAuthenticated(eq(false));
        assertThat(mBiometricUnlockController.getMode())
                .isEqualTo(BiometricUnlockController.MODE_DISMISS_BOUNCER);
        assertThat(mBiometricUnlockController.getBiometricType())
                .isEqualTo(BiometricSourceType.FACE);
    }

    @Test