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

Commit 8ce432bf authored by Joe Bolinger's avatar Joe Bolinger Committed by Automerger Merge Worker
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 am: 6e85b261

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17008569

Change-Id: Ia6164b4128d33bf56619db67085bbd9af848bceb
parents 367d3eb3 6e85b261
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();
    }
}