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

Commit 28b3fee2 authored by Joshua Mccloskey's avatar Joshua Mccloskey Committed by Android (Google) Code Review
Browse files

Merge "Cancel side auth on power press" into tm-qpr-dev

parents ecb77821 7a40885b
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>
    private long mSideFpsLastAcquireStartTime;
    private Runnable mAuthSuccessRunnable;
    private final Clock mClock;
    private boolean mDidFinishSfps;

    FingerprintAuthenticationClient(
            @NonNull Context context,
@@ -197,8 +198,9 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>

    @Override
    protected void handleLifecycleAfterAuth(boolean authenticated) {
        if (authenticated) {
        if (authenticated && !mDidFinishSfps) {
            mCallback.onClientFinished(this, true /* success */);
            mDidFinishSfps = true;
        }
    }

@@ -490,11 +492,16 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>
        if (mSensorProps.isAnySidefpsType()) {
            Slog.i(TAG, "(sideFPS): onPowerPressed");
            mHandler.post(() -> {
                if (mDidFinishSfps) {
                    return;
                }
                Slog.i(TAG, "(sideFPS): finishing auth");
                // Ignore auths after a power has been detected
                mHandler.removeMessages(MESSAGE_AUTH_SUCCESS);
                // Do not call onError() as that will send an additional callback to coex.
                mDidFinishSfps = true;
                onErrorInternal(BiometricConstants.BIOMETRIC_ERROR_POWER_PRESSED, 0, true);
                stopHalOperation();
                mSensorOverlays.hide(getSensorId());
            });
        }
+9 −2
Original line number Diff line number Diff line
@@ -372,6 +372,7 @@ public class FingerprintAuthenticationClientTest {
    @Test
    public void fingerprintPowerIgnoresAuthInWindow() throws Exception {
        when(mSensorProps.isAnySidefpsType()).thenReturn(true);
        when(mHal.authenticate(anyLong())).thenReturn(mCancellationSignal);

        final FingerprintAuthenticationClient client = createClient(1);
        client.start(mCallback);
@@ -382,11 +383,13 @@ public class FingerprintAuthenticationClientTest {
        mLooper.dispatchAll();

        verify(mCallback).onClientFinished(any(), eq(false));
        verify(mCancellationSignal).cancel();
    }

    @Test
    public void fingerprintAuthIgnoredWaitingForPower() throws Exception {
        when(mSensorProps.isAnySidefpsType()).thenReturn(true);
        when(mHal.authenticate(anyLong())).thenReturn(mCancellationSignal);

        final FingerprintAuthenticationClient client = createClient(1);
        client.start(mCallback);
@@ -397,11 +400,13 @@ public class FingerprintAuthenticationClientTest {
        mLooper.dispatchAll();

        verify(mCallback).onClientFinished(any(), eq(false));
        verify(mCancellationSignal).cancel();
    }

    @Test
    public void fingerprintAuthSucceedsAfterPowerWindow() throws Exception {
    public void fingerprintAuthFailsWhenAuthAfterPower() throws Exception {
        when(mSensorProps.isAnySidefpsType()).thenReturn(true);
        when(mHal.authenticate(anyLong())).thenReturn(mCancellationSignal);

        final FingerprintAuthenticationClient client = createClient(1);
        client.start(mCallback);
@@ -415,7 +420,9 @@ public class FingerprintAuthenticationClientTest {
        mLooper.moveTimeForward(1000);
        mLooper.dispatchAll();

        verify(mCallback).onClientFinished(any(), eq(true));
        verify(mCallback, never()).onClientFinished(any(), eq(true));
        verify(mCallback).onClientFinished(any(), eq(false));
        when(mHal.authenticateWithContext(anyLong(), any())).thenReturn(mCancellationSignal);
    }

    @Test