Merge "Destroy() client after onClientFinished." into sc-dev

This commit is contained in:
Joshua Mccloskey
2021-08-13 18:49:32 +00:00
committed by Android (Google) Code Review
3 changed files with 23 additions and 1 deletions

View File

@@ -206,7 +206,6 @@ public abstract class BaseClientMonitor extends LoggableMonitor
}
mToken = null;
}
mListener = null;
}
@Override

View File

@@ -295,6 +295,7 @@ public class BiometricScheduler {
@Override
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
mHandler.post(() -> {
clientMonitor.destroy();
if (mCurrentOperation == null) {
Slog.e(getTag(), "[Finishing] " + clientMonitor
+ " but current operation is null, success: " + success

View File

@@ -348,6 +348,17 @@ public class BiometricSchedulerTest {
verify((Interruptable) interruptableMonitor, never()).cancel();
}
@Test
public void testClientDestroyed_afterFinish() {
final HalClientMonitor.LazyDaemon<Object> nonNullDaemon = () -> mock(Object.class);
final TestClientMonitor client =
new TestClientMonitor(mContext, mToken, nonNullDaemon);
mScheduler.scheduleClientMonitor(client);
client.mCallback.onClientFinished(client, true /* success */);
waitForIdle();
assertTrue(client.wasDestroyed());
}
private BiometricSchedulerProto getDump(boolean clearSchedulerBuffer) throws Exception {
return BiometricSchedulerProto.parseFrom(mScheduler.dumpProtoState(clearSchedulerBuffer));
}
@@ -437,6 +448,7 @@ public class BiometricSchedulerTest {
private static class TestClientMonitor extends HalClientMonitor<Object> {
private boolean mUnableToStart;
private boolean mStarted;
private boolean mDestroyed;
public TestClientMonitor(@NonNull Context context, @NonNull IBinder token,
@NonNull LazyDaemon<Object> lazyDaemon) {
@@ -475,6 +487,11 @@ public class BiometricSchedulerTest {
}
@Override
public void destroy() {
mDestroyed = true;
}
public boolean wasUnableToStart() {
return mUnableToStart;
}
@@ -482,6 +499,11 @@ public class BiometricSchedulerTest {
public boolean hasStarted() {
return mStarted;
}
public boolean wasDestroyed() {
return mDestroyed;
}
}
private static void waitForIdle() {