Loading services/core/java/com/android/server/biometrics/log/CallbackWithProbe.java +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.biometrics.log; import android.annotation.NonNull; import com.android.server.biometrics.sensors.BaseClientMonitor; import com.android.server.biometrics.sensors.ClientMonitorCallback; /** * Client monitor callback that exposes a probe. Loading @@ -27,7 +28,7 @@ import com.android.server.biometrics.sensors.BaseClientMonitor; * * @param <T> probe type */ public class CallbackWithProbe<T extends Probe> implements BaseClientMonitor.Callback { public class CallbackWithProbe<T extends Probe> implements ClientMonitorCallback { private final boolean mStartWithClient; private final T mProbe; Loading services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java +1 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement } @Override public void cancelWithoutStarting(@NonNull Callback callback) { public void cancelWithoutStarting(@NonNull ClientMonitorCallback callback) { Slog.d(TAG, "cancelWithoutStarting: " + this); final int errorCode = BiometricConstants.BIOMETRIC_ERROR_CANCELED; Loading services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> /** * Handles lifecycle, e.g. {@link BiometricScheduler}, * {@link com.android.server.biometrics.sensors.BaseClientMonitor.Callback} after authentication * {@link ClientMonitorCallback} after authentication * results are known. Note that this happens asynchronously from (but shortly after) * {@link #onAuthenticated(BiometricAuthenticator.Identifier, boolean, ArrayList)} and allows * {@link CoexCoordinator} a chance to invoke/delay this event. Loading Loading @@ -440,7 +440,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> * Start authentication */ @Override public void start(@NonNull Callback callback) { public void start(@NonNull ClientMonitorCallback callback) { super.start(callback); final @LockoutTracker.LockoutMode int lockoutMode = Loading services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java +12 −75 Original line number Diff line number Diff line Loading @@ -29,8 +29,6 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.server.biometrics.log.BiometricLogger; import java.util.ArrayList; import java.util.List; import java.util.NoSuchElementException; /** Loading @@ -46,63 +44,6 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { // Counter used to distinguish between ClientMonitor instances to help debugging. private static int sCount = 0; /** * Interface that ClientMonitor holders should use to receive callbacks. */ public interface Callback { /** * Invoked when the ClientMonitor operation has been started (e.g. reached the head of * the queue and becomes the current operation). * * @param clientMonitor Reference of the ClientMonitor that is starting. */ default void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { } /** * Invoked when the ClientMonitor operation is complete. This abstracts away asynchronous * (i.e. Authenticate, Enroll, Enumerate, Remove) and synchronous (i.e. generateChallenge, * revokeChallenge) so that a scheduler can process ClientMonitors regardless of their * implementation. * * @param clientMonitor Reference of the ClientMonitor that finished. * @param success True if the operation completed successfully. */ default void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) { } } /** Holder for wrapping multiple handlers into a single Callback. */ public static class CompositeCallback implements Callback { @NonNull private final List<Callback> mCallbacks; public CompositeCallback(@NonNull Callback... callbacks) { mCallbacks = new ArrayList<>(); for (Callback callback : callbacks) { if (callback != null) { mCallbacks.add(callback); } } } @Override public final void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).onClientStarted(clientMonitor); } } @Override public final void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) { for (int i = mCallbacks.size() - 1; i >= 0; i--) { mCallbacks.get(i).onClientFinished(clientMonitor, success); } } } private final int mSequentialId; @NonNull private final Context mContext; private final int mTargetUserId; Loading @@ -120,7 +61,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { // Use an empty callback by default since delayed operations can receive events // before they are started and cause NPE in subclasses that access this field directly. @NonNull protected Callback mCallback = new Callback() { @NonNull protected ClientMonitorCallback mCallback = new ClientMonitorCallback() { @Override public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { Slog.e(TAG, "mCallback onClientStarted: called before set (should not happen)"); Loading @@ -133,18 +74,6 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { } }; /** * @return A ClientMonitorEnum constant defined in biometrics.proto */ public abstract int getProtoEnum(); /** * @return True if the ClientMonitor should cancel any current and pending interruptable clients */ public boolean interruptsPrecedingClients() { return false; } /** * @param context system_server context * @param token a unique token for the client Loading Loading @@ -189,11 +118,19 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { } } /** A ClientMonitorEnum constant defined in biometrics.proto */ public abstract int getProtoEnum(); /** True if the ClientMonitor should cancel any current and pending interruptable clients. */ public boolean interruptsPrecedingClients() { return false; } /** * Starts the ClientMonitor's lifecycle. * @param callback invoked when the operation is complete (succeeds, fails, etc) */ public void start(@NonNull Callback callback) { public void start(@NonNull ClientMonitorCallback callback) { mCallback = wrapCallbackForStart(callback); mCallback.onClientStarted(this); } Loading @@ -204,7 +141,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { * Returns the original callback unless overridden. */ @NonNull protected Callback wrapCallbackForStart(@NonNull Callback callback) { protected ClientMonitorCallback wrapCallbackForStart(@NonNull ClientMonitorCallback callback) { return callback; } Loading Loading @@ -329,7 +266,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { } @VisibleForTesting public Callback getCallback() { public ClientMonitorCallback getCallback() { return mCallback; } Loading services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java +3 −3 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ public class BiometricScheduler { // Internal callback, notified when an operation is complete. Notifies the requester // that the operation is complete, before performing internal scheduler work (such as // starting the next client). private final BaseClientMonitor.Callback mInternalCallback = new BaseClientMonitor.Callback() { private final ClientMonitorCallback mInternalCallback = new ClientMonitorCallback() { @Override public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { Slog.d(getTag(), "[Started] " + clientMonitor); Loading Loading @@ -247,7 +247,7 @@ public class BiometricScheduler { } @VisibleForTesting public BaseClientMonitor.Callback getInternalCallback() { public ClientMonitorCallback getInternalCallback() { return mInternalCallback; } Loading Loading @@ -368,7 +368,7 @@ public class BiometricScheduler { * @param clientCallback optional callback, invoked when the client state changes. */ public void scheduleClientMonitor(@NonNull BaseClientMonitor clientMonitor, @Nullable BaseClientMonitor.Callback clientCallback) { @Nullable ClientMonitorCallback clientCallback) { // If the incoming operation should interrupt preceding clients, mark any interruptable // pending clients as canceling. Once they reach the head of the queue, the scheduler will // send ERROR_CANCELED and skip the operation. Loading Loading
services/core/java/com/android/server/biometrics/log/CallbackWithProbe.java +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.biometrics.log; import android.annotation.NonNull; import com.android.server.biometrics.sensors.BaseClientMonitor; import com.android.server.biometrics.sensors.ClientMonitorCallback; /** * Client monitor callback that exposes a probe. Loading @@ -27,7 +28,7 @@ import com.android.server.biometrics.sensors.BaseClientMonitor; * * @param <T> probe type */ public class CallbackWithProbe<T extends Probe> implements BaseClientMonitor.Callback { public class CallbackWithProbe<T extends Probe> implements ClientMonitorCallback { private final boolean mStartWithClient; private final T mProbe; Loading
services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java +1 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement } @Override public void cancelWithoutStarting(@NonNull Callback callback) { public void cancelWithoutStarting(@NonNull ClientMonitorCallback callback) { Slog.d(TAG, "cancelWithoutStarting: " + this); final int errorCode = BiometricConstants.BIOMETRIC_ERROR_CANCELED; Loading
services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> /** * Handles lifecycle, e.g. {@link BiometricScheduler}, * {@link com.android.server.biometrics.sensors.BaseClientMonitor.Callback} after authentication * {@link ClientMonitorCallback} after authentication * results are known. Note that this happens asynchronously from (but shortly after) * {@link #onAuthenticated(BiometricAuthenticator.Identifier, boolean, ArrayList)} and allows * {@link CoexCoordinator} a chance to invoke/delay this event. Loading Loading @@ -440,7 +440,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> * Start authentication */ @Override public void start(@NonNull Callback callback) { public void start(@NonNull ClientMonitorCallback callback) { super.start(callback); final @LockoutTracker.LockoutMode int lockoutMode = Loading
services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java +12 −75 Original line number Diff line number Diff line Loading @@ -29,8 +29,6 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.server.biometrics.log.BiometricLogger; import java.util.ArrayList; import java.util.List; import java.util.NoSuchElementException; /** Loading @@ -46,63 +44,6 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { // Counter used to distinguish between ClientMonitor instances to help debugging. private static int sCount = 0; /** * Interface that ClientMonitor holders should use to receive callbacks. */ public interface Callback { /** * Invoked when the ClientMonitor operation has been started (e.g. reached the head of * the queue and becomes the current operation). * * @param clientMonitor Reference of the ClientMonitor that is starting. */ default void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { } /** * Invoked when the ClientMonitor operation is complete. This abstracts away asynchronous * (i.e. Authenticate, Enroll, Enumerate, Remove) and synchronous (i.e. generateChallenge, * revokeChallenge) so that a scheduler can process ClientMonitors regardless of their * implementation. * * @param clientMonitor Reference of the ClientMonitor that finished. * @param success True if the operation completed successfully. */ default void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) { } } /** Holder for wrapping multiple handlers into a single Callback. */ public static class CompositeCallback implements Callback { @NonNull private final List<Callback> mCallbacks; public CompositeCallback(@NonNull Callback... callbacks) { mCallbacks = new ArrayList<>(); for (Callback callback : callbacks) { if (callback != null) { mCallbacks.add(callback); } } } @Override public final void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).onClientStarted(clientMonitor); } } @Override public final void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) { for (int i = mCallbacks.size() - 1; i >= 0; i--) { mCallbacks.get(i).onClientFinished(clientMonitor, success); } } } private final int mSequentialId; @NonNull private final Context mContext; private final int mTargetUserId; Loading @@ -120,7 +61,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { // Use an empty callback by default since delayed operations can receive events // before they are started and cause NPE in subclasses that access this field directly. @NonNull protected Callback mCallback = new Callback() { @NonNull protected ClientMonitorCallback mCallback = new ClientMonitorCallback() { @Override public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { Slog.e(TAG, "mCallback onClientStarted: called before set (should not happen)"); Loading @@ -133,18 +74,6 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { } }; /** * @return A ClientMonitorEnum constant defined in biometrics.proto */ public abstract int getProtoEnum(); /** * @return True if the ClientMonitor should cancel any current and pending interruptable clients */ public boolean interruptsPrecedingClients() { return false; } /** * @param context system_server context * @param token a unique token for the client Loading Loading @@ -189,11 +118,19 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { } } /** A ClientMonitorEnum constant defined in biometrics.proto */ public abstract int getProtoEnum(); /** True if the ClientMonitor should cancel any current and pending interruptable clients. */ public boolean interruptsPrecedingClients() { return false; } /** * Starts the ClientMonitor's lifecycle. * @param callback invoked when the operation is complete (succeeds, fails, etc) */ public void start(@NonNull Callback callback) { public void start(@NonNull ClientMonitorCallback callback) { mCallback = wrapCallbackForStart(callback); mCallback.onClientStarted(this); } Loading @@ -204,7 +141,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { * Returns the original callback unless overridden. */ @NonNull protected Callback wrapCallbackForStart(@NonNull Callback callback) { protected ClientMonitorCallback wrapCallbackForStart(@NonNull ClientMonitorCallback callback) { return callback; } Loading Loading @@ -329,7 +266,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { } @VisibleForTesting public Callback getCallback() { public ClientMonitorCallback getCallback() { return mCallback; } Loading
services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java +3 −3 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ public class BiometricScheduler { // Internal callback, notified when an operation is complete. Notifies the requester // that the operation is complete, before performing internal scheduler work (such as // starting the next client). private final BaseClientMonitor.Callback mInternalCallback = new BaseClientMonitor.Callback() { private final ClientMonitorCallback mInternalCallback = new ClientMonitorCallback() { @Override public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { Slog.d(getTag(), "[Started] " + clientMonitor); Loading Loading @@ -247,7 +247,7 @@ public class BiometricScheduler { } @VisibleForTesting public BaseClientMonitor.Callback getInternalCallback() { public ClientMonitorCallback getInternalCallback() { return mInternalCallback; } Loading Loading @@ -368,7 +368,7 @@ public class BiometricScheduler { * @param clientCallback optional callback, invoked when the client state changes. */ public void scheduleClientMonitor(@NonNull BaseClientMonitor clientMonitor, @Nullable BaseClientMonitor.Callback clientCallback) { @Nullable ClientMonitorCallback clientCallback) { // If the incoming operation should interrupt preceding clients, mark any interruptable // pending clients as canceling. Once they reach the head of the queue, the scheduler will // send ERROR_CANCELED and skip the operation. Loading