From 8e6c6bd68f57ebdf5475d8753e07871ebd5c9b7c Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Thu, 3 Dec 2020 17:34:12 -0800 Subject: Update logic when multiple face sensors exist FaceService should get the provider for the specified sensor, instead of getting the first provider. Bug: 172957689 Test: atest CtsBiometricsTestCases Change-Id: I8a3074501e90901df1121cf988dc504cf0d04d7f --- .../biometrics/sensors/face/FaceService.java | 31 +++++++++++++--------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java b/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java index 7dc2cba0b974..cb56e8cd4b7f 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java @@ -127,17 +127,6 @@ public class FaceService extends SystemService implements BiometricServiceCallba return properties; } - @NonNull - private List getEnrolledFaces(int userId, String opPackageName) { - final Pair provider = getSingleProvider(); - if (provider == null) { - Slog.w(TAG, "Null provider for getEnrolledFaces, caller: " + opPackageName); - return Collections.emptyList(); - } - - return provider.second.getEnrolledFaces(provider.first, userId); - } - /** * Receives the incoming binder calls from FaceManager. */ @@ -438,6 +427,7 @@ public class FaceService extends SystemService implements BiometricServiceCallba pw.println("Dumping for sensorId: " + props.sensorId + ", provider: " + provider.getClass().getSimpleName()); provider.dumpInternal(props.sensorId, pw); + pw.println(); } } } @@ -471,7 +461,13 @@ public class FaceService extends SystemService implements BiometricServiceCallba Utils.checkPermission(getContext(), INTERACT_ACROSS_USERS); } - return FaceService.this.getEnrolledFaces(userId, opPackageName); + final ServiceProvider provider = getProviderForSensor(sensorId); + if (provider == null) { + Slog.w(TAG, "Null provider for getEnrolledFaces, caller: " + opPackageName); + return Collections.emptyList(); + } + + return provider.getEnrolledFaces(sensorId, userId); } @Override // Binder call @@ -482,7 +478,16 @@ public class FaceService extends SystemService implements BiometricServiceCallba Utils.checkPermission(getContext(), INTERACT_ACROSS_USERS); } - return !FaceService.this.getEnrolledFaces(userId, opPackageName).isEmpty(); + final ServiceProvider provider = getProviderForSensor(sensorId); + if (provider == null) { + Slog.w(TAG, "Null provider for hasEnrolledFaces, caller: " + opPackageName); + return false; + } + + final boolean enrolled = provider.getEnrolledFaces(sensorId, userId).size() > 0; + Slog.d(TAG, "hasEnrolledFaces, sensor: " + sensorId + ", enrolled: " + enrolled); + + return provider.getEnrolledFaces(sensorId, userId).size() > 0; } @Override // Binder call -- cgit v1.2.3-59-g8ed1b