From 4f93ef7790578a9c0d28497a33be62d8d87bc09e Mon Sep 17 00:00:00 2001 From: Milton Wu Date: Wed, 7 Sep 2022 16:31:46 +0000 Subject: [PATCH] Fix incorrect choose screen lock during unicorn ChooseLockGeneneric uses intent extra key to determine correct strings on "Choose screen lock" screen. Bug: 219419005 Test: atest BiometricEnrollActivityTest Test: Manully test SUW as following combinations 1. W/ unicorn flow or W/O unicorn flow 2. Fingerprint only devices or Fingerpirnt+Face devices Change-Id: I2abf9555676f3fb3b92dd6ddcc091ea8158bfe9f --- .../biometrics/BiometricEnrollActivity.java | 8 +++++++- .../biometrics/BiometricEnrollActivityTest.java | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java index 6b830c9e4d7..932c41073e4 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java +++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java @@ -564,7 +564,13 @@ public class BiometricEnrollActivity extends InstrumentedActivity { Intent intent = BiometricUtils.getChooseLockIntent(this, getIntent()); intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_INSECURE_OPTIONS, true); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE, true); - intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, true); + if (mHasFeatureFingerprint && mHasFeatureFace) { + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, true); + } else if (mHasFeatureFace) { + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE, true); + } else if (mHasFeatureFingerprint) { + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, true); + } if (mUserId != UserHandle.USER_NULL) { intent.putExtra(Intent.EXTRA_USER_ID, mUserId); diff --git a/tests/componenttests/src/com/android/settings/biometrics/BiometricEnrollActivityTest.java b/tests/componenttests/src/com/android/settings/biometrics/BiometricEnrollActivityTest.java index 0ef57a0b676..c5e3a19cc92 100644 --- a/tests/componenttests/src/com/android/settings/biometrics/BiometricEnrollActivityTest.java +++ b/tests/componenttests/src/com/android/settings/biometrics/BiometricEnrollActivityTest.java @@ -20,6 +20,11 @@ import static android.provider.Settings.ACTION_BIOMETRIC_ENROLL; import static androidx.test.espresso.intent.Intents.intended; import static androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent; +import static androidx.test.espresso.intent.matcher.IntentMatchers.hasExtra; + +import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS; +import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE; +import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT; import static com.google.common.truth.Truth.assertThat; @@ -83,6 +88,13 @@ public class BiometricEnrollActivityTest { try (ActivityScenario scenario = ActivityScenario.launch(getIntent())) { intended(hasComponent(ChooseLockGeneric.class.getName())); + if (mHasFace && mHasFingerprint) { + intended(hasExtra(EXTRA_KEY_FOR_BIOMETRICS, true)); + } else if (mHasFace) { + intended(hasExtra(EXTRA_KEY_FOR_FACE, true)); + } else if (mHasFingerprint) { + intended(hasExtra(EXTRA_KEY_FOR_FINGERPRINT, true)); + } } } @@ -109,11 +121,9 @@ public class BiometricEnrollActivityTest { response.getGatekeeperPasswordHandle()); }).get(); - - try (ActivityScenario scenario = ActivityScenario.launch(intent)) { - intended(hasComponent(mHasFace + intended(hasComponent(mHasFace && !mHasFingerprint ? FaceEnrollIntroduction.class.getName() : FingerprintEnrollIntroduction.class.getName())); }