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

Commit 80771ec5 authored by Matt Pietal's avatar Matt Pietal
Browse files

Bouncer should dismiss if being tracked when face unlocked

When the user is tracking the bouncer with their finger and a
successful face unlock occurs, the bouncer should always be
immediately dismissed. Prior to this, it was possible for the user to
continue tracking the bouncer over the homescreen after unlock, leading 
to shade problems, including missing lock/udfps icons and
lockscreen over homescreen/activity.

The primary issue was BiometricUnlockController was returning MODE_NONE, and 
is now returning MODE_DISMISS_BOUNCER.

Fixes: 237822716
Test: atest StatusBarKeyguardViewManagerTest
Change-Id: I364d8e61a61138d79240b5baefed295493678063
parent 9d2f3f9d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2692,7 +2692,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
    /** Hides the surface behind the keyguard by re-showing the keyguard/activity lock screen. */
    public void hideSurfaceBehindKeyguard() {
        mSurfaceBehindRemoteAnimationRequested = false;

        mKeyguardStateController.notifyKeyguardGoingAway(false);
        if (mShowing) {
            setShowingLocked(true, true);
        }
+0 −4
Original line number Diff line number Diff line
@@ -397,10 +397,6 @@ public class KeyguardBouncer {
        return mShowingSoon || mExpansion != EXPANSION_HIDDEN && mExpansion != EXPANSION_VISIBLE;
    }

    public boolean getShowingSoon() {
        return mShowingSoon;
    }

    /**
     * @return {@code true} when bouncer's pre-hide animation already started but isn't completely
     *         hidden yet, {@code false} otherwise.
+1 −1
Original line number Diff line number Diff line
@@ -963,7 +963,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb

    @Override
    public boolean bouncerIsOrWillBeShowing() {
        return isBouncerShowing() || mBouncer.getShowingSoon();
        return isBouncerShowing() || mBouncer.inTransit();
    }

    public boolean isFullscreenBouncer() {
+10 −0
Original line number Diff line number Diff line
@@ -380,6 +380,16 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
        verify(mAlternateAuthInterceptor).hideAlternateAuthBouncer();
    }

    @Test
    public void testBouncerIsOrWillBeShowing_whenBouncerIsInTransit() {
        when(mBouncer.isShowing()).thenReturn(false);
        when(mBouncer.inTransit()).thenReturn(true);

        assertTrue(
                "Is or will be showing should be true when bouncer is in transit",
                mStatusBarKeyguardViewManager.bouncerIsOrWillBeShowing());
    }

    @Test
    public void testShowAltAuth_unlockingWithBiometricNotAllowed() {
        // GIVEN alt auth exists, unlocking with biometric isn't allowed