summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/RemovalClient.java8
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/face/hidl/TestHal.java36
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java2
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/TestHal.java29
5 files changed, 66 insertions, 11 deletions
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 8197edc97a05..383efce5bb2a 100644
--- a/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java
@@ -65,12 +65,10 @@ public abstract class RemovalClient<S extends BiometricAuthenticator.Identifier,
}
@Override
- public void onRemoved(@Nullable BiometricAuthenticator.Identifier identifier, int remaining) {
+ public void onRemoved(@NonNull BiometricAuthenticator.Identifier identifier, int remaining) {
Slog.d(TAG, "onRemoved: " + identifier.getBiometricId() + " remaining: " + remaining);
- if (identifier != null) {
- mBiometricUtils.removeBiometricForUser(getContext(), getTargetUserId(),
- identifier.getBiometricId());
- }
+ mBiometricUtils.removeBiometricForUser(getContext(), getTargetUserId(),
+ identifier.getBiometricId());
try {
if (getListener() != null) {
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 79e361f531c7..4ffbe06c11ba 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
@@ -398,7 +398,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
private synchronized IBiometricsFace getDaemon() {
if (mTestHalEnabled) {
- final TestHal testHal = new TestHal();
+ final TestHal testHal = new TestHal(mContext, mSensorId);
testHal.setCallback(mHalResultController);
return testHal;
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/TestHal.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/TestHal.java
index 84aa6d9ad1f8..d9408599aa2b 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/TestHal.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/TestHal.java
@@ -16,23 +16,40 @@
package com.android.server.biometrics.sensors.face.hidl;
+import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.Context;
import android.hardware.biometrics.face.V1_0.FaceError;
import android.hardware.biometrics.face.V1_0.IBiometricsFace;
import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback;
import android.hardware.biometrics.face.V1_0.OptionalBool;
import android.hardware.biometrics.face.V1_0.OptionalUint64;
import android.hardware.biometrics.face.V1_0.Status;
+import android.hardware.face.Face;
import android.os.RemoteException;
import android.util.Slog;
+import com.android.server.biometrics.sensors.face.FaceUtils;
+
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
public class TestHal extends IBiometricsFace.Stub {
private static final String TAG = "face.hidl.TestHal";
+
+ @NonNull
+ private final Context mContext;
+ private final int mSensorId;
+
@Nullable
private IBiometricsFaceClientCallback mCallback;
+ private int mUserId;
+
+ TestHal(@NonNull Context context, int sensorId) {
+ mContext = context;
+ mSensorId = sensorId;
+ }
@Override
public OptionalUint64 setCallback(IBiometricsFaceClientCallback clientCallback) {
@@ -44,6 +61,7 @@ public class TestHal extends IBiometricsFace.Stub {
@Override
public int setActiveUser(int userId, String storePath) {
+ mUserId = userId;
return 0;
}
@@ -110,8 +128,20 @@ public class TestHal extends IBiometricsFace.Stub {
public int remove(int faceId) throws RemoteException {
Slog.w(TAG, "remove");
if (mCallback != null) {
- mCallback.onRemoved(0 /* deviceId */, new ArrayList<Integer>(Arrays.asList(faceId)),
- 0 /* userId */);
+ if (faceId == 0) {
+ // For this HAL interface, remove(0) means to remove all enrollments.
+ final List<Face> faces = FaceUtils.getInstance(mSensorId)
+ .getBiometricsForUser(mContext, mUserId);
+ final ArrayList<Integer> faceIds = new ArrayList<>();
+ for (Face face : faces) {
+ faceIds.add(face.getBiometricId());
+ }
+ mCallback.onRemoved(0 /* deviceId */, faceIds, mUserId);
+ } else {
+ mCallback.onRemoved(0 /* deviceId */,
+ new ArrayList<>(Collections.singletonList(faceId)),
+ mUserId);
+ }
}
return 0;
}
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 f2992cccbe09..e149ca9428dd 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
@@ -402,7 +402,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@VisibleForTesting
synchronized IBiometricsFingerprint getDaemon() {
if (mTestHalEnabled) {
- final TestHal testHal = new TestHal();
+ final TestHal testHal = new TestHal(mContext, mSensorId);
testHal.setNotify(mHalResultController);
return testHal;
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/TestHal.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/TestHal.java
index 129f6a61df04..986e92e244f0 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/TestHal.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/TestHal.java
@@ -16,22 +16,38 @@
package com.android.server.biometrics.sensors.fingerprint.hidl;
+import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.Context;
import android.hardware.biometrics.fingerprint.V2_1.FingerprintError;
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprintClientCallback;
import android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint;
+import android.hardware.fingerprint.Fingerprint;
import android.os.RemoteException;
import android.util.Slog;
+import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
+
+import java.util.List;
+
/**
* Test HAL that provides only provides no-ops.
*/
public class TestHal extends IBiometricsFingerprint.Stub {
private static final String TAG = "fingerprint.hidl.TestHal";
+ @NonNull
+ private final Context mContext;
+ private final int mSensorId;
+
@Nullable
private IBiometricsFingerprintClientCallback mCallback;
+ TestHal(@NonNull Context context, int sensorId) {
+ mContext = context;
+ mSensorId = sensorId;
+ }
+
@Override
public boolean isUdfps(int sensorId) {
return false;
@@ -96,7 +112,18 @@ public class TestHal extends IBiometricsFingerprint.Stub {
public int remove(int gid, int fid) throws RemoteException {
Slog.w(TAG, "Remove");
if (mCallback != null) {
- mCallback.onRemoved(0 /* deviceId */, fid, gid, 0 /* remaining */);
+ if (fid == 0) {
+ // For this HAL interface, remove(0) means to remove all enrollments.
+ final List<Fingerprint> fingerprints = FingerprintUtils.getInstance(mSensorId)
+ .getBiometricsForUser(mContext, gid);
+ for (int i = 0; i < fingerprints.size(); i++) {
+ final Fingerprint fp = fingerprints.get(i);
+ mCallback.onRemoved(0 /* deviceId */, fp.getBiometricId(), gid,
+ fingerprints.size() - i - 1);
+ }
+ } else {
+ mCallback.onRemoved(0 /* deviceId */, fid, gid, 0 /* remaining */);
+ }
}
return 0;
}