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

Commit 20277a4e authored by Ilya Matyukhin's avatar Ilya Matyukhin Committed by Automerger Merge Worker
Browse files

Merge changes I171604ee,I81d648e5 into tm-dev am: bf0730ed

parents c79f015c bf0730ed
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -538,13 +538,12 @@ public final class AuthSession implements IBinder.DeathRecipient {


    void onDialogAnimatedIn() {
    void onDialogAnimatedIn() {
        if (mState != STATE_AUTH_STARTED) {
        if (mState != STATE_AUTH_STARTED) {
            Slog.w(TAG, "onDialogAnimatedIn, unexpected state: " + mState);
            Slog.e(TAG, "onDialogAnimatedIn, unexpected state: " + mState);
            return;
        }
        }


        mState = STATE_AUTH_STARTED_UI_SHOWING;
        mState = STATE_AUTH_STARTED_UI_SHOWING;

        startAllPreparedFingerprintSensors();
        startAllPreparedFingerprintSensors();
        mState = STATE_AUTH_STARTED_UI_SHOWING;
    }
    }


    void onTryAgainPressed() {
    void onTryAgainPressed() {
+42 −1
Original line number Original line Diff line number Diff line
@@ -20,7 +20,9 @@ import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE;
import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT;
import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT;
import static android.hardware.biometrics.BiometricPrompt.DISMISSED_REASON_NEGATIVE;
import static android.hardware.biometrics.BiometricPrompt.DISMISSED_REASON_NEGATIVE;


import static com.android.server.biometrics.BiometricServiceStateProto.*;
import static com.android.server.biometrics.BiometricServiceStateProto.STATE_AUTH_CALLED;
import static com.android.server.biometrics.BiometricServiceStateProto.STATE_AUTH_STARTED;
import static com.android.server.biometrics.BiometricServiceStateProto.STATE_AUTH_STARTED_UI_SHOWING;


import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertFalse;
@@ -32,6 +34,8 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


@@ -279,6 +283,43 @@ public class AuthSessionTest {
                session.mPreAuthInfo.eligibleSensors.get(fingerprintSensorId).getSensorState());
                session.mPreAuthInfo.eligibleSensors.get(fingerprintSensorId).getSensorState());
    }
    }


    @Test
    public void testOnDialogAnimatedInDoesNothingDuringInvalidState() throws Exception {
        setupFingerprint(0 /* id */, FingerprintSensorProperties.TYPE_UDFPS_OPTICAL);
        final long operationId = 123;
        final int userId = 10;

        final AuthSession session = createAuthSession(mSensors,
                false /* checkDevicePolicyManager */,
                Authenticators.BIOMETRIC_STRONG,
                TEST_REQUEST_ID,
                operationId,
                userId);
        final IBiometricAuthenticator impl = session.mPreAuthInfo.eligibleSensors.get(0).impl;

        session.goToInitialState();
        for (BiometricSensor sensor : session.mPreAuthInfo.eligibleSensors) {
            assertEquals(BiometricSensor.STATE_WAITING_FOR_COOKIE, sensor.getSensorState());
            session.onCookieReceived(
                    session.mPreAuthInfo.eligibleSensors.get(sensor.id).getCookie());
        }
        assertTrue(session.allCookiesReceived());
        assertEquals(STATE_AUTH_STARTED, session.getState());
        verify(impl, never()).startPreparedClient(anyInt());

        // First invocation should start the client monitor.
        session.onDialogAnimatedIn();
        assertEquals(STATE_AUTH_STARTED_UI_SHOWING, session.getState());
        verify(impl).startPreparedClient(anyInt());

        // Subsequent invocations should not start the client monitor again.
        session.onDialogAnimatedIn();
        session.onDialogAnimatedIn();
        session.onDialogAnimatedIn();
        assertEquals(STATE_AUTH_STARTED_UI_SHOWING, session.getState());
        verify(impl, times(1)).startPreparedClient(anyInt());
    }

    @Test
    @Test
    public void testCancelAuthentication_whenStateAuthCalled_invokesCancel()
    public void testCancelAuthentication_whenStateAuthCalled_invokesCancel()
            throws RemoteException {
            throws RemoteException {