diff options
| author | 2021-01-14 14:56:54 -0800 | |
|---|---|---|
| committer | 2021-01-14 17:59:08 -0800 | |
| commit | b9bb08eb83ea577c23fb9a53511d49e162fed42e (patch) | |
| tree | fc1a6ab012a12c83e3547089f74214967756532b | |
| parent | 8b2f2602f9772b11e2aef4e6188766bc4aa23c42 (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
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); } |