From f0a55f7c4e771c5471d4643bca8566bb9e75db66 Mon Sep 17 00:00:00 2001 From: Joshua Mccloskey Date: Thu, 21 Oct 2021 11:40:17 -0700 Subject: [PATCH] Fixed bug causing user to be stuck on face intro Test: See below Fixes: 203375738 Change-Id: I3e59191a8c936c7c7a3d8561e908593dbf9710b5 1. Enrolled a face during SUW 2. Pressed back on fingerprint enroll intro 3. Verified that the next button's text is chnaged to done 4. The done action launches the fingerprint enroll intro flow. Change-Id: Id5d652257445e40426ade3d396a31ebf936cc348 --- res/values/integers.xml | 5 +++++ .../biometrics/BiometricEnrollActivity.java | 10 ++++++++-- .../biometrics/BiometricEnrollIntroduction.java | 8 ++++++-- .../biometrics/face/FaceEnrollIntroduction.java | 9 ++++++++- .../FingerprintEnrollIntroduction.java | 15 +++++++++++++-- 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/res/values/integers.xml b/res/values/integers.xml index 3d73f64fabe..d110de253e7 100644 --- a/res/values/integers.xml +++ b/res/values/integers.xml @@ -21,4 +21,9 @@ 102 103 104 + + + 1 + + 1 diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java index 44a874bd8d3..88622e931c4 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java +++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java @@ -182,9 +182,12 @@ public class BiometricEnrollActivity extends InstrumentedActivity { final FaceManager faceManager = getSystemService(FaceManager.class); final List faceProperties = faceManager.getSensorPropertiesInternal(); + final int maxFacesEnrollableIfSUW = getApplicationContext().getResources() + .getInteger(R.integer.suw_max_faces_enrollable); if (!faceProperties.isEmpty()) { final int maxEnrolls = - isSetupWizard ? 1 : faceProperties.get(0).maxEnrollmentsPerUser; + isSetupWizard ? maxFacesEnrollableIfSUW + : faceProperties.get(0).maxEnrollmentsPerUser; mIsFaceEnrollable = faceManager.getEnrolledFaces(mUserId).size() < maxEnrolls; } @@ -193,9 +196,12 @@ public class BiometricEnrollActivity extends InstrumentedActivity { final FingerprintManager fpManager = getSystemService(FingerprintManager.class); final List fpProperties = fpManager.getSensorPropertiesInternal(); + final int maxFingerprintsEnrollableIfSUW = getApplicationContext().getResources() + .getInteger(R.integer.suw_max_fingerprints_enrollable); if (!fpProperties.isEmpty()) { final int maxEnrolls = - isSetupWizard ? 1 : fpProperties.get(0).maxEnrollmentsPerUser; + isSetupWizard ? maxFingerprintsEnrollableIfSUW + : fpProperties.get(0).maxEnrollmentsPerUser; mIsFingerprintEnrollable = fpManager.getEnrolledFingerprints(mUserId).size() < maxEnrolls; } diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index 89b43509b7a..f80b01f39c3 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -257,8 +257,12 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase // Lock thingy is already set up, launch directly to the next page launchNextEnrollingActivity(mToken); } else { - setResult(RESULT_FINISHED); - finish(); + boolean couldStartNextBiometric = BiometricUtils.tryStartingNextBiometricEnroll(this, + ENROLL_NEXT_BIOMETRIC_REQUEST, "enrollIntroduction#onNextButtonClicked"); + if (!couldStartNextBiometric) { + setResult(RESULT_FINISHED); + finish(); + } } } diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index 707dea9c3a1..74ea27b9d88 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -234,13 +234,20 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { } private boolean maxFacesEnrolled() { + final boolean isSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent()); if (mFaceManager != null) { final List props = mFaceManager.getSensorPropertiesInternal(); // This will need to be updated for devices with multiple face sensors. final int max = props.get(0).maxEnrollmentsPerUser; final int numEnrolledFaces = mFaceManager.getEnrolledFaces(mUserId).size(); - return numEnrolledFaces >= max; + final int maxFacesEnrollableIfSUW = getApplicationContext().getResources() + .getInteger(R.integer.suw_max_faces_enrollable); + if (isSetupWizard) { + return numEnrolledFaces >= maxFacesEnrollableIfSUW; + } else { + return numEnrolledFaces >= max; + } } else { return false; } diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java index 3ab77b666c1..f70a663c1f8 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java @@ -44,6 +44,7 @@ import com.android.settingslib.HelpUtils; import com.android.settingslib.RestrictedLockUtilsInternal; import com.google.android.setupcompat.template.FooterButton; +import com.google.android.setupcompat.util.WizardManagerHelper; import com.google.android.setupdesign.span.LinkSpan; import java.util.List; @@ -203,6 +204,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { @Override protected int checkMaxEnrolled() { + final boolean isSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent()); if (mFingerprintManager != null) { final List props = mFingerprintManager.getSensorPropertiesInternal(); @@ -210,13 +212,22 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { final int max = props.get(0).maxEnrollmentsPerUser; final int numEnrolledFingerprints = mFingerprintManager.getEnrolledFingerprints(mUserId).size(); - if (numEnrolledFingerprints >= max) { + final int maxFingerprintsEnrollableIfSUW = getApplicationContext().getResources() + .getInteger(R.integer.suw_max_fingerprints_enrollable); + if (isSetupWizard) { + if (numEnrolledFingerprints >= maxFingerprintsEnrollableIfSUW) { + return R.string.fingerprint_intro_error_max; + } else { + return 0; + } + } else if (numEnrolledFingerprints >= max) { return R.string.fingerprint_intro_error_max; + } else { + return 0; } } else { return R.string.fingerprint_intro_error_unknown; } - return 0; } @Override