diff options
| -rw-r--r-- | services/core/java/com/android/server/biometrics/sensors/BiometricServiceBase.java | 15 | ||||
| -rw-r--r-- | services/core/java/com/android/server/biometrics/sensors/EnrollClient.java | 31 |
2 files changed, 17 insertions, 29 deletions
diff --git a/services/core/java/com/android/server/biometrics/sensors/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/sensors/BiometricServiceBase.java index 1af492876400..9f5abd873b4f 100644 --- a/services/core/java/com/android/server/biometrics/sensors/BiometricServiceBase.java +++ b/services/core/java/com/android/server/biometrics/sensors/BiometricServiceBase.java @@ -105,6 +105,11 @@ public abstract class BiometricServiceBase<T> extends SystemService protected final ClientMonitor.FinishCallback mClientFinishCallback = (clientMonitor, success) -> { removeClient(clientMonitor); + // When enrollment finishes, update this group's authenticator id, as the HAL has + // already generated a new authenticator id when the new biometric is enrolled. + if (clientMonitor instanceof EnrollClient) { + updateActiveGroup(clientMonitor.getTargetUserId()); + } }; private IBiometricService mBiometricService; @@ -373,15 +378,7 @@ public abstract class BiometricServiceBase<T> extends SystemService } final EnrollClient enrollClient = (EnrollClient) client; - - if (enrollClient.onEnrollResult(identifier, remaining)) { - removeClient(enrollClient); - // When enrollment finishes, update this group's authenticator id, as the HAL has - // already generated a new authenticator id when the new biometric is enrolled. - if (identifier instanceof Fingerprint) { - updateActiveGroup(((Fingerprint)identifier).getGroupId()); - } - } + enrollClient.onEnrollResult(identifier, remaining); } protected void handleError(int error, int vendorCode) { diff --git a/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java index 939c4203ec88..a3d96778d177 100644 --- a/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java @@ -55,36 +55,27 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> { mShouldVibrate = shouldVibrate; } - public boolean onEnrollResult(BiometricAuthenticator.Identifier identifier, - int remaining) { - if (remaining == 0) { - mBiometricUtils.addBiometricForUser(getContext(), getTargetUserId(), identifier); - logOnEnrolled(getTargetUserId(), - System.currentTimeMillis() - mEnrollmentStartTimeMs, - true /* enrollSuccessful */); - } - notifyUserActivity(); - return sendEnrollResult(identifier, remaining); - } - - /* - * @return true if we're done. - */ - private boolean sendEnrollResult(BiometricAuthenticator.Identifier identifier, int remaining) { + public void onEnrollResult(BiometricAuthenticator.Identifier identifier, int remaining) { if (mShouldVibrate) { vibrateSuccess(); } + final ClientMonitorCallbackConverter listener = getListener(); try { - final ClientMonitorCallbackConverter listener = getListener(); if (listener != null) { listener.onEnrollResult(identifier, remaining); } - return remaining == 0; } catch (RemoteException e) { - Slog.w(TAG, "Failed to notify EnrollResult:", e); - return true; + Slog.e(TAG, "Remote exception", e); } + + if (remaining == 0) { + mBiometricUtils.addBiometricForUser(getContext(), getTargetUserId(), identifier); + logOnEnrolled(getTargetUserId(), System.currentTimeMillis() - mEnrollmentStartTimeMs, + true /* enrollSuccessful */); + mFinishCallback.onClientFinished(this, true /* success */); + } + notifyUserActivity(); } @Override |