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

Commit 90095be8 authored by Chandru S's avatar Chandru S Committed by Android (Google) Code Review
Browse files

Merge "Avoid IPCs to check for checking enrollment status of face and fp." into tm-qpr-dev

parents 4a20c736 29ef9fcc
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -2580,8 +2580,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    }

    private boolean isOnlyFaceEnrolled() {
        return isFaceAuthEnabledForUser(getCurrentUser())
                && !isUnlockWithFingerprintPossible(getCurrentUser());
        return isFaceEnrolled()
                && !getCachedIsUnlockWithFingerprintPossible(sCurrentUser);
    }

    private void maybeLogListenerModelData(KeyguardListenModel model) {
@@ -2696,7 +2696,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        return isUnlockWithFacePossible(userId) || isUnlockWithFingerprintPossible(userId);
    }

    private boolean isUnlockWithFingerprintPossible(int userId) {
    @VisibleForTesting
    boolean isUnlockWithFingerprintPossible(int userId) {
        // TODO (b/242022358), make this rely on onEnrollmentChanged event and update it only once.
        mIsUnlockWithFingerprintPossible.put(userId, mFpm != null && mFpm.isHardwareDetected()
                && !isFingerprintDisabled(userId) && mFpm.hasEnrolledTemplates(userId));
        return mIsUnlockWithFingerprintPossible.get(userId);
@@ -2718,6 +2720,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
     * If face hardware is available, user has enrolled and enabled auth via setting.
     */
    public boolean isFaceAuthEnabledForUser(int userId) {
        // TODO (b/242022358), make this rely on onEnrollmentChanged event and update it only once.
        updateFaceEnrolled(userId);
        return mIsFaceEnrolled;
    }
+17 −0
Original line number Diff line number Diff line
@@ -581,6 +581,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    @Test
    public void testTriesToAuthenticate_whenBouncer() {
        fingerprintIsNotEnrolled();
        faceAuthEnabled();
        setKeyguardBouncerVisibility(true);

        verify(mFaceManager).authenticate(any(), any(), any(), any(), anyInt(), anyBoolean());
@@ -1218,6 +1219,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    public void testShouldListenForFace_whenFaceIsAlreadyAuthenticated_returnsFalse()
            throws RemoteException {
        // Face auth should run when the following is true.
        faceAuthEnabled();
        bouncerFullyVisibleAndNotGoingToSleep();
        fingerprintIsNotEnrolled();
        keyguardNotGoingAway();
@@ -1284,6 +1286,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    public void testShouldListenForFace_whenBiometricsDisabledForUser_returnsFalse()
            throws RemoteException {
        // Preconditions for face auth to run
        faceAuthEnabled();
        keyguardNotGoingAway();
        bouncerFullyVisibleAndNotGoingToSleep();
        fingerprintIsNotEnrolled();
@@ -1307,6 +1310,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    public void testShouldListenForFace_whenUserCurrentlySwitching_returnsFalse()
            throws RemoteException {
        // Preconditions for face auth to run
        faceAuthEnabled();
        keyguardNotGoingAway();
        bouncerFullyVisibleAndNotGoingToSleep();
        fingerprintIsNotEnrolled();
@@ -1329,6 +1333,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    public void testShouldListenForFace_whenSecureCameraLaunched_returnsFalse()
            throws RemoteException {
        // Preconditions for face auth to run
        faceAuthEnabled();
        keyguardNotGoingAway();
        bouncerFullyVisibleAndNotGoingToSleep();
        fingerprintIsNotEnrolled();
@@ -1374,6 +1379,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    public void testShouldListenForFace_whenBouncerShowingAndDeviceIsAwake_returnsTrue()
            throws RemoteException {
        // Preconditions for face auth to run
        faceAuthEnabled();
        keyguardNotGoingAway();
        currentUserIsPrimary();
        currentUserDoesNotHaveTrust();
@@ -1539,8 +1545,19 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
        assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(anyBoolean())).isEqualTo(true);
    }

    private void faceAuthEnabled() {
        // this ensures KeyguardUpdateMonitor updates the cached mIsFaceEnrolled flag using the
        // face manager mock wire-up in setup()
        mKeyguardUpdateMonitor.isFaceAuthEnabledForUser(mCurrentUserId);
    }

    private void fingerprintIsNotEnrolled() {
        when(mFingerprintManager.hasEnrolledTemplates(mCurrentUserId)).thenReturn(false);
        // This updates the cached fingerprint state.
        // There is no straightforward API to update the fingerprint state.
        // It currently works updates after enrollment changes because something else invokes
        // startListeningForFingerprint(), which internally calls this method.
        mKeyguardUpdateMonitor.isUnlockWithFingerprintPossible(mCurrentUserId);
    }

    private void statusBarShadeIsNotLocked() {