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

Commit 2a0e8399 authored by Joshua Mccloskey's avatar Joshua Mccloskey Committed by Automerger Merge Worker
Browse files

Merge "Cancel side auth on power press" into tm-qpr-dev am: 28b3fee2

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


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


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


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


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


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


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


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


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


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


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