Merge "Cache start callback for watchdog in case the HAL operation does not complete its expected lifecycle." into tm-dev
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user