Reset setIgnoreDisplayTouches on UdfpsOverlay show/hide
Bug: 320235412
Flag: None
Test: atest com.android.server.biometrics
Change-Id: Id73cddf1db168344d56e6c23e23d346b6d88b6d0
diff --git a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
index fbd32a6..d061e2d 100644
--- a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
@@ -31,6 +31,7 @@
import com.android.server.biometrics.log.BiometricContext;
import com.android.server.biometrics.log.BiometricLogger;
+import com.android.server.biometrics.sensors.fingerprint.aidl.AidlSession;
import java.util.function.Supplier;
@@ -202,6 +203,16 @@
}
}
+ // TODO(b/317414324): Deprecate setIgnoreDisplayTouches
+ protected final void resetIgnoreDisplayTouches() {
+ final AidlSession session = (AidlSession) getFreshDaemon();
+ try {
+ session.getSession().setIgnoreDisplayTouches(false);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Remote exception when resetting setIgnoreDisplayTouches");
+ }
+ }
+
@Override
public boolean isInterruptable() {
return true;
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
index 8121a63..93d1b6e 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
@@ -232,6 +232,7 @@
handleLockout(authenticated);
if (authenticated) {
mState = STATE_STOPPED;
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
@@ -268,6 +269,7 @@
// 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.
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
@@ -298,6 +300,7 @@
BiometricNotificationUtils.showBadCalibrationNotification(getContext());
}
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
@@ -306,6 +309,7 @@
@Override
protected void startHalOperation() {
+ resetIgnoreDisplayTouches();
mSensorOverlays.show(getSensorId(), getRequestReason(), this);
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStarted(getRequestReason());
@@ -419,6 +423,7 @@
@Override
protected void stopHalOperation() {
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
@@ -518,6 +523,7 @@
Slog.e(TAG, "Remote exception", e);
}
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
@@ -548,6 +554,7 @@
Slog.e(TAG, "Remote exception", e);
}
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java
index cb220b9e..8d2b46f 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java
@@ -87,6 +87,7 @@
@Override
protected void stopHalOperation() {
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
unsubscribeBiometricContext();
@@ -102,6 +103,7 @@
@Override
protected void startHalOperation() {
+ resetIgnoreDisplayTouches();
mSensorOverlays.show(getSensorId(), BiometricRequestConstants.REASON_AUTH_KEYGUARD,
this);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
index 225bd59..79975e5 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
@@ -144,6 +144,7 @@
controller -> controller.onEnrollmentProgress(getSensorId(), remaining));
if (remaining == 0) {
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
@@ -178,6 +179,7 @@
@Override
public void onError(int errorCode, int vendorCode) {
super.onError(errorCode, vendorCode);
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
@@ -192,6 +194,7 @@
@Override
protected void startHalOperation() {
+ resetIgnoreDisplayTouches();
mSensorOverlays.show(getSensorId(), getRequestReasonFromEnrollReason(mEnrollReason),
this);
if (sidefpsControllerRefactor()) {
@@ -273,6 +276,7 @@
@Override
protected void stopHalOperation() {
+ resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
if (sidefpsControllerRefactor()) {
mAuthenticationStateListeners.onAuthenticationStopped();
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
index 9cdaec6..7a77392 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
@@ -472,6 +472,7 @@
verify(mUdfpsOverlayController).hideUdfpsOverlay(anyInt());
verify(mSideFpsController).hide(anyInt());
+ verify(mHal, times(2)).setIgnoreDisplayTouches(false);
}
@Test
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
index 951c9393..3ee54f5 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
@@ -26,6 +26,7 @@
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.same;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -327,6 +328,7 @@
verify(mUdfpsOverlayController).hideUdfpsOverlay(anyInt());
verify(mSideFpsController).hide(anyInt());
+ verify(mHal, times(2)).setIgnoreDisplayTouches(false);
}
@Test