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

Commit 6e85b261 authored by Joe Bolinger's avatar Joe Bolinger Committed by Android (Google) Code Review
Browse files

Merge "Cache start callback for watchdog in case the HAL operation does not...

Merge "Cache start callback for watchdog in case the HAL operation does not complete its expected lifecycle." into tm-dev
parents b36b8340 584e2a4c
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -84,6 +84,8 @@ public class BiometricSchedulerOperation {
    private final BaseClientMonitor mClientMonitor;
    @Nullable
    private final ClientMonitorCallback mClientCallback;
    @Nullable
    private ClientMonitorCallback mOnStartCallback;
    @OperationState
    private int mState;
    @VisibleForTesting
@@ -108,7 +110,8 @@ public class BiometricSchedulerOperation {
        mCancelWatchdog = () -> {
            if (!isFinished()) {
                Slog.e(TAG, "[Watchdog Triggered]: " + this);
                getWrappedCallback().onClientFinished(mClientMonitor, false /* success */);
                getWrappedCallback(mOnStartCallback)
                        .onClientFinished(mClientMonitor, false /* success */);
            }
        };
    }
@@ -174,6 +177,7 @@ public class BiometricSchedulerOperation {
    }

    private boolean doStart(@NonNull ClientMonitorCallback callback) {
        mOnStartCallback = callback;
        final ClientMonitorCallback cb = getWrappedCallback(callback);

        if (mState == STATE_WAITING_IN_QUEUE_CANCELING) {
+10 −3
Original line number Diff line number Diff line
@@ -40,12 +40,14 @@ import com.android.server.biometrics.log.BiometricContext;
import com.android.server.biometrics.log.BiometricLogger;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

@Presubmit
@RunWith(AndroidTestingRunner.class)
@@ -62,6 +64,9 @@ public class BiometricSchedulerOperationTest {
        }
    }

    @Rule
    public final MockitoRule mockito = MockitoJUnit.rule();

    @Mock
    private InterruptableMonitor<FakeHal> mClientMonitor;
    @Mock
@@ -76,7 +81,6 @@ public class BiometricSchedulerOperationTest {

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mHandler = new Handler(TestableLooper.get(this).getLooper());
        mOperation = new BiometricSchedulerOperation(mClientMonitor, mClientCallback);
    }
@@ -311,10 +315,12 @@ public class BiometricSchedulerOperationTest {
    private void cancelWatchdog(boolean start) {
        when(mClientMonitor.getFreshDaemon()).thenReturn(mHal);

        mOperation.start(mock(ClientMonitorCallback.class));
        final ClientMonitorCallback opStartCallback = mock(ClientMonitorCallback.class);
        mOperation.start(opStartCallback);
        if (start) {
            verify(mClientMonitor).start(mStartCallback.capture());
            mStartCallback.getValue().onClientStarted(mClientMonitor);
            verify(opStartCallback).onClientStarted(eq(mClientMonitor));
        }
        mOperation.cancel(mHandler, mock(ClientMonitorCallback.class));

@@ -325,6 +331,7 @@ public class BiometricSchedulerOperationTest {

        assertThat(mOperation.isFinished()).isTrue();
        assertThat(mOperation.isCanceling()).isFalse();
        verify(opStartCallback).onClientFinished(eq(mClientMonitor), eq(false));
        verify(mClientMonitor).destroy();
    }
}