From 15fd68227e14be07bae016eb6081f26ad42ec452 Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Wed, 7 Sep 2022 22:14:15 +0000 Subject: [PATCH] Updated power press strings in enrollment. Test: Manual. Test: atest FingerprintEnrollClientTest Fixes: 245150708 Change-Id: Icdf83c3c46d12b6241a3695f3151528b412b2ccd --- .../biometrics/BiometricFingerprintConstants.java | 10 +++++++++- .../hardware/fingerprint/FingerprintManager.java | 3 +++ core/res/res/values/strings.xml | 6 ++++-- core/res/res/values/symbols.xml | 1 + .../sensors/ClientMonitorCallbackConverter.java | 2 +- .../fingerprint/aidl/FingerprintEnrollClient.java | 10 +++++++++- .../aidl/FingerprintEnrollClientTest.java | 12 ++++++++++++ 7 files changed, 39 insertions(+), 5 deletions(-) diff --git a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java index 98f571b809493..c59d7571ee6d7 100644 --- a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java +++ b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java @@ -217,7 +217,8 @@ public interface BiometricFingerprintConstants { FINGERPRINT_ACQUIRED_START, FINGERPRINT_ACQUIRED_UNKNOWN, FINGERPRINT_ACQUIRED_IMMOBILE, - FINGERPRINT_ACQUIRED_TOO_BRIGHT}) + FINGERPRINT_ACQUIRED_TOO_BRIGHT, + FINGERPRINT_ACQUIRED_POWER_PRESSED}) @Retention(RetentionPolicy.SOURCE) @interface FingerprintAcquired {} @@ -301,6 +302,13 @@ public interface BiometricFingerprintConstants { */ int FINGERPRINT_ACQUIRED_TOO_BRIGHT = 10; + /** + * For sensors that have the power button co-located with their sensor, this event will + * be sent during enrollment. + * @hide + */ + int FINGERPRINT_ACQUIRED_POWER_PRESSED = 11; + /** * @hide */ diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index 72d8122693740..0fd164de8ffb0 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -1538,6 +1538,9 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing case FINGERPRINT_ACQUIRED_TOO_BRIGHT: return context.getString( com.android.internal.R.string.fingerprint_acquired_too_bright); + case FINGERPRINT_ACQUIRED_POWER_PRESSED: + return context.getString( + com.android.internal.R.string.fingerprint_acquired_power_press); case FINGERPRINT_ACQUIRED_VENDOR: { String[] msgArray = context.getResources().getStringArray( com.android.internal.R.array.fingerprint_acquired_vendor); diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index aad32b118b8f1..4e5f7c0bcef09 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1708,6 +1708,8 @@ Try another fingerprint Too bright + + Power press detected Try adjusting @@ -3574,11 +3576,11 @@ - Tap to turn off screen + To end setup, turn off screen - Turn off screen + Turn off diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 123770e01e012..127bca00cc12f 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2606,6 +2606,7 @@ + diff --git a/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java b/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java index 46d863d7aaec7..2e1a363bcc680 100644 --- a/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java +++ b/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java @@ -59,7 +59,7 @@ public class ClientMonitorCallbackConverter { // The following apply to all clients - void onAcquired(int sensorId, int acquiredInfo, int vendorCode) throws RemoteException { + public void onAcquired(int sensorId, int acquiredInfo, int vendorCode) throws RemoteException { if (mSensorReceiver != null) { mSensorReceiver.onAcquired(sensorId, acquiredInfo, vendorCode); } else if (mFaceServiceReceiver != null) { 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 7d2cf9deb76f6..064a1a426173c 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 @@ -50,12 +50,14 @@ import com.android.server.biometrics.sensors.ClientMonitorCompositeCallback; import com.android.server.biometrics.sensors.EnrollClient; import com.android.server.biometrics.sensors.SensorOverlays; import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils; +import com.android.server.biometrics.sensors.fingerprint.PowerPressHandler; import com.android.server.biometrics.sensors.fingerprint.Udfps; import com.android.server.biometrics.sensors.fingerprint.UdfpsHelper; import java.util.function.Supplier; -class FingerprintEnrollClient extends EnrollClient implements Udfps { +class FingerprintEnrollClient extends EnrollClient implements Udfps, + PowerPressHandler { private static final String TAG = "FingerprintEnrollClient"; @@ -268,4 +270,10 @@ class FingerprintEnrollClient extends EnrollClient implements Udfps Slog.e(TAG, "Unable to send UI ready", e); } } + + @Override + public void onPowerPressed() { + onAcquired(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED, + 0 /* vendorCode */); + } } 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 97fe9ea41e3dc..d47528832d5ab 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 @@ -16,6 +16,8 @@ package com.android.server.biometrics.sensors.fingerprint.aidl; +import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyBoolean; @@ -251,6 +253,16 @@ public class FingerprintEnrollClientTest { showHideOverlay(c -> c.onEnrollResult(new Fingerprint("", 1, 1), 0)); } + @Test + public void testPowerPressForwardsAcquireMessage() throws RemoteException { + final FingerprintEnrollClient client = createClient(); + client.start(mCallback); + client.onPowerPressed(); + + verify(mClientMonitorCallbackConverter).onAcquired(anyInt(), + eq(FINGERPRINT_ACQUIRED_POWER_PRESSED), anyInt()); + } + private void showHideOverlay(Consumer block) throws RemoteException { final FingerprintEnrollClient client = createClient();