Loading services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java +0 −1 Original line number Diff line number Diff line Loading @@ -206,7 +206,6 @@ public abstract class BaseClientMonitor extends LoggableMonitor } mToken = null; } mListener = null; } @Override Loading services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading services/tests/servicestests/src/com/android/server/biometrics/sensors/BiometricSchedulerTest.java +22 −0 Original line number Diff line number Diff line Loading @@ -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)); } Loading Loading @@ -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) { Loading Loading @@ -475,6 +487,11 @@ public class BiometricSchedulerTest { } @Override public void destroy() { mDestroyed = true; } public boolean wasUnableToStart() { return mUnableToStart; } Loading @@ -482,6 +499,11 @@ public class BiometricSchedulerTest { public boolean hasStarted() { return mStarted; } public boolean wasDestroyed() { return mDestroyed; } } private static void waitForIdle() { Loading Loading
services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java +0 −1 Original line number Diff line number Diff line Loading @@ -206,7 +206,6 @@ public abstract class BaseClientMonitor extends LoggableMonitor } mToken = null; } mListener = null; } @Override Loading
services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
services/tests/servicestests/src/com/android/server/biometrics/sensors/BiometricSchedulerTest.java +22 −0 Original line number Diff line number Diff line Loading @@ -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)); } Loading Loading @@ -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) { Loading Loading @@ -475,6 +487,11 @@ public class BiometricSchedulerTest { } @Override public void destroy() { mDestroyed = true; } public boolean wasUnableToStart() { return mUnableToStart; } Loading @@ -482,6 +499,11 @@ public class BiometricSchedulerTest { public boolean hasStarted() { return mStarted; } public boolean wasDestroyed() { return mDestroyed; } } private static void waitForIdle() { Loading