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

Commit 10fb7116 authored by Beverly's avatar Beverly
Browse files

ActiveUnlock dismisses keyguard on trigger from assistant

The Assistant visibility doesn't change until the assistant
is attempting to address a query that requires auth. In this case,
without ActiveUnlock, the bouncer would show for the user to proceed,
and if the user enters their pin/patttern/password or biometric success,
then the user is brought to the secure assistant activity over the home
screen (keyguard is dismissed). To align with this CUJ, also make ActiveUnlock
dismiss the keyguard on successfull auth from a AU request coming from
the assistant visible signal.

Test: without biometrics enrolled, launch the assistant
with a query that requires auth to trigger active unlock.
When active unlock is triggered, the device will proceed to
enter the device (dismiss keyguard).
Test: atest KeyguardUpdateMonitorTest
Fixes: 269207635

Change-Id: Ic4f41b0705fb680691f7a3472853e76778cb9dfa
parent 356c90dd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1601,7 +1601,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            requestActiveUnlock(
                    ActiveUnlockConfig.ActiveUnlockRequestOrigin.ASSISTANT,
                    "assistant",
                    false);
                    /* dismissKeyguard */ true);
        }
    }

+20 −0
Original line number Diff line number Diff line
@@ -2244,6 +2244,26 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
        assertThat(mKeyguardUpdateMonitor.shouldListenForFace()).isFalse();
    }

    @Test
    public void assistantVisible_requestActiveUnlock() {
        // GIVEN active unlock requests from the assistant are allowed
        when(mActiveUnlockConfig.shouldAllowActiveUnlockFromOrigin(
                ActiveUnlockConfig.ActiveUnlockRequestOrigin.ASSISTANT)).thenReturn(true);

        // GIVEN should trigger active unlock
        keyguardIsVisible();
        keyguardNotGoingAway();
        statusBarShadeIsNotLocked();
        when(mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser())).thenReturn(true);

        // WHEN the assistant is visible
        mKeyguardUpdateMonitor.setAssistantVisible(true);

        // THEN request unlock with keyguard dismissal
        verify(mTrustManager).reportUserRequestedUnlock(eq(KeyguardUpdateMonitor.getCurrentUser()),
                eq(true));
    }

    @Test
    public void fingerprintFailure_requestActiveUnlock_dismissKeyguard()
            throws RemoteException {