Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,13 @@ public static int getReasonFromEnrollReason(@FingerprintManager.EnrollReason int
public static void showUdfpsOverlay(int sensorId, int reason,
@Nullable IUdfpsOverlayController udfpsOverlayController,
@NonNull AcquisitionClient<?> client) {
showUdfpsOverlay(null, sensorId, reason, udfpsOverlayController, client);
}

public static void showUdfpsOverlay(IBiometricsFingerprint daemon,
int sensorId, int reason,
@Nullable IUdfpsOverlayController udfpsOverlayController,
@NonNull AcquisitionClient<?> client) {
if (udfpsOverlayController == null) {
return;
}
Expand All @@ -94,6 +101,23 @@ public void onUserCanceled() {
}
};

if (daemon != null) {
android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint extension =
android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint.castFrom(
daemon);
if (extension != null) {
try {
extension.onShowUdfpsOverlay();
} catch (RemoteException e) {
Slog.v(TAG, "showUdfpsOverlay | RemoteException: ", e);
}
} else {
Slog.v(TAG, "onShowUdfpsOverlay | failed to cast the HIDL to V2_3");
}
} else {
Slog.v(TAG, "onShowUdfpsOverlay | daemon null");
}

try {
udfpsOverlayController.showUdfpsOverlay(sensorId, reason, callback);
} catch (RemoteException e) {
Expand All @@ -103,9 +127,32 @@ public void onUserCanceled() {

public static void hideUdfpsOverlay(int sensorId,
@Nullable IUdfpsOverlayController udfpsOverlayController) {
hideUdfpsOverlay(null, sensorId, udfpsOverlayController);
}

public static void hideUdfpsOverlay(IBiometricsFingerprint daemon, int sensorId,
@Nullable IUdfpsOverlayController udfpsOverlayController) {
if (udfpsOverlayController == null) {
return;
}

if (daemon != null) {
android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint extension =
android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint.castFrom(
daemon);
if (extension != null) {
try {
extension.onHideUdfpsOverlay();
} catch (RemoteException e) {
Slog.v(TAG, "hideUdfpsOverlay | RemoteException: ", e);
}
} else {
Slog.v(TAG, "onHideUdfpsOverlay | failed to cast the HIDL to V2_3");
}
} else {
Slog.v(TAG, "onHideUdfpsOverlay | daemon null");
}

try {
udfpsOverlayController.hideUdfpsOverlay(sensorId);
} catch (RemoteException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public void onAuthenticated(BiometricAuthenticator.Identifier identifier,
if (authenticated) {
mState = STATE_STOPPED;
resetFailedAttempts(getTargetUserId());
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
} else {
mState = STATE_STARTED_PAUSED_ATTEMPTED;
final @LockoutTracker.LockoutMode int lockoutMode =
Expand All @@ -132,7 +132,7 @@ public void onAuthenticated(BiometricAuthenticator.Identifier identifier,
// 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.
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
onErrorInternal(errorCode, 0 /* vendorCode */, false /* finish */);
cancel();
}
Expand All @@ -147,7 +147,7 @@ public void onError(int errorCode, int vendorCode) {
BiometricNotificationUtils.showBadCalibrationNotification(getContext());
}

UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
}

private void resetFailedAttempts(int userId) {
Expand Down Expand Up @@ -175,7 +175,7 @@ public boolean wasUserDetected() {

@Override
protected void startHalOperation() {
UdfpsHelper.showUdfpsOverlay(getSensorId(), Utils.getUdfpsAuthReason(this),
UdfpsHelper.showUdfpsOverlay(getFreshDaemon(), getSensorId(), Utils.getUdfpsAuthReason(this),
mUdfpsOverlayController, this);
try {
// GroupId was never used. In fact, groupId is always the same as userId.
Expand All @@ -184,14 +184,14 @@ protected void startHalOperation() {
Slog.e(TAG, "Remote exception when requesting auth", e);
onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE,
0 /* vendorCode */);
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
mCallback.onClientFinished(this, false /* success */);
}
}

@Override
protected void stopHalOperation() {
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
try {
getFreshDaemon().cancel();
} catch (RemoteException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public FingerprintDetectClient(@NonNull Context context,

@Override
protected void stopHalOperation() {
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
try {
getFreshDaemon().cancel();
} catch (RemoteException e) {
Expand All @@ -84,7 +84,7 @@ public void start(@NonNull Callback callback) {

@Override
protected void startHalOperation() {
UdfpsHelper.showUdfpsOverlay(getSensorId(),
UdfpsHelper.showUdfpsOverlay(getFreshDaemon(), getSensorId(),
IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD,
mUdfpsOverlayController, this);
try {
Expand All @@ -93,7 +93,7 @@ protected void startHalOperation() {
Slog.e(TAG, "Remote exception when requesting auth", e);
onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE,
0 /* vendorCode */);
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
mCallback.onClientFinished(this, false /* success */);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ protected boolean hasReachedEnrollmentLimit() {

@Override
protected void startHalOperation() {
UdfpsHelper.showUdfpsOverlay(getSensorId(),
UdfpsHelper.showUdfpsOverlay(getFreshDaemon(), getSensorId(),
UdfpsHelper.getReasonFromEnrollReason(mEnrollReason),
mUdfpsOverlayController, this);
SidefpsHelper.showOverlay(mSidefpsController);
Expand All @@ -107,15 +107,15 @@ protected void startHalOperation() {
Slog.e(TAG, "Remote exception when requesting enroll", e);
onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE,
0 /* vendorCode */);
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
SidefpsHelper.hideOverlay(mSidefpsController);
mCallback.onClientFinished(this, false /* success */);
}
}

@Override
protected void stopHalOperation() {
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
SidefpsHelper.hideOverlay(mSidefpsController);
try {
getFreshDaemon().cancel();
Expand All @@ -134,7 +134,7 @@ public void onEnrollResult(BiometricAuthenticator.Identifier identifier, int rem
UdfpsHelper.onEnrollmentProgress(getSensorId(), remaining, mUdfpsOverlayController);

if (remaining == 0) {
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
SidefpsHelper.hideOverlay(mSidefpsController);
}
}
Expand All @@ -152,7 +152,7 @@ public void onAcquired(int acquiredInfo, int vendorCode) {
public void onError(int errorCode, int vendorCode) {
super.onError(errorCode, vendorCode);

UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
UdfpsHelper.hideUdfpsOverlay(getFreshDaemon(), getSensorId(), mUdfpsOverlayController);
SidefpsHelper.hideOverlay(mSidefpsController);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ public void onFingerUp() {

}

@Override
public void onShowUdfpsOverlay() {}

@Override
public void onHideUdfpsOverlay() {}

@Override
public long setNotify(IBiometricsFingerprintClientCallback clientCallback) {
mCallback = clientCallback;
Expand Down Expand Up @@ -138,4 +144,4 @@ public int authenticate(long operationId, int gid) {
Slog.w(TAG, "Authenticate");
return 0;
}
}
}