summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kevin Chyn <kchyn@google.com> 2021-01-14 14:56:54 -0800
committer Kevin Chyn <kchyn@google.com> 2021-01-14 17:59:08 -0800
commitb9bb08eb83ea577c23fb9a53511d49e162fed42e (patch)
treefc1a6ab012a12c83e3547089f74214967756532b
parent8b2f2602f9772b11e2aef4e6188766bc4aa23c42 (diff)
7/n: Add HalClientMonitor
Adds HalClientMonitor and HAL-related things out of BaseClientMonitor to HalClientMonitor. This is mostly a rename, except BiometricScheduler, which adds a tiny bit of code to handle HalClientMonitor vs BaseClientMonitor Bug: 159667191 Test: atest com.android.server.biometrics Test: No effect on devices Change-Id: Iad79331eca956f8b854fa99a3f95cd21922d1bcc
-rw-r--r--services/core/java/com/android/server/biometrics/Utils.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java40
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java49
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/HalClientMonitor.java81
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java8
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/InternalEnumerateClient.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/InvalidationClient.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/InvalidationRequesterClient.java20
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/RemovalClient.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGetAuthenticatorIdClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java11
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceResetLockoutClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java35
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java27
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceResetLockoutClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceSetFeatureClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceUpdateActiveUserClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGetAuthenticatorIdClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java15
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintResetLockoutClient.java4
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java37
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java27
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java10
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintUpdateActiveUserClient.java4
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/sensors/BiometricSchedulerTest.java19
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceProviderTest.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProviderTest.java3
31 files changed, 254 insertions, 183 deletions
diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java
index fa503889f26f..55ac24835b2a 100644
--- a/services/core/java/com/android/server/biometrics/Utils.java
+++ b/services/core/java/com/android/server/biometrics/Utils.java
@@ -408,7 +408,7 @@ public class Utils {
return hasPermission && keyguardPackage != null && keyguardPackage.equals(clientPackage);
}
- public static String getClientName(@Nullable BaseClientMonitor<?> client) {
+ public static String getClientName(@Nullable BaseClientMonitor client) {
return client != null ? client.getClass().getSimpleName() : "null";
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
index c662df252971..b3580fb79042 100644
--- a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
@@ -29,10 +29,10 @@ import android.os.Vibrator;
import android.util.Slog;
/**
- * Abstract {@link BaseClientMonitor} subclass that operations eligible/interested in acquisition
+ * Abstract {@link HalClientMonitor} subclass that operations eligible/interested in acquisition
* messages should extend.
*/
-public abstract class AcquisitionClient<T> extends BaseClientMonitor<T> implements Interruptable {
+public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implements Interruptable {
private static final String TAG = "Biometrics/AcquisitionClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java b/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java
index 7c9fe38c6add..f3c37efd4b61 100644
--- a/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java
@@ -31,7 +31,7 @@ import java.util.NoSuchElementException;
* the current client. Subclasses are responsible for coordinating the interaction with
* the biometric's HAL for the specific action (e.g. authenticate, enroll, enumerate, etc.).
*/
-public abstract class BaseClientMonitor<T> extends LoggableMonitor
+public abstract class BaseClientMonitor extends LoggableMonitor
implements IBinder.DeathRecipient {
private static final String TAG = "Biometrics/ClientMonitor";
@@ -50,7 +50,7 @@ public abstract class BaseClientMonitor<T> extends LoggableMonitor
*
* @param clientMonitor Reference of the ClientMonitor that is starting.
*/
- default void onClientStarted(@NonNull BaseClientMonitor<?> clientMonitor) {}
+ default void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {}
/**
* Invoked when the ClientMonitor operation is complete. This abstracts away asynchronous
@@ -61,23 +61,11 @@ public abstract class BaseClientMonitor<T> extends LoggableMonitor
* @param clientMonitor Reference of the ClientMonitor that finished.
* @param success True if the operation completed successfully.
*/
- default void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
- boolean success) {}
- }
-
- /**
- * Interface that allows ClientMonitor subclasses to retrieve a fresh instance to the HAL.
- */
- public interface LazyDaemon<T> {
- /**
- * @return A fresh instance to the biometric HAL
- */
- T getDaemon();
+ default void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {}
}
protected final int mSequentialId;
@NonNull private final Context mContext;
- @NonNull protected final LazyDaemon<T> mLazyDaemon;
private final int mTargetUserId;
@NonNull private final String mOwner;
private final int mSensorId; // sensorId as configured by the framework
@@ -93,7 +81,6 @@ public abstract class BaseClientMonitor<T> extends LoggableMonitor
/**
* @param context system_server context
- * @param lazyDaemon pointer for lazy retrieval of the HAL
* @param token a unique token for the client
* @param listener recipient of related events (e.g. authentication)
* @param userId target user id for operation
@@ -104,14 +91,13 @@ public abstract class BaseClientMonitor<T> extends LoggableMonitor
* @param statsAction One of {@link BiometricsProtoEnums} ACTION_* constants
* @param statsClient One of {@link BiometricsProtoEnums} CLIENT_* constants
*/
- public BaseClientMonitor(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
+ public BaseClientMonitor(@NonNull Context context,
@Nullable IBinder token, @Nullable ClientMonitorCallbackConverter listener, int userId,
@NonNull String owner, int cookie, int sensorId, int statsModality, int statsAction,
int statsClient) {
super(statsModality, statsAction, statsClient);
mSequentialId = sCount++;
mContext = context;
- mLazyDaemon = lazyDaemon;
mToken = token;
mListener = listener;
mTargetUserId = userId;
@@ -133,15 +119,7 @@ public abstract class BaseClientMonitor<T> extends LoggableMonitor
}
/**
- * Invoked if the scheduler is unable to start the ClientMonitor (for example the HAL is null).
- * If such a problem is detected, the scheduler will not invoke
- * {@link #start(Callback)}.
- */
- public abstract void unableToStart();
-
- /**
- * Starts the ClientMonitor's lifecycle. Invokes {@link #startHalOperation()} when internal book
- * keeping is complete.
+ * Starts the ClientMonitor's lifecycle.
* @param callback invoked when the operation is complete (succeeds, fails, etc)
*/
public void start(@NonNull Callback callback) {
@@ -149,10 +127,6 @@ public abstract class BaseClientMonitor<T> extends LoggableMonitor
mCallback.onClientStarted(this);
}
- /**
- * Starts the HAL operation specific to the ClientMonitor subclass.
- */
- protected abstract void startHalOperation();
public boolean isAlreadyDone() {
return mAlreadyDone;
@@ -221,10 +195,6 @@ public abstract class BaseClientMonitor<T> extends LoggableMonitor
return mSensorId;
}
- public T getFreshDaemon() {
- return mLazyDaemon.getDaemon();
- }
-
@Override
public String toString() {
return "{[" + mSequentialId + "] "
diff --git a/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java b/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java
index fecc6f0fa45e..aa7faf51b1b6 100644
--- a/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java
+++ b/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java
@@ -101,17 +101,34 @@ public class BiometricScheduler {
@Retention(RetentionPolicy.SOURCE)
@interface OperationState {}
- @NonNull final BaseClientMonitor<?> mClientMonitor;
+ @NonNull final BaseClientMonitor mClientMonitor;
@Nullable final BaseClientMonitor.Callback mClientCallback;
@OperationState int mState;
- Operation(@NonNull BaseClientMonitor<?> clientMonitor,
+ Operation(@NonNull BaseClientMonitor clientMonitor,
@Nullable BaseClientMonitor.Callback callback) {
this.mClientMonitor = clientMonitor;
this.mClientCallback = callback;
mState = STATE_WAITING_IN_QUEUE;
}
+ public boolean isHalOperation() {
+ return mClientMonitor instanceof HalClientMonitor<?>;
+ }
+
+ /**
+ * @return true if the operation requires the HAL, and the HAL is null.
+ */
+ public boolean isUnstartableHalOperation() {
+ if (isHalOperation()) {
+ final HalClientMonitor<?> client = (HalClientMonitor<?>) mClientMonitor;
+ if (client.getFreshDaemon() == null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
@Override
public String toString() {
return mClientMonitor + ", State: " + mState;
@@ -188,7 +205,7 @@ public class BiometricScheduler {
// starting the next client).
public class InternalCallback implements BaseClientMonitor.Callback {
@Override
- public void onClientStarted(@NonNull BaseClientMonitor<?> clientMonitor) {
+ public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {
Slog.d(getTag(), "[Started] " + clientMonitor);
if (mCurrentOperation.mClientCallback != null) {
mCurrentOperation.mClientCallback.onClientStarted(clientMonitor);
@@ -196,7 +213,7 @@ public class BiometricScheduler {
}
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor, boolean success) {
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
mHandler.post(() -> {
if (mCurrentOperation == null) {
Slog.e(getTag(), "[Finishing] " + clientMonitor
@@ -276,7 +293,7 @@ public class BiometricScheduler {
}
mCurrentOperation = mPendingOperations.poll();
- final BaseClientMonitor<?> currentClient = mCurrentOperation.mClientMonitor;
+ final BaseClientMonitor currentClient = mCurrentOperation.mClientMonitor;
// If the operation at the front of the queue has been marked for cancellation, send
// ERROR_CANCELED. No need to start this client.
@@ -305,7 +322,9 @@ public class BiometricScheduler {
// to arrive at the head of the queue, before pinging it to start.
final boolean shouldStartNow = currentClient.getCookie() == 0;
if (shouldStartNow) {
- if (mCurrentOperation.mClientMonitor.getFreshDaemon() == null) {
+ if (mCurrentOperation.isUnstartableHalOperation()) {
+ final HalClientMonitor<?> halClientMonitor =
+ (HalClientMonitor<?>) mCurrentOperation.mClientMonitor;
// Note down current length of queue
final int pendingOperationsLength = mPendingOperations.size();
final Operation lastOperation = mPendingOperations.peekLast();
@@ -315,7 +334,7 @@ public class BiometricScheduler {
// For current operations, 1) unableToStart, which notifies the caller-side, then
// 2) notify operation's callback, to notify applicable system service that the
// operation failed.
- mCurrentOperation.mClientMonitor.unableToStart();
+ halClientMonitor.unableToStart();
if (mCurrentOperation.mClientCallback != null) {
mCurrentOperation.mClientCallback.onClientFinished(
mCurrentOperation.mClientMonitor, false /* success */);
@@ -331,7 +350,9 @@ public class BiometricScheduler {
+ ", expected length: " + pendingOperationsLength);
break;
}
- operation.mClientMonitor.unableToStart();
+ if (operation.isHalOperation()) {
+ ((HalClientMonitor<?>) operation.mClientMonitor).unableToStart();
+ }
if (operation.mClientCallback != null) {
operation.mClientCallback.onClientFinished(operation.mClientMonitor,
false /* success */);
@@ -401,10 +422,12 @@ public class BiometricScheduler {
return;
}
- if (mCurrentOperation.mClientMonitor.getFreshDaemon() == null) {
+ if (mCurrentOperation.isUnstartableHalOperation()) {
Slog.e(getTag(), "[Unable To Start] Prepared client: " + mCurrentOperation);
// This is BiometricPrompt trying to auth but something's wrong with the HAL.
- mCurrentOperation.mClientMonitor.unableToStart();
+ final HalClientMonitor<?> halClientMonitor =
+ (HalClientMonitor<?>) mCurrentOperation.mClientMonitor;
+ halClientMonitor.unableToStart();
if (mCurrentOperation.mClientCallback != null) {
mCurrentOperation.mClientCallback.onClientFinished(mCurrentOperation.mClientMonitor,
false /* success */);
@@ -423,7 +446,7 @@ public class BiometricScheduler {
*
* @param clientMonitor operation to be scheduled
*/
- public void scheduleClientMonitor(@NonNull BaseClientMonitor<?> clientMonitor) {
+ public void scheduleClientMonitor(@NonNull BaseClientMonitor clientMonitor) {
scheduleClientMonitor(clientMonitor, null /* clientFinishCallback */);
}
@@ -434,7 +457,7 @@ public class BiometricScheduler {
* @param clientCallback optional callback, invoked when the client is finished, but
* before it has been removed from the queue.
*/
- public void scheduleClientMonitor(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void scheduleClientMonitor(@NonNull BaseClientMonitor clientMonitor,
@Nullable BaseClientMonitor.Callback clientCallback) {
// 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.
@@ -537,7 +560,7 @@ public class BiometricScheduler {
/**
* @return the current operation
*/
- public BaseClientMonitor<?> getCurrentClient() {
+ public BaseClientMonitor getCurrentClient() {
if (mCurrentOperation == null) {
return null;
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java
index 7f01fdac608f..6a622c339d0b 100644
--- a/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java
@@ -23,7 +23,7 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.util.Slog;
-public abstract class GenerateChallengeClient<T> extends BaseClientMonitor<T> {
+public abstract class GenerateChallengeClient<T> extends HalClientMonitor<T> {
private static final String TAG = "GenerateChallengeClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/HalClientMonitor.java b/services/core/java/com/android/server/biometrics/sensors/HalClientMonitor.java
new file mode 100644
index 000000000000..63cd4125262d
--- /dev/null
+++ b/services/core/java/com/android/server/biometrics/sensors/HalClientMonitor.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.biometrics.sensors;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.hardware.biometrics.BiometricsProtoEnums;
+import android.os.IBinder;
+
+/**
+ * Abstract {@link BaseClientMonitor} implementation that supports HAL operations.
+ * @param <T> HAL template
+ */
+public abstract class HalClientMonitor<T> extends BaseClientMonitor {
+ /**
+ * Interface that allows ClientMonitor subclasses to retrieve a fresh instance to the HAL.
+ */
+ public interface LazyDaemon<T> {
+ /**
+ * @return A fresh instance to the biometric HAL
+ */
+ T getDaemon();
+ }
+
+ /**
+ * Starts the HAL operation specific to the ClientMonitor subclass.
+ */
+ protected abstract void startHalOperation();
+
+ /**
+ * Invoked if the scheduler is unable to start the ClientMonitor (for example the HAL is null).
+ * If such a problem is detected, the scheduler will not invoke
+ * {@link #start(Callback)}.
+ */
+ public abstract void unableToStart();
+
+ @NonNull
+ protected final LazyDaemon<T> mLazyDaemon;
+
+ /**
+ * @param context system_server context
+ * @param lazyDaemon pointer for lazy retrieval of the HAL
+ * @param token a unique token for the client
+ * @param listener recipient of related events (e.g. authentication)
+ * @param userId target user id for operation
+ * @param owner name of the client that owns this
+ * @param cookie BiometricPrompt authentication cookie (to be moved into a subclass soon)
+ * @param sensorId ID of the sensor that the operation should be requested of
+ * @param statsModality One of {@link BiometricsProtoEnums} MODALITY_* constants
+ * @param statsAction One of {@link BiometricsProtoEnums} ACTION_* constants
+ * @param statsClient One of {@link BiometricsProtoEnums} CLIENT_* constants
+ */
+ public HalClientMonitor(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
+ @Nullable IBinder token, @Nullable ClientMonitorCallbackConverter listener, int userId,
+ @NonNull String owner, int cookie, int sensorId, int statsModality, int statsAction,
+ int statsClient) {
+ super(context, token, listener, userId, owner, cookie, sensorId, statsModality,
+ statsAction, statsClient);
+ mLazyDaemon = lazyDaemon;
+ }
+
+ @Nullable
+ public T getFreshDaemon() {
+ return mLazyDaemon.getDaemon();
+ }
+}
diff --git a/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java b/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
index edc7edccaf7b..8529e810f9a1 100644
--- a/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
@@ -39,7 +39,7 @@ import java.util.Map;
* {@link #onRemoved(BiometricAuthenticator.Identifier, int)} returns true/
*/
public abstract class InternalCleanupClient<S extends BiometricAuthenticator.Identifier, T>
- extends BaseClientMonitor<T> implements EnumerateConsumer, RemovalConsumer {
+ extends HalClientMonitor<T> implements EnumerateConsumer, RemovalConsumer {
private static final String TAG = "Biometrics/InternalCleanupClient";
@@ -60,11 +60,11 @@ public abstract class InternalCleanupClient<S extends BiometricAuthenticator.Ide
private final BiometricUtils<S> mBiometricUtils;
private final Map<Integer, Long> mAuthenticatorIds;
private final List<S> mEnrolledList;
- private BaseClientMonitor<T> mCurrentTask;
+ private BaseClientMonitor mCurrentTask;
private final Callback mEnumerateCallback = new Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor, boolean success) {
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
final List<BiometricAuthenticator.Identifier> unknownHALTemplates =
((InternalEnumerateClient<T>) mCurrentTask).getUnknownHALTemplates();
@@ -88,7 +88,7 @@ public abstract class InternalCleanupClient<S extends BiometricAuthenticator.Ide
private final Callback mRemoveCallback = new Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor, boolean success) {
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
mCallback.onClientFinished(InternalCleanupClient.this, success);
}
};
diff --git a/services/core/java/com/android/server/biometrics/sensors/InternalEnumerateClient.java b/services/core/java/com/android/server/biometrics/sensors/InternalEnumerateClient.java
index 176e49c15716..2693f2f0e2de 100644
--- a/services/core/java/com/android/server/biometrics/sensors/InternalEnumerateClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/InternalEnumerateClient.java
@@ -31,7 +31,7 @@ import java.util.List;
/**
* Internal class to help clean up unknown templates in the HAL and Framework
*/
-public abstract class InternalEnumerateClient<T> extends BaseClientMonitor<T>
+public abstract class InternalEnumerateClient<T> extends HalClientMonitor<T>
implements EnumerateConsumer {
private static final String TAG = "Biometrics/InternalEnumerateClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/InvalidationClient.java b/services/core/java/com/android/server/biometrics/sensors/InvalidationClient.java
index 93728d0a8c47..630e5eaae377 100644
--- a/services/core/java/com/android/server/biometrics/sensors/InvalidationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/InvalidationClient.java
@@ -31,7 +31,7 @@ import java.util.Map;
* {@link InvalidationRequesterClient} for more info.
*/
public abstract class InvalidationClient<S extends BiometricAuthenticator.Identifier, T>
- extends BaseClientMonitor<T> {
+ extends HalClientMonitor<T> {
private static final String TAG = "InvalidationClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/InvalidationRequesterClient.java b/services/core/java/com/android/server/biometrics/sensors/InvalidationRequesterClient.java
index e16b2f81bc5f..3c8caf7b4a7f 100644
--- a/services/core/java/com/android/server/biometrics/sensors/InvalidationRequesterClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/InvalidationRequesterClient.java
@@ -55,8 +55,8 @@ import android.hardware.biometrics.IInvalidationCallback;
* switches, the framework can check if any sensor has the "invalidationInProgress" flag set. If so,
* the framework should re-start the invalidation process described above.
*/
-public abstract class InvalidationRequesterClient<S extends BiometricAuthenticator.Identifier, T>
- extends BaseClientMonitor<T> {
+public abstract class InvalidationRequesterClient<S extends BiometricAuthenticator.Identifier>
+ extends BaseClientMonitor {
private final BiometricManager mBiometricManager;
@NonNull private final BiometricUtils<S> mUtils;
@@ -71,9 +71,9 @@ public abstract class InvalidationRequesterClient<S extends BiometricAuthenticat
}
};
- public InvalidationRequesterClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
- int userId, int sensorId, @NonNull BiometricUtils<S> utils) {
- super(context, lazyDaemon, null /* token */, null /* listener */, userId,
+ public InvalidationRequesterClient(@NonNull Context context, int userId, int sensorId,
+ @NonNull BiometricUtils<S> utils) {
+ super(context, null /* token */, null /* listener */, userId,
context.getOpPackageName(), 0 /* cookie */, sensorId,
BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN,
BiometricsProtoEnums.CLIENT_UNKNOWN);
@@ -89,14 +89,4 @@ public abstract class InvalidationRequesterClient<S extends BiometricAuthenticat
mBiometricManager.invalidateAuthenticatorIds(getTargetUserId(), getSensorId(),
mInvalidationCallback);
}
-
- @Override
- public void unableToStart() {
-
- }
-
- @Override
- protected void startHalOperation() {
- // No HAL operations necessary
- }
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java b/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java
index cec6dde751a6..4ea48fdf05a0 100644
--- a/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java
@@ -31,7 +31,7 @@ import java.util.Map;
* A class to keep track of the remove state for a given client.
*/
public abstract class RemovalClient<S extends BiometricAuthenticator.Identifier, T>
- extends BaseClientMonitor<T> implements RemovalConsumer {
+ extends HalClientMonitor<T> implements RemovalConsumer {
private static final String TAG = "Biometrics/RemovalClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java
index 35cbcc00ee44..187193dcd50a 100644
--- a/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java
@@ -21,7 +21,7 @@ import android.content.Context;
import android.hardware.biometrics.BiometricsProtoEnums;
import android.os.IBinder;
-public abstract class RevokeChallengeClient<T> extends BaseClientMonitor<T> {
+public abstract class RevokeChallengeClient<T> extends HalClientMonitor<T> {
public RevokeChallengeClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
@NonNull IBinder token, @NonNull String owner, int sensorId) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGetAuthenticatorIdClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGetAuthenticatorIdClient.java
index acf0f08096aa..5fb194c75d77 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGetAuthenticatorIdClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGetAuthenticatorIdClient.java
@@ -23,11 +23,11 @@ import android.hardware.biometrics.face.ISession;
import android.os.RemoteException;
import android.util.Slog;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import java.util.Map;
-class FaceGetAuthenticatorIdClient extends BaseClientMonitor<ISession> {
+class FaceGetAuthenticatorIdClient extends HalClientMonitor<ISession> {
private static final String TAG = "FaceGetAuthenticatorIdClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java
index 058bcf669a3a..eac2f0dc1641 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java
@@ -46,6 +46,7 @@ import com.android.server.biometrics.Utils;
import com.android.server.biometrics.sensors.AuthenticationClient;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.PerformanceTracker;
import com.android.server.biometrics.sensors.face.FaceUtils;
@@ -73,7 +74,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
@NonNull private final String mHalInstanceName;
@NonNull @VisibleForTesting
final SparseArray<Sensor> mSensors; // Map of sensors that this HAL supports
- @NonNull private final BaseClientMonitor.LazyDaemon<IFace> mLazyDaemon;
+ @NonNull private final HalClientMonitor.LazyDaemon<IFace> mLazyDaemon;
@NonNull private final Handler mHandler;
@NonNull private final LockoutResetDispatcher mLockoutResetDispatcher;
@NonNull private final UsageStats mUsageStats;
@@ -87,7 +88,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
public void onTaskStackChanged() {
mHandler.post(() -> {
for (int i = 0; i < mSensors.size(); i++) {
- final BaseClientMonitor<?> client = mSensors.valueAt(i).getScheduler()
+ final BaseClientMonitor client = mSensors.valueAt(i).getScheduler()
.getCurrentClient();
if (!(client instanceof AuthenticationClient)) {
Slog.e(getTag(), "Task stack changed for client: " + client);
@@ -181,7 +182,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
return mDaemon;
}
- private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor<?> client) {
+ private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor client) {
if (!mSensors.contains(sensorId)) {
throw new IllegalStateException("Unable to schedule client: " + client
+ " for sensor: " + sensorId);
@@ -189,7 +190,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client);
}
- private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor<?> client,
+ private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor client,
BaseClientMonitor.Callback callback) {
if (!mSensors.contains(sensorId)) {
throw new IllegalStateException("Unable to schedule client: " + client
@@ -390,7 +391,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
ENROLL_TIMEOUT_SEC, previewSurface, sensorId, maxTemplatesPerUser);
scheduleForSensor(sensorId, client, new BaseClientMonitor.Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
boolean success) {
if (success) {
scheduleLoadAuthenticatorIdsForUser(sensorId, userId);
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceResetLockoutClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceResetLockoutClient.java
index 7edeb7b73a81..f355158d5727 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceResetLockoutClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceResetLockoutClient.java
@@ -26,7 +26,7 @@ import android.os.RemoteException;
import android.util.Slog;
import com.android.server.biometrics.HardwareAuthTokenUtils;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.LockoutCache;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.LockoutTracker;
@@ -36,7 +36,7 @@ import com.android.server.biometrics.sensors.LockoutTracker;
* Updates the framework's lockout cache and notifies clients such as Keyguard when lockout is
* cleared.
*/
-public class FaceResetLockoutClient extends BaseClientMonitor<ISession> {
+public class FaceResetLockoutClient extends HalClientMonitor<ISession> {
private static final String TAG = "FaceResetLockoutClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
index 90df726ee03c..82ad387ab9f2 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
@@ -48,6 +48,7 @@ import com.android.server.biometrics.sensors.AuthenticationConsumer;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricScheduler;
import com.android.server.biometrics.sensors.EnumerateConsumer;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.Interruptable;
import com.android.server.biometrics.sensors.LockoutCache;
import com.android.server.biometrics.sensors.LockoutConsumer;
@@ -73,7 +74,7 @@ public class Sensor implements IBinder.DeathRecipient {
@NonNull private final BiometricScheduler mScheduler;
@NonNull private final LockoutCache mLockoutCache;
@NonNull private final Map<Integer, Long> mAuthenticatorIds;
- @NonNull private final BaseClientMonitor.LazyDaemon<ISession> mLazySession;
+ @NonNull private final HalClientMonitor.LazyDaemon<ISession> mLazySession;
@Nullable private Session mCurrentSession;
static class Session {
@@ -136,7 +137,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onChallengeGenerated(long challenge) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FaceGenerateChallengeClient)) {
Slog.e(mTag, "onChallengeGenerated for wrong client: "
+ Utils.getClientName(client));
@@ -152,7 +153,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onChallengeRevoked(long challenge) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FaceRevokeChallengeClient)) {
Slog.e(mTag, "onChallengeRevoked for wrong client: "
+ Utils.getClientName(client));
@@ -168,7 +169,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onAcquired(byte info, int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AcquisitionClient)) {
Slog.e(mTag, "onAcquired for non-acquisition client: "
+ Utils.getClientName(client));
@@ -183,7 +184,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onError(byte error, int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
Slog.d(mTag, "onError"
+ ", client: " + Utils.getClientName(client)
+ ", error: " + error
@@ -206,7 +207,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onEnrollmentProgress(int enrollmentId, int remaining) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FaceEnrollClient)) {
Slog.e(mTag, "onEnrollmentProgress for non-enroll client: "
+ Utils.getClientName(client));
@@ -226,7 +227,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticationSucceeded(int enrollmentId, HardwareAuthToken hat) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationConsumer)) {
Slog.e(mTag, "onAuthenticationSucceeded for non-authentication consumer: "
+ Utils.getClientName(client));
@@ -248,7 +249,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticationFailed() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationConsumer)) {
Slog.e(mTag, "onAuthenticationFailed for non-authentication consumer: "
+ Utils.getClientName(client));
@@ -266,7 +267,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onLockoutTimed(long durationMillis) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof LockoutConsumer)) {
Slog.e(mTag, "onLockoutTimed for non-lockout consumer: "
+ Utils.getClientName(client));
@@ -281,7 +282,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onLockoutPermanent() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof LockoutConsumer)) {
Slog.e(mTag, "onLockoutPermanent for non-lockout consumer: "
+ Utils.getClientName(client));
@@ -296,7 +297,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onLockoutCleared() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FaceResetLockoutClient)) {
Slog.e(mTag, "onLockoutCleared for non-resetLockout client: "
+ Utils.getClientName(client));
@@ -316,7 +317,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onEnrollmentsEnumerated(int[] enrollmentIds) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof EnumerateConsumer)) {
Slog.e(mTag, "onEnrollmentsEnumerated for non-enumerate consumer: "
+ Utils.getClientName(client));
@@ -339,7 +340,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onEnrollmentsRemoved(int[] enrollmentIds) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof RemovalConsumer)) {
Slog.e(mTag, "onRemoved for non-removal consumer: "
+ Utils.getClientName(client));
@@ -361,7 +362,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticatorIdRetrieved(long authenticatorId) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FaceGetAuthenticatorIdClient)) {
Slog.e(mTag, "onAuthenticatorIdRetrieved for wrong consumer: "
+ Utils.getClientName(client));
@@ -377,7 +378,7 @@ public class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticatorIdInvalidated(long newAuthenticatorId) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FaceInvalidationClient)) {
Slog.e(mTag, "onAuthenticatorIdInvalidated for wrong consumer: "
+ Utils.getClientName(client));
@@ -410,7 +411,7 @@ public class Sensor implements IBinder.DeathRecipient {
};
}
- @NonNull BaseClientMonitor.LazyDaemon<ISession> getLazySession() {
+ @NonNull HalClientMonitor.LazyDaemon<ISession> getLazySession() {
return mLazySession;
}
@@ -491,7 +492,7 @@ public class Sensor implements IBinder.DeathRecipient {
public void binderDied() {
Slog.e(mTag, "Binder died");
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (client instanceof Interruptable) {
Slog.e(mTag, "Sending ERROR_HW_UNAVAILABLE for client: " + client);
final Interruptable interruptable = (Interruptable) client;
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
index 85938360d4ae..8abeef65bf9f 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
@@ -62,6 +62,7 @@ import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricScheduler;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
import com.android.server.biometrics.sensors.EnumerateConsumer;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.Interruptable;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.LockoutTracker;
@@ -103,7 +104,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
@NonNull private final Context mContext;
@NonNull private final BiometricScheduler mScheduler;
@NonNull private final Handler mHandler;
- @NonNull private final BaseClientMonitor.LazyDaemon<IBiometricsFace> mLazyDaemon;
+ @NonNull private final HalClientMonitor.LazyDaemon<IBiometricsFace> mLazyDaemon;
@NonNull private final LockoutResetDispatcher mLockoutResetDispatcher;
@NonNull private final LockoutHalImpl mLockoutTracker;
@NonNull private final UsageStats mUsageStats;
@@ -170,7 +171,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
.getUniqueName(mContext, userId);
final Face face = new Face(name, faceId, deviceId);
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FaceEnrollClient)) {
Slog.e(TAG, "onEnrollResult for non-enroll client: "
+ Utils.getClientName(client));
@@ -186,7 +187,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
public void onAuthenticated(long deviceId, int faceId, int userId,
ArrayList<Byte> token) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationConsumer)) {
Slog.e(TAG, "onAuthenticated for non-authentication consumer: "
+ Utils.getClientName(client));
@@ -205,7 +206,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
public void onAcquired(long deviceId, int userId, int acquiredInfo,
int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AcquisitionClient)) {
Slog.e(TAG, "onAcquired for non-acquire client: "
+ Utils.getClientName(client));
@@ -221,7 +222,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
@Override
public void onError(long deviceId, int userId, int error, int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
Slog.d(TAG, "handleError"
+ ", client: " + (client != null ? client.getOwnerString() : null)
+ ", error: " + error
@@ -247,7 +248,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
@Override
public void onRemoved(long deviceId, ArrayList<Integer> removed, int userId) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof RemovalConsumer)) {
Slog.e(TAG, "onRemoved for non-removal consumer: "
+ Utils.getClientName(client));
@@ -278,7 +279,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
@Override
public void onEnumerate(long deviceId, ArrayList<Integer> faceIds, int userId) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof EnumerateConsumer)) {
Slog.e(TAG, "onEnumerate for non-enumerate consumer: "
+ Utils.getClientName(client));
@@ -376,7 +377,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
mDaemon = null;
mCurrentUserId = UserHandle.USER_NULL;
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (client instanceof Interruptable) {
Slog.e(TAG, "Sending ERROR_HW_UNAVAILABLE for client: " + client);
final Interruptable interruptable = (Interruptable) client;
@@ -530,7 +531,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
mSensorId, mCurrentChallengeOwner);
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override
- public void onClientStarted(@NonNull BaseClientMonitor<?> clientMonitor) {
+ public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {
if (client != clientMonitor) {
Slog.e(TAG, "scheduleGenerateChallenge onClientStarted, mismatched client."
+ " Expecting: " + client + ", received: " + clientMonitor);
@@ -559,7 +560,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
mLazyDaemon, token, opPackageName, mSensorId);
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
boolean success) {
if (client != clientMonitor) {
Slog.e(TAG, "scheduleRevokeChallenge, mismatched client."
@@ -615,7 +616,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
boolean success) {
if (success) {
// Update authenticatorIds
@@ -727,7 +728,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override
public void onClientFinished(
- @NonNull BaseClientMonitor<?> clientMonitor, boolean success) {
+ @NonNull BaseClientMonitor clientMonitor, boolean success) {
if (success && feature == BiometricFaceConstants.FEATURE_REQUIRE_ATTENTION) {
final int settingsValue = client.getValue() ? 1 : 0;
Slog.d(TAG, "Updating attention value for user: " + userId
@@ -864,7 +865,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
hasEnrolled, mAuthenticatorIds);
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
boolean success) {
if (success) {
mCurrentUserId = targetUserId;
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java
index d30c9b102e6b..442303b037fb 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java
@@ -27,14 +27,14 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.util.Slog;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
+import com.android.server.biometrics.sensors.HalClientMonitor;
/**
* Face-specific getFeature client supporting the {@link android.hardware.biometrics.face.V1_0}
* and {@link android.hardware.biometrics.face.V1_1} HIDL interfaces.
*/
-public class FaceGetFeatureClient extends BaseClientMonitor<IBiometricsFace> {
+public class FaceGetFeatureClient extends HalClientMonitor<IBiometricsFace> {
private static final String TAG = "FaceGetFeatureClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceResetLockoutClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceResetLockoutClient.java
index bb8386099109..e0548e073a98 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceResetLockoutClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceResetLockoutClient.java
@@ -23,7 +23,7 @@ import android.hardware.biometrics.face.V1_0.IBiometricsFace;
import android.os.RemoteException;
import android.util.Slog;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import java.util.ArrayList;
@@ -31,7 +31,7 @@ import java.util.ArrayList;
* Face-specific resetLockout client supporting the {@link android.hardware.biometrics.face.V1_0}
* and {@link android.hardware.biometrics.face.V1_1} HIDL interfaces.
*/
-public class FaceResetLockoutClient extends BaseClientMonitor<IBiometricsFace> {
+public class FaceResetLockoutClient extends HalClientMonitor<IBiometricsFace> {
private static final String TAG = "FaceResetLockoutClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceSetFeatureClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceSetFeatureClient.java
index 0fb0de2a65f3..43560434f147 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceSetFeatureClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceSetFeatureClient.java
@@ -25,8 +25,8 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.util.Slog;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import java.util.ArrayList;
@@ -34,7 +34,7 @@ import java.util.ArrayList;
* Face-specific setFeature client supporting the {@link android.hardware.biometrics.face.V1_0}
* and {@link android.hardware.biometrics.face.V1_1} HIDL interfaces.
*/
-public class FaceSetFeatureClient extends BaseClientMonitor<IBiometricsFace> {
+public class FaceSetFeatureClient extends HalClientMonitor<IBiometricsFace> {
private static final String TAG = "FaceSetFeatureClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceUpdateActiveUserClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceUpdateActiveUserClient.java
index 78ee71486b92..0e72f941b4d2 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceUpdateActiveUserClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceUpdateActiveUserClient.java
@@ -24,12 +24,12 @@ import android.os.Environment;
import android.os.RemoteException;
import android.util.Slog;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import java.io.File;
import java.util.Map;
-public class FaceUpdateActiveUserClient extends BaseClientMonitor<IBiometricsFace> {
+public class FaceUpdateActiveUserClient extends HalClientMonitor<IBiometricsFace> {
private static final String TAG = "FaceUpdateActiveUserClient";
private static final String FACE_DATA_DIR = "facedata";
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGetAuthenticatorIdClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGetAuthenticatorIdClient.java
index 817004149389..02d4ac3dd98e 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGetAuthenticatorIdClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGetAuthenticatorIdClient.java
@@ -23,11 +23,11 @@ import android.hardware.biometrics.fingerprint.ISession;
import android.os.RemoteException;
import android.util.Slog;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import java.util.Map;
-class FingerprintGetAuthenticatorIdClient extends BaseClientMonitor<ISession> {
+class FingerprintGetAuthenticatorIdClient extends HalClientMonitor<ISession> {
private static final String TAG = "FingerprintGetAuthenticatorIdClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
index d65ecfffcf79..f1dfb52b6930 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
@@ -46,6 +46,7 @@ import com.android.server.biometrics.Utils;
import com.android.server.biometrics.sensors.AuthenticationClient;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.PerformanceTracker;
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
@@ -74,7 +75,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
@NonNull private final String mHalInstanceName;
@NonNull @VisibleForTesting
final SparseArray<Sensor> mSensors; // Map of sensors that this HAL supports
- @NonNull private final BaseClientMonitor.LazyDaemon<IFingerprint> mLazyDaemon;
+ @NonNull private final HalClientMonitor.LazyDaemon<IFingerprint> mLazyDaemon;
@NonNull private final Handler mHandler;
@NonNull private final LockoutResetDispatcher mLockoutResetDispatcher;
@NonNull private final ActivityTaskManager mActivityTaskManager;
@@ -88,7 +89,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
public void onTaskStackChanged() {
mHandler.post(() -> {
for (int i = 0; i < mSensors.size(); i++) {
- final BaseClientMonitor<?> client = mSensors.valueAt(i).getScheduler()
+ final BaseClientMonitor client = mSensors.valueAt(i).getScheduler()
.getCurrentClient();
if (!(client instanceof AuthenticationClient)) {
Slog.e(getTag(), "Task stack changed for client: " + client);
@@ -187,7 +188,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
return mDaemon;
}
- private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor<?> client) {
+ private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor client) {
if (!mSensors.contains(sensorId)) {
throw new IllegalStateException("Unable to schedule client: " + client
+ " for sensor: " + sensorId);
@@ -195,7 +196,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client);
}
- private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor<?> client,
+ private void scheduleForSensor(int sensorId, @NonNull BaseClientMonitor client,
BaseClientMonitor.Callback callback) {
if (!mSensors.contains(sensorId)) {
throw new IllegalStateException("Unable to schedule client: " + client
@@ -373,7 +374,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
mUdfpsOverlayController, maxTemplatesPerUser, shouldLogMetrics);
scheduleForSensor(sensorId, client, new BaseClientMonitor.Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
boolean success) {
if (success) {
scheduleLoadAuthenticatorIdsForUser(sensorId, userId);
@@ -581,7 +582,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
@Override
public void onPointerDown(int sensorId, int x, int y, float minor, float major) {
- final BaseClientMonitor<?> client =
+ final BaseClientMonitor client =
mSensors.get(sensorId).getScheduler().getCurrentClient();
if (!(client instanceof Udfps)) {
Slog.e(getTag(), "onPointerDown received during client: " + client);
@@ -593,7 +594,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
@Override
public void onPointerUp(int sensorId) {
- final BaseClientMonitor<?> client =
+ final BaseClientMonitor client =
mSensors.get(sensorId).getScheduler().getCurrentClient();
if (!(client instanceof Udfps)) {
Slog.e(getTag(), "onPointerUp received during client: " + client);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintResetLockoutClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintResetLockoutClient.java
index 3bdcc1dc4a32..cd84cdfda5e5 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintResetLockoutClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintResetLockoutClient.java
@@ -26,7 +26,7 @@ import android.os.RemoteException;
import android.util.Slog;
import com.android.server.biometrics.HardwareAuthTokenUtils;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.LockoutCache;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.LockoutTracker;
@@ -36,7 +36,7 @@ import com.android.server.biometrics.sensors.LockoutTracker;
* Updates the framework's lockout cache and notifies clients such as Keyguard when lockout is
* cleared.
*/
-class FingerprintResetLockoutClient extends BaseClientMonitor<ISession> {
+class FingerprintResetLockoutClient extends HalClientMonitor<ISession> {
private static final String TAG = "FingerprintResetLockoutClient";
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
index c0f0577aac0e..911f6b48af41 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
@@ -48,6 +48,7 @@ import com.android.server.biometrics.sensors.AuthenticationConsumer;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricScheduler;
import com.android.server.biometrics.sensors.EnumerateConsumer;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.Interruptable;
import com.android.server.biometrics.sensors.LockoutCache;
import com.android.server.biometrics.sensors.LockoutConsumer;
@@ -78,7 +79,7 @@ class Sensor implements IBinder.DeathRecipient {
@NonNull private final Map<Integer, Long> mAuthenticatorIds;
@Nullable private Session mCurrentSession;
- @NonNull private final BaseClientMonitor.LazyDaemon<ISession> mLazySession;
+ @NonNull private final HalClientMonitor.LazyDaemon<ISession> mLazySession;
static class Session {
@NonNull private final String mTag;
@@ -136,7 +137,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onChallengeGenerated(long challenge) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintGenerateChallengeClient)) {
Slog.e(mTag, "onChallengeGenerated for wrong client: "
+ Utils.getClientName(client));
@@ -152,7 +153,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onChallengeRevoked(long challenge) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintRevokeChallengeClient)) {
Slog.e(mTag, "onChallengeRevoked for wrong client: "
+ Utils.getClientName(client));
@@ -168,7 +169,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onAcquired(byte info, int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AcquisitionClient)) {
Slog.e(mTag, "onAcquired for non-acquisition client: "
+ Utils.getClientName(client));
@@ -183,7 +184,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onError(byte error, int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
Slog.d(mTag, "onError"
+ ", client: " + Utils.getClientName(client)
+ ", error: " + error
@@ -206,7 +207,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onEnrollmentProgress(int enrollmentId, int remaining) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintEnrollClient)) {
Slog.e(mTag, "onEnrollmentProgress for non-enroll client: "
+ Utils.getClientName(client));
@@ -226,7 +227,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticationSucceeded(int enrollmentId, HardwareAuthToken hat) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationConsumer)) {
Slog.e(mTag, "onAuthenticationSucceeded for non-authentication consumer: "
+ Utils.getClientName(client));
@@ -249,7 +250,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticationFailed() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationConsumer)) {
Slog.e(mTag, "onAuthenticationFailed for non-authentication consumer: "
+ Utils.getClientName(client));
@@ -267,7 +268,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onLockoutTimed(long durationMillis) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof LockoutConsumer)) {
Slog.e(mTag, "onLockoutTimed for non-lockout consumer: "
+ Utils.getClientName(client));
@@ -282,7 +283,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onLockoutPermanent() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof LockoutConsumer)) {
Slog.e(mTag, "onLockoutPermanent for non-lockout consumer: "
+ Utils.getClientName(client));
@@ -297,7 +298,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onLockoutCleared() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintResetLockoutClient)) {
Slog.e(mTag, "onLockoutCleared for non-resetLockout client: "
+ Utils.getClientName(client));
@@ -313,7 +314,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onInteractionDetected() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintDetectClient)) {
Slog.e(mTag, "onInteractionDetected for non-detect client: "
+ Utils.getClientName(client));
@@ -329,7 +330,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onEnrollmentsEnumerated(int[] enrollmentIds) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof EnumerateConsumer)) {
Slog.e(mTag, "onEnrollmentsEnumerated for non-enumerate consumer: "
+ Utils.getClientName(client));
@@ -352,7 +353,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onEnrollmentsRemoved(int[] enrollmentIds) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof RemovalConsumer)) {
Slog.e(mTag, "onRemoved for non-removal consumer: "
+ Utils.getClientName(client));
@@ -374,7 +375,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticatorIdRetrieved(long authenticatorId) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintGetAuthenticatorIdClient)) {
Slog.e(mTag, "onAuthenticatorIdRetrieved for wrong consumer: "
+ Utils.getClientName(client));
@@ -390,7 +391,7 @@ class Sensor implements IBinder.DeathRecipient {
@Override
public void onAuthenticatorIdInvalidated(long newAuthenticatorId) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintInvalidationClient)) {
Slog.e(mTag, "onAuthenticatorIdInvalidated for wrong consumer: "
+ Utils.getClientName(client));
@@ -424,7 +425,7 @@ class Sensor implements IBinder.DeathRecipient {
};
}
- @NonNull BaseClientMonitor.LazyDaemon<ISession> getLazySession() {
+ @NonNull HalClientMonitor.LazyDaemon<ISession> getLazySession() {
return mLazySession;
}
@@ -505,7 +506,7 @@ class Sensor implements IBinder.DeathRecipient {
public void binderDied() {
Slog.e(mTag, "Binder died");
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (client instanceof Interruptable) {
Slog.e(mTag, "Sending ERROR_HW_UNAVAILABLE for client: " + client);
final Interruptable interruptable = (Interruptable) client;
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
index e57e675b4455..7a1219644eb4 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
@@ -62,6 +62,7 @@ import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricScheduler;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
import com.android.server.biometrics.sensors.EnumerateConsumer;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.Interruptable;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.LockoutTracker;
@@ -103,7 +104,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
private final LockoutResetDispatcher mLockoutResetDispatcher;
private final LockoutFrameworkImpl mLockoutTracker;
private final BiometricTaskStackListener mTaskStackListener;
- private final BaseClientMonitor.LazyDaemon<IBiometricsFingerprint> mLazyDaemon;
+ private final HalClientMonitor.LazyDaemon<IBiometricsFingerprint> mLazyDaemon;
private final Map<Integer, Long> mAuthenticatorIds;
@Nullable private IBiometricsFingerprint mDaemon;
@@ -116,7 +117,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@Override
public void onTaskStackChanged() {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationClient)) {
Slog.e(TAG, "Task stack changed for client: " + client);
return;
@@ -188,7 +189,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@Override
public void onEnrollResult(long deviceId, int fingerId, int groupId, int remaining) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof FingerprintEnrollClient)) {
Slog.e(TAG, "onEnrollResult for non-enroll client: "
+ Utils.getClientName(client));
@@ -213,7 +214,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@Override
public void onAcquired_2_2(long deviceId, int acquiredInfo, int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AcquisitionClient)) {
Slog.e(TAG, "onAcquired for non-acquisition client: "
+ Utils.getClientName(client));
@@ -229,7 +230,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
public void onAuthenticated(long deviceId, int fingerId, int groupId,
ArrayList<Byte> token) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationConsumer)) {
Slog.e(TAG, "onAuthenticated for non-authentication consumer: "
+ Utils.getClientName(client));
@@ -247,7 +248,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@Override
public void onError(long deviceId, int error, int vendorCode) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
Slog.d(TAG, "handleError"
+ ", client: " + Utils.getClientName(client)
+ ", error: " + error
@@ -273,7 +274,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
public void onRemoved(long deviceId, int fingerId, int groupId, int remaining) {
mHandler.post(() -> {
Slog.d(TAG, "Removed, fingerId: " + fingerId + ", remaining: " + remaining);
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof RemovalConsumer)) {
Slog.e(TAG, "onRemoved for non-removal consumer: "
+ Utils.getClientName(client));
@@ -289,7 +290,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@Override
public void onEnumerate(long deviceId, int fingerId, int groupId, int remaining) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof EnumerateConsumer)) {
Slog.e(TAG, "onEnumerate for non-enumerate consumer: "
+ Utils.getClientName(client));
@@ -379,7 +380,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
mDaemon = null;
mCurrentUserId = UserHandle.USER_NULL;
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (client instanceof Interruptable) {
Slog.e(TAG, "Sending ERROR_HW_UNAVAILABLE for client: " + client);
final Interruptable interruptable = (Interruptable) client;
@@ -486,7 +487,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
hasEnrolled, mAuthenticatorIds);
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
boolean success) {
if (success) {
mCurrentUserId = targetUserId;
@@ -560,7 +561,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
shouldLogMetrics);
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override
- public void onClientFinished(@NonNull BaseClientMonitor<?> clientMonitor,
+ public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
boolean success) {
if (success) {
// Update authenticatorIds
@@ -687,7 +688,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@Override
public void onPointerDown(int sensorId, int x, int y, float minor, float major) {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof Udfps)) {
Slog.w(TAG, "onFingerDown received during client: " + client);
return;
@@ -698,7 +699,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@Override
public void onPointerUp(int sensorId) {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof Udfps)) {
Slog.w(TAG, "onFingerDown received during client: " + client);
return;
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java
index 3ea23666b764..2394a70b20bb 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java
@@ -146,14 +146,14 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage
class TestableInternalCallback extends InternalCallback {
@Override
- public void onClientStarted(BaseClientMonitor<?> clientMonitor) {
+ public void onClientStarted(BaseClientMonitor clientMonitor) {
super.onClientStarted(clientMonitor);
Slog.d(TAG, "Client started: " + clientMonitor);
mFingerprint21.setDebugMessage("Started: " + clientMonitor);
}
@Override
- public void onClientFinished(BaseClientMonitor<?> clientMonitor, boolean success) {
+ public void onClientFinished(BaseClientMonitor clientMonitor, boolean success) {
super.onClientFinished(clientMonitor, success);
Slog.d(TAG, "Client finished: " + clientMonitor);
mFingerprint21.setDebugMessage("Finished: " + clientMonitor);
@@ -233,7 +233,7 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage
public void onAuthenticated(long deviceId, int fingerId, int groupId,
ArrayList<Byte> token) {
mHandler.post(() -> {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
if (!(client instanceof AuthenticationConsumer)) {
Slog.e(TAG, "Non authentication consumer: " + client);
return;
@@ -360,7 +360,7 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage
@Override
public void run() {
- final BaseClientMonitor<?> client = mScheduler.getCurrentClient();
+ final BaseClientMonitor client = mScheduler.getCurrentClient();
// We don't care about FingerprintDetectClient, since accept/rejects are both OK. UDFPS
// rejects will just simulate the path where non-enrolled fingers are presented.
@@ -466,7 +466,7 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage
Slog.d(TAG, "onFingerDown");
final AuthenticationConsumer lastAuthenticatedConsumer =
mMockHalResultController.getLastAuthenticatedClient();
- final BaseClientMonitor<?> currentScheduledClient = mScheduler.getCurrentClient();
+ final BaseClientMonitor currentScheduledClient = mScheduler.getCurrentClient();
if (currentScheduledClient == null) {
Slog.d(TAG, "Not authenticating");
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintUpdateActiveUserClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintUpdateActiveUserClient.java
index 2a4c2ef5b181..f6ec4d943543 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintUpdateActiveUserClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintUpdateActiveUserClient.java
@@ -26,7 +26,7 @@ import android.os.RemoteException;
import android.os.SELinux;
import android.util.Slog;
-import com.android.server.biometrics.sensors.BaseClientMonitor;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import java.io.File;
import java.util.Map;
@@ -34,7 +34,7 @@ import java.util.Map;
/**
* Sets the HAL's current active user, and updates the framework's authenticatorId cache.
*/
-public class FingerprintUpdateActiveUserClient extends BaseClientMonitor<IBiometricsFingerprint> {
+public class FingerprintUpdateActiveUserClient extends HalClientMonitor<IBiometricsFingerprint> {
private static final String TAG = "FingerprintUpdateActiveUserClient";
private static final String FP_DATA_DIR = "fpdata";
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/BiometricSchedulerTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/BiometricSchedulerTest.java
index 600f6815d322..cc4541b438e0 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/BiometricSchedulerTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/BiometricSchedulerTest.java
@@ -71,11 +71,11 @@ public class BiometricSchedulerTest {
@Test
public void testClientDuplicateFinish_ignoredBySchedulerAndDoesNotCrash() {
- final BaseClientMonitor.LazyDaemon<Object> nonNullDaemon = () -> mock(Object.class);
+ final HalClientMonitor.LazyDaemon<Object> nonNullDaemon = () -> mock(Object.class);
- final BaseClientMonitor<Object> client1 =
+ final HalClientMonitor<Object> client1 =
new TestClientMonitor(mContext, mToken, nonNullDaemon);
- final BaseClientMonitor<Object> client2 =
+ final HalClientMonitor<Object> client2 =
new TestClientMonitor(mContext, mToken, nonNullDaemon);
mScheduler.scheduleClientMonitor(client1);
mScheduler.scheduleClientMonitor(client2);
@@ -89,8 +89,8 @@ public class BiometricSchedulerTest {
// Even if second client has a non-null daemon, it needs to be canceled.
Object daemon2 = mock(Object.class);
- final BaseClientMonitor.LazyDaemon<Object> lazyDaemon1 = () -> null;
- final BaseClientMonitor.LazyDaemon<Object> lazyDaemon2 = () -> daemon2;
+ final HalClientMonitor.LazyDaemon<Object> lazyDaemon1 = () -> null;
+ final HalClientMonitor.LazyDaemon<Object> lazyDaemon2 = () -> daemon2;
final TestClientMonitor client1 = new TestClientMonitor(mContext, mToken, lazyDaemon1);
final TestClientMonitor client2 = new TestClientMonitor(mContext, mToken, lazyDaemon2);
@@ -126,8 +126,8 @@ public class BiometricSchedulerTest {
// Second non-BiometricPrompt client has a valid daemon
final Object daemon2 = mock(Object.class);
- final BaseClientMonitor.LazyDaemon<Object> lazyDaemon1 = () -> null;
- final BaseClientMonitor.LazyDaemon<Object> lazyDaemon2 = () -> daemon2;
+ final HalClientMonitor.LazyDaemon<Object> lazyDaemon1 = () -> null;
+ final HalClientMonitor.LazyDaemon<Object> lazyDaemon2 = () -> daemon2;
final ClientMonitorCallbackConverter listener1 = mock(ClientMonitorCallbackConverter.class);
@@ -167,7 +167,7 @@ public class BiometricSchedulerTest {
@Test
public void testCancelNotInvoked_whenOperationWaitingForCookie() {
- final BaseClientMonitor.LazyDaemon<Object> lazyDaemon1 = () -> mock(Object.class);
+ final HalClientMonitor.LazyDaemon<Object> lazyDaemon1 = () -> mock(Object.class);
final BiometricPromptClientMonitor client1 = new BiometricPromptClientMonitor(mContext,
mToken, lazyDaemon1, mock(ClientMonitorCallbackConverter.class));
final BaseClientMonitor.Callback callback1 = mock(BaseClientMonitor.Callback.class);
@@ -207,7 +207,7 @@ public class BiometricSchedulerTest {
}
}
- private static class TestClientMonitor extends BaseClientMonitor<Object> {
+ private static class TestClientMonitor extends HalClientMonitor<Object> {
private boolean mUnableToStart;
private boolean mStarted;
@@ -223,7 +223,6 @@ public class BiometricSchedulerTest {
0 /* statsAction */, 0 /* statsClient */);
}
-
@Override
public void unableToStart() {
assertFalse(mUnableToStart);
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceProviderTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceProviderTest.java
index ffd43780bfbe..04a7122ba426 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceProviderTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceProviderTest.java
@@ -33,6 +33,7 @@ import androidx.test.filters.SmallTest;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricScheduler;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import org.junit.Before;
@@ -94,7 +95,7 @@ public class FaceProviderTest {
final BiometricScheduler scheduler =
mFaceProvider.mSensors.get(prop.commonProps.sensorId).getScheduler();
for (int i = 0; i < numFakeOperations; i++) {
- final BaseClientMonitor testMonitor = mock(BaseClientMonitor.class);
+ final HalClientMonitor testMonitor = mock(HalClientMonitor.class);
when(testMonitor.getFreshDaemon()).thenReturn(new Object());
scheduler.scheduleClientMonitor(testMonitor);
}
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProviderTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProviderTest.java
index 175c4dacfa88..d149880e5505 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProviderTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProviderTest.java
@@ -33,6 +33,7 @@ import androidx.test.filters.SmallTest;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricScheduler;
+import com.android.server.biometrics.sensors.HalClientMonitor;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.fingerprint.GestureAvailabilityDispatcher;
@@ -97,7 +98,7 @@ public class FingerprintProviderTest {
final BiometricScheduler scheduler =
mFingerprintProvider.mSensors.get(prop.commonProps.sensorId).getScheduler();
for (int i = 0; i < numFakeOperations; i++) {
- final BaseClientMonitor testMonitor = mock(BaseClientMonitor.class);
+ final HalClientMonitor testMonitor = mock(HalClientMonitor.class);
when(testMonitor.getFreshDaemon()).thenReturn(new Object());
scheduler.scheduleClientMonitor(testMonitor);
}