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
This commit is contained in:
Beverly
2023-03-17 15:13:28 +00:00
parent 356c90dd45
commit 10fb7116bd
2 changed files with 21 additions and 1 deletions

View File

@@ -1601,7 +1601,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
requestActiveUnlock(
ActiveUnlockConfig.ActiveUnlockRequestOrigin.ASSISTANT,
"assistant",
false);
/* dismissKeyguard */ true);
}
}

View File

@@ -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 {