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
This commit is contained in:
Joshua Mccloskey
2021-10-21 11:40:17 -07:00
parent c1770fe4cf
commit f0a55f7c4e
5 changed files with 40 additions and 7 deletions

View File

@@ -21,4 +21,9 @@
<integer name="job_anomaly_detection">102</integer> <integer name="job_anomaly_detection">102</integer>
<integer name="device_index_update">103</integer> <integer name="device_index_update">103</integer>
<integer name="sim_notification_send">104</integer> <integer name="sim_notification_send">104</integer>
<!-- Controls the maximum number of faces enrollable during SUW -->
<integer name="suw_max_faces_enrollable">1</integer>
<!-- Controls the maximum number of fingerprints enrollable during SUW -->
<integer name="suw_max_fingerprints_enrollable">1</integer>
</resources> </resources>

View File

@@ -182,9 +182,12 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
final FaceManager faceManager = getSystemService(FaceManager.class); final FaceManager faceManager = getSystemService(FaceManager.class);
final List<FaceSensorPropertiesInternal> faceProperties = final List<FaceSensorPropertiesInternal> faceProperties =
faceManager.getSensorPropertiesInternal(); faceManager.getSensorPropertiesInternal();
final int maxFacesEnrollableIfSUW = getApplicationContext().getResources()
.getInteger(R.integer.suw_max_faces_enrollable);
if (!faceProperties.isEmpty()) { if (!faceProperties.isEmpty()) {
final int maxEnrolls = final int maxEnrolls =
isSetupWizard ? 1 : faceProperties.get(0).maxEnrollmentsPerUser; isSetupWizard ? maxFacesEnrollableIfSUW
: faceProperties.get(0).maxEnrollmentsPerUser;
mIsFaceEnrollable = mIsFaceEnrollable =
faceManager.getEnrolledFaces(mUserId).size() < maxEnrolls; faceManager.getEnrolledFaces(mUserId).size() < maxEnrolls;
} }
@@ -193,9 +196,12 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
final FingerprintManager fpManager = getSystemService(FingerprintManager.class); final FingerprintManager fpManager = getSystemService(FingerprintManager.class);
final List<FingerprintSensorPropertiesInternal> fpProperties = final List<FingerprintSensorPropertiesInternal> fpProperties =
fpManager.getSensorPropertiesInternal(); fpManager.getSensorPropertiesInternal();
final int maxFingerprintsEnrollableIfSUW = getApplicationContext().getResources()
.getInteger(R.integer.suw_max_fingerprints_enrollable);
if (!fpProperties.isEmpty()) { if (!fpProperties.isEmpty()) {
final int maxEnrolls = final int maxEnrolls =
isSetupWizard ? 1 : fpProperties.get(0).maxEnrollmentsPerUser; isSetupWizard ? maxFingerprintsEnrollableIfSUW
: fpProperties.get(0).maxEnrollmentsPerUser;
mIsFingerprintEnrollable = mIsFingerprintEnrollable =
fpManager.getEnrolledFingerprints(mUserId).size() < maxEnrolls; fpManager.getEnrolledFingerprints(mUserId).size() < maxEnrolls;
} }

View File

@@ -257,8 +257,12 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
// Lock thingy is already set up, launch directly to the next page // Lock thingy is already set up, launch directly to the next page
launchNextEnrollingActivity(mToken); launchNextEnrollingActivity(mToken);
} else { } else {
setResult(RESULT_FINISHED); boolean couldStartNextBiometric = BiometricUtils.tryStartingNextBiometricEnroll(this,
finish(); ENROLL_NEXT_BIOMETRIC_REQUEST, "enrollIntroduction#onNextButtonClicked");
if (!couldStartNextBiometric) {
setResult(RESULT_FINISHED);
finish();
}
} }
} }

View File

@@ -234,13 +234,20 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
} }
private boolean maxFacesEnrolled() { private boolean maxFacesEnrolled() {
final boolean isSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
if (mFaceManager != null) { if (mFaceManager != null) {
final List<FaceSensorPropertiesInternal> props = final List<FaceSensorPropertiesInternal> props =
mFaceManager.getSensorPropertiesInternal(); mFaceManager.getSensorPropertiesInternal();
// This will need to be updated for devices with multiple face sensors. // This will need to be updated for devices with multiple face sensors.
final int max = props.get(0).maxEnrollmentsPerUser; final int max = props.get(0).maxEnrollmentsPerUser;
final int numEnrolledFaces = mFaceManager.getEnrolledFaces(mUserId).size(); 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 { } else {
return false; return false;
} }

View File

@@ -44,6 +44,7 @@ import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.template.FooterButton; import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.span.LinkSpan; import com.google.android.setupdesign.span.LinkSpan;
import java.util.List; import java.util.List;
@@ -203,6 +204,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
@Override @Override
protected int checkMaxEnrolled() { protected int checkMaxEnrolled() {
final boolean isSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
if (mFingerprintManager != null) { if (mFingerprintManager != null) {
final List<FingerprintSensorPropertiesInternal> props = final List<FingerprintSensorPropertiesInternal> props =
mFingerprintManager.getSensorPropertiesInternal(); mFingerprintManager.getSensorPropertiesInternal();
@@ -210,13 +212,22 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
final int max = props.get(0).maxEnrollmentsPerUser; final int max = props.get(0).maxEnrollmentsPerUser;
final int numEnrolledFingerprints = final int numEnrolledFingerprints =
mFingerprintManager.getEnrolledFingerprints(mUserId).size(); 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; return R.string.fingerprint_intro_error_max;
} else {
return 0;
} }
} else { } else {
return R.string.fingerprint_intro_error_unknown; return R.string.fingerprint_intro_error_unknown;
} }
return 0;
} }
@Override @Override