From a9eef654d2ab140dbd81ca3d5a64d12c8d672048 Mon Sep 17 00:00:00 2001 From: Wenhui Yang Date: Thu, 15 Jun 2023 22:53:32 +0000 Subject: [PATCH] Update BP "Not recognized" message with UX/UI spec Change the string on the biometric prompt when fingerprint/face failed according to biometric enrollment status Fixes: 286993443 Fixes: 286967857 Test: Manual (see bug) Test: atest AuthControllerTest atest BiometricsServiceTest Change-Id: Ieaecf678d9498b065972340900ddb5afba97ac1e --- core/res/res/values/strings.xml | 2 ++ .../android/systemui/biometrics/AuthController.java | 12 ++++++++++-- .../systemui/biometrics/AuthControllerTest.java | 2 +- .../server/biometrics/BiometricServiceTest.java | 4 ++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index b516e59d102c2..04fef58e973e1 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1787,6 +1787,8 @@ Biometric hardware unavailable Authentication canceled + + Not recognized Face not recognized diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index 73a48036245f4..eab82a1226b92 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -1057,8 +1057,16 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, } private String getNotRecognizedString(@Modality int modality) { - return mContext.getString(modality == TYPE_FACE - ? R.string.biometric_face_not_recognized : R.string.fingerprint_error_not_match); + final int messageRes; + final int userId = mCurrentDialogArgs.argi1; + if (isFaceAuthEnrolled(userId) && isFingerprintEnrolled(userId)) { + messageRes = modality == TYPE_FACE + ? R.string.biometric_face_not_recognized + : R.string.fingerprint_error_not_match; + } else { + messageRes = R.string.biometric_not_recognized; + } + return mContext.getString(messageRes); } private String getErrorString(@Modality int modality, int error, int vendorCode) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java index 9d478394c4035..b4a4a11a81a18 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java @@ -488,7 +488,7 @@ public class AuthControllerTest extends SysuiTestCase { assertEquals(modalityCaptor.getValue().intValue(), modality); assertEquals(messageCaptor.getValue(), - mContext.getString(R.string.fingerprint_error_not_match)); + mContext.getString(R.string.biometric_not_recognized)); } @Test diff --git a/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java b/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java index 3ae1fcf2252cd..d601ecb3f0835 100644 --- a/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java @@ -181,6 +181,10 @@ public class BiometricServiceTest { when(mResources.getString(R.string.biometric_error_hw_unavailable)) .thenReturn(ERROR_HW_UNAVAILABLE); + when(mResources.getString(R.string.biometric_not_recognized)) + .thenReturn(ERROR_NOT_RECOGNIZED); + when(mResources.getString(R.string.biometric_face_not_recognized)) + .thenReturn(ERROR_NOT_RECOGNIZED); when(mResources.getString(R.string.fingerprint_error_not_match)) .thenReturn(ERROR_NOT_RECOGNIZED); when(mResources.getString(R.string.biometric_error_user_canceled))