Loading core/java/android/hardware/fingerprint/IFingerprintService.aidl +0 −6 Original line number Diff line number Diff line Loading @@ -117,12 +117,6 @@ interface IFingerprintService { // Returns whether the specified sensor is an under-display fingerprint sensor (UDFPS). boolean isUdfps(int sensorId); // Shows the UDFPS overlay. void showUdfpsOverlay(); // Hides the UDFPS overlay. void hideUdfpsOverlay(); // Sets the controller for managing the UDFPS overlay. void setUdfpsOverlayController(in IUdfpsOverlayController controller); } services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21.java +8 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; import android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprintClientCallback; import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.IFingerprintServiceReceiver; import android.hardware.fingerprint.IUdfpsOverlayController; import android.os.Handler; import android.os.IBinder; import android.os.IHwBinder; Loading Loading @@ -93,6 +94,7 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { private final Map<Integer, Long> mAuthenticatorIds; private IBiometricsFingerprint mDaemon; @Nullable private IUdfpsOverlayController mUdfpsOverlayController; private int mCurrentUserId = UserHandle.USER_NULL; /** Loading Loading @@ -464,7 +466,7 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { final FingerprintEnrollClient client = new FingerprintEnrollClient(mContext, mLazyDaemon, token, new ClientMonitorCallbackConverter(receiver), userId, hardwareAuthToken, opPackageName, FingerprintUtils.getInstance(), ENROLL_TIMEOUT_SEC, mSensorProperties.sensorId); ENROLL_TIMEOUT_SEC, mSensorProperties.sensorId, mUdfpsOverlayController); mScheduler.scheduleClientMonitor(client); }); Loading @@ -487,7 +489,7 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { mContext, mLazyDaemon, token, listener, userId, operationId, restricted, opPackageName, cookie, false /* requireConfirmation */, mSensorProperties.sensorId, isStrongBiometric, surface, statsClient, mTaskStackListener, mLockoutTracker); mTaskStackListener, mLockoutTracker, mUdfpsOverlayController); mScheduler.scheduleClientMonitor(client); }); } Loading Loading @@ -573,6 +575,10 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { return mSensorProperties.isUdfps; } void setUdfpsOverlayController(IUdfpsOverlayController controller) { mUdfpsOverlayController = controller; } void dumpProto(FileDescriptor fd) { PerformanceTracker tracker = PerformanceTracker.getInstanceForSensorId(mSensorProperties.sensorId); Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintAuthenticationClient.java +30 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.hardware.biometrics.BiometricConstants; import android.hardware.biometrics.BiometricFingerprintConstants; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; import android.hardware.fingerprint.IUdfpsOverlayController; import android.os.IBinder; import android.os.RemoteException; import android.util.Slog; Loading @@ -47,6 +48,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi private static final String TAG = "Biometrics/FingerprintAuthClient"; private final LockoutFrameworkImpl mLockoutFrameworkImpl; @Nullable private final IUdfpsOverlayController mUdfpsOverlayController; FingerprintAuthenticationClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFingerprint> lazyDaemon, @NonNull IBinder token, Loading @@ -54,12 +56,34 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi boolean restricted, @NonNull String owner, int cookie, boolean requireConfirmation, int sensorId, boolean isStrongBiometric, @Nullable Surface surface, int statsClient, @NonNull TaskStackListener taskStackListener, @NonNull LockoutFrameworkImpl lockoutTracker) { @NonNull LockoutFrameworkImpl lockoutTracker, @Nullable IUdfpsOverlayController udfpsOverlayController) { super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted, owner, cookie, requireConfirmation, sensorId, isStrongBiometric, BiometricsProtoEnums.MODALITY_FINGERPRINT, statsClient, taskStackListener, lockoutTracker); mLockoutFrameworkImpl = lockoutTracker; mUdfpsOverlayController = udfpsOverlayController; } private void showUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.showUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when showing the UDFPS overlay", e); } } } private void hideUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.hideUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when hiding the UDFPS overlay", e); } } } @Override Loading @@ -74,6 +98,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi if (authenticated) { resetFailedAttempts(getTargetUserId()); hideUdfpsOverlay(); mFinishCallback.onClientFinished(this, true /* success */); } else { final @LockoutTracker.LockoutMode int lockoutMode = Loading @@ -86,6 +111,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi // Send the error, but do not invoke the FinishCallback yet. Since lockout is not // controlled by the HAL, the framework must stop the sensor before finishing the // client. hideUdfpsOverlay(); onErrorInternal(errorCode, 0 /* vendorCode */, false /* finish */); cancel(); } Loading @@ -104,6 +130,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi @Override protected void startHalOperation() { showUdfpsOverlay(); try { // GroupId was never used. In fact, groupId is always the same as userId. getFreshDaemon().authenticate(mOperationId, getTargetUserId()); Loading @@ -111,12 +138,14 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi Slog.e(TAG, "Remote exception when requesting auth", e); onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE, 0 /* vendorCode */); hideUdfpsOverlay(); mFinishCallback.onClientFinished(this, false /* success */); } } @Override protected void stopHalOperation() { hideUdfpsOverlay(); try { getFreshDaemon().cancel(); } catch (RemoteException e) { Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintEnrollClient.java +30 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,12 @@ package com.android.server.biometrics.sensors.fingerprint; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.hardware.biometrics.BiometricFingerprintConstants; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; import android.hardware.fingerprint.IUdfpsOverlayController; import android.os.IBinder; import android.os.RemoteException; import android.util.Slog; Loading @@ -39,18 +41,43 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint private static final String TAG = "FingerprintEnrollClient"; @Nullable private final IUdfpsOverlayController mUdfpsOverlayController; FingerprintEnrollClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFingerprint> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull byte[] hardwareAuthToken, @NonNull String owner, @NonNull BiometricUtils utils, int timeoutSec, int sensorId) { int timeoutSec, int sensorId, @Nullable IUdfpsOverlayController udfpsOverlayController) { super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils, timeoutSec, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId, true /* shouldVibrate */); mUdfpsOverlayController = udfpsOverlayController; } private void showUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.showUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when showing the UDFPS overlay", e); } } } private void hideUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.hideUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when hiding the UDFPS overlay", e); } } } @Override protected void startHalOperation() { showUdfpsOverlay(); try { // GroupId was never used. In fact, groupId is always the same as userId. getFreshDaemon().enroll(mHardwareAuthToken, getTargetUserId(), mTimeoutSec); Loading @@ -58,12 +85,14 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint Slog.e(TAG, "Remote exception when requesting enroll", e); onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE, 0 /* vendorCode */); hideUdfpsOverlay(); mFinishCallback.onClientFinished(this, false /* success */); } } @Override protected void stopHalOperation() { hideUdfpsOverlay(); try { getFreshDaemon().cancel(); } catch (RemoteException e) { Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java +1 −30 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ public class FingerprintService extends SystemService { private final LockoutResetTracker mLockoutResetTracker; private final GestureAvailabilityTracker mGestureAvailabilityTracker; private Fingerprint21 mFingerprint21; private IUdfpsOverlayController mUdfpsOverlayController; /** * Receives the incoming binder calls from FingerprintManager. Loading Loading @@ -318,38 +317,10 @@ public class FingerprintService extends SystemService { return mFingerprint21.isUdfps(); } @Override public void showUdfpsOverlay() { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); if (mUdfpsOverlayController == null) { Slog.e(TAG, "showUdfpsOverlay | mUdfpsOverlayController is null"); return; } try { mUdfpsOverlayController.showUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "showUdfpsOverlay | RemoteException: ", e); } } @Override public void hideUdfpsOverlay() { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); if (mUdfpsOverlayController == null) { Slog.e(TAG, "hideUdfpsOverlay | mUdfpsOverlayController is null"); return; } try { mUdfpsOverlayController.hideUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "hideUdfpsOverlay | RemoteException: ", e); } } @Override public void setUdfpsOverlayController(IUdfpsOverlayController controller) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); mUdfpsOverlayController = controller; mFingerprint21.setUdfpsOverlayController(controller); } } Loading Loading
core/java/android/hardware/fingerprint/IFingerprintService.aidl +0 −6 Original line number Diff line number Diff line Loading @@ -117,12 +117,6 @@ interface IFingerprintService { // Returns whether the specified sensor is an under-display fingerprint sensor (UDFPS). boolean isUdfps(int sensorId); // Shows the UDFPS overlay. void showUdfpsOverlay(); // Hides the UDFPS overlay. void hideUdfpsOverlay(); // Sets the controller for managing the UDFPS overlay. void setUdfpsOverlayController(in IUdfpsOverlayController controller); }
services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21.java +8 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; import android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprintClientCallback; import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.IFingerprintServiceReceiver; import android.hardware.fingerprint.IUdfpsOverlayController; import android.os.Handler; import android.os.IBinder; import android.os.IHwBinder; Loading Loading @@ -93,6 +94,7 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { private final Map<Integer, Long> mAuthenticatorIds; private IBiometricsFingerprint mDaemon; @Nullable private IUdfpsOverlayController mUdfpsOverlayController; private int mCurrentUserId = UserHandle.USER_NULL; /** Loading Loading @@ -464,7 +466,7 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { final FingerprintEnrollClient client = new FingerprintEnrollClient(mContext, mLazyDaemon, token, new ClientMonitorCallbackConverter(receiver), userId, hardwareAuthToken, opPackageName, FingerprintUtils.getInstance(), ENROLL_TIMEOUT_SEC, mSensorProperties.sensorId); ENROLL_TIMEOUT_SEC, mSensorProperties.sensorId, mUdfpsOverlayController); mScheduler.scheduleClientMonitor(client); }); Loading @@ -487,7 +489,7 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { mContext, mLazyDaemon, token, listener, userId, operationId, restricted, opPackageName, cookie, false /* requireConfirmation */, mSensorProperties.sensorId, isStrongBiometric, surface, statsClient, mTaskStackListener, mLockoutTracker); mTaskStackListener, mLockoutTracker, mUdfpsOverlayController); mScheduler.scheduleClientMonitor(client); }); } Loading Loading @@ -573,6 +575,10 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { return mSensorProperties.isUdfps; } void setUdfpsOverlayController(IUdfpsOverlayController controller) { mUdfpsOverlayController = controller; } void dumpProto(FileDescriptor fd) { PerformanceTracker tracker = PerformanceTracker.getInstanceForSensorId(mSensorProperties.sensorId); Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintAuthenticationClient.java +30 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.hardware.biometrics.BiometricConstants; import android.hardware.biometrics.BiometricFingerprintConstants; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; import android.hardware.fingerprint.IUdfpsOverlayController; import android.os.IBinder; import android.os.RemoteException; import android.util.Slog; Loading @@ -47,6 +48,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi private static final String TAG = "Biometrics/FingerprintAuthClient"; private final LockoutFrameworkImpl mLockoutFrameworkImpl; @Nullable private final IUdfpsOverlayController mUdfpsOverlayController; FingerprintAuthenticationClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFingerprint> lazyDaemon, @NonNull IBinder token, Loading @@ -54,12 +56,34 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi boolean restricted, @NonNull String owner, int cookie, boolean requireConfirmation, int sensorId, boolean isStrongBiometric, @Nullable Surface surface, int statsClient, @NonNull TaskStackListener taskStackListener, @NonNull LockoutFrameworkImpl lockoutTracker) { @NonNull LockoutFrameworkImpl lockoutTracker, @Nullable IUdfpsOverlayController udfpsOverlayController) { super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted, owner, cookie, requireConfirmation, sensorId, isStrongBiometric, BiometricsProtoEnums.MODALITY_FINGERPRINT, statsClient, taskStackListener, lockoutTracker); mLockoutFrameworkImpl = lockoutTracker; mUdfpsOverlayController = udfpsOverlayController; } private void showUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.showUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when showing the UDFPS overlay", e); } } } private void hideUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.hideUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when hiding the UDFPS overlay", e); } } } @Override Loading @@ -74,6 +98,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi if (authenticated) { resetFailedAttempts(getTargetUserId()); hideUdfpsOverlay(); mFinishCallback.onClientFinished(this, true /* success */); } else { final @LockoutTracker.LockoutMode int lockoutMode = Loading @@ -86,6 +111,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi // Send the error, but do not invoke the FinishCallback yet. Since lockout is not // controlled by the HAL, the framework must stop the sensor before finishing the // client. hideUdfpsOverlay(); onErrorInternal(errorCode, 0 /* vendorCode */, false /* finish */); cancel(); } Loading @@ -104,6 +130,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi @Override protected void startHalOperation() { showUdfpsOverlay(); try { // GroupId was never used. In fact, groupId is always the same as userId. getFreshDaemon().authenticate(mOperationId, getTargetUserId()); Loading @@ -111,12 +138,14 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi Slog.e(TAG, "Remote exception when requesting auth", e); onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE, 0 /* vendorCode */); hideUdfpsOverlay(); mFinishCallback.onClientFinished(this, false /* success */); } } @Override protected void stopHalOperation() { hideUdfpsOverlay(); try { getFreshDaemon().cancel(); } catch (RemoteException e) { Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintEnrollClient.java +30 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,12 @@ package com.android.server.biometrics.sensors.fingerprint; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.hardware.biometrics.BiometricFingerprintConstants; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; import android.hardware.fingerprint.IUdfpsOverlayController; import android.os.IBinder; import android.os.RemoteException; import android.util.Slog; Loading @@ -39,18 +41,43 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint private static final String TAG = "FingerprintEnrollClient"; @Nullable private final IUdfpsOverlayController mUdfpsOverlayController; FingerprintEnrollClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFingerprint> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull byte[] hardwareAuthToken, @NonNull String owner, @NonNull BiometricUtils utils, int timeoutSec, int sensorId) { int timeoutSec, int sensorId, @Nullable IUdfpsOverlayController udfpsOverlayController) { super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils, timeoutSec, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId, true /* shouldVibrate */); mUdfpsOverlayController = udfpsOverlayController; } private void showUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.showUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when showing the UDFPS overlay", e); } } } private void hideUdfpsOverlay() { if (mUdfpsOverlayController != null) { try { mUdfpsOverlayController.hideUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when hiding the UDFPS overlay", e); } } } @Override protected void startHalOperation() { showUdfpsOverlay(); try { // GroupId was never used. In fact, groupId is always the same as userId. getFreshDaemon().enroll(mHardwareAuthToken, getTargetUserId(), mTimeoutSec); Loading @@ -58,12 +85,14 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint Slog.e(TAG, "Remote exception when requesting enroll", e); onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE, 0 /* vendorCode */); hideUdfpsOverlay(); mFinishCallback.onClientFinished(this, false /* success */); } } @Override protected void stopHalOperation() { hideUdfpsOverlay(); try { getFreshDaemon().cancel(); } catch (RemoteException e) { Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java +1 −30 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ public class FingerprintService extends SystemService { private final LockoutResetTracker mLockoutResetTracker; private final GestureAvailabilityTracker mGestureAvailabilityTracker; private Fingerprint21 mFingerprint21; private IUdfpsOverlayController mUdfpsOverlayController; /** * Receives the incoming binder calls from FingerprintManager. Loading Loading @@ -318,38 +317,10 @@ public class FingerprintService extends SystemService { return mFingerprint21.isUdfps(); } @Override public void showUdfpsOverlay() { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); if (mUdfpsOverlayController == null) { Slog.e(TAG, "showUdfpsOverlay | mUdfpsOverlayController is null"); return; } try { mUdfpsOverlayController.showUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "showUdfpsOverlay | RemoteException: ", e); } } @Override public void hideUdfpsOverlay() { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); if (mUdfpsOverlayController == null) { Slog.e(TAG, "hideUdfpsOverlay | mUdfpsOverlayController is null"); return; } try { mUdfpsOverlayController.hideUdfpsOverlay(); } catch (RemoteException e) { Slog.e(TAG, "hideUdfpsOverlay | RemoteException: ", e); } } @Override public void setUdfpsOverlayController(IUdfpsOverlayController controller) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); mUdfpsOverlayController = controller; mFingerprint21.setUdfpsOverlayController(controller); } } Loading