Merge "Fixes loop in Fingerprint Enrollment" into tm-qpr-dev

This commit is contained in:
Diya Bera
2022-11-16 01:01:14 +00:00
committed by Android (Google) Code Review
4 changed files with 29 additions and 15 deletions

View File

@@ -415,7 +415,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
// showErrorDialog() will cause onWindowFocusChanged(false), set mIsCanceled to false
// before showErrorDialog() to prevent that another error dialog is triggered again.
mIsCanceled = true;
FingerprintErrorDialog.showErrorDialog(this, errorMsgId);
FingerprintErrorDialog.showErrorDialog(this, errorMsgId, mCanAssumeUdfps);
mIsOrientationChanged = false;
cancelEnrollment();
stopIconAnimation();

View File

@@ -317,7 +317,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
if (mNextClicked && errMsgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
proceedToEnrolling(false /* cancelEnrollment */);
} else {
FingerprintErrorDialog.showErrorDialog(this, errMsgId);
FingerprintErrorDialog.showErrorDialog(this, errMsgId, mCanAssumeUdfps);
}
}

View File

@@ -132,12 +132,12 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
@Override
protected void onNextButtonClick(View view) {
updateFingerprintSuggestionEnableState();
finishAndToNext();
finishAndToNext(RESULT_FINISHED);
}
private void finishAndToNext() {
private void finishAndToNext(int resultCode) {
mIsAddAnotherOrFinish = true;
setResult(RESULT_FINISHED);
setResult(resultCode);
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
postEnroll();
}
@@ -184,9 +184,12 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
updateFingerprintSuggestionEnableState();
if (requestCode == BiometricUtils.REQUEST_ADD_ANOTHER && resultCode != RESULT_CANCELED) {
if (requestCode == BiometricUtils.REQUEST_ADD_ANOTHER && resultCode == RESULT_TIMEOUT) {
finishAndToNext(resultCode);
} else if (requestCode == BiometricUtils.REQUEST_ADD_ANOTHER
&& resultCode != RESULT_CANCELED) {
// If user cancel during "Add another", just use similar flow on "Next" button
finishAndToNext();
finishAndToNext(RESULT_FINISHED);
} else {
super.onActivityResult(requestCode, resultCode, data);
}

View File

@@ -41,12 +41,14 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
public static final String KEY_ERROR_MSG = "error_msg";
public static final String KEY_ERROR_ID = "error_id";
public static final String KEY_UDFPS = "is_udfps";
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
CharSequence errorString = getArguments().getCharSequence(KEY_ERROR_MSG);
final int errMsgId = getArguments().getInt(KEY_ERROR_ID);
final boolean canAssumeUdfps = getArguments().getBoolean(KEY_UDFPS, false);
boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT;
builder.setTitle(R.string.security_settings_fingerprint_enroll_error_dialog_title)
@@ -59,11 +61,15 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Activity activity = getActivity();
activity.setResult(RESULT_FINISHED);
if (wasTimeout && !canAssumeUdfps) {
activity.setResult(RESULT_TIMEOUT);
} else {
activity.setResult(RESULT_FINISHED);
}
activity.finish();
}
});
if (wasTimeout) {
if (wasTimeout && canAssumeUdfps) {
builder.setPositiveButton(
R.string.security_settings_fingerprint_enroll_dialog_try_again,
new DialogInterface.OnClickListener() {
@@ -95,18 +101,21 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
return dialog;
}
public static void showErrorDialog(BiometricEnrollBase host, int errMsgId) {
public static void showErrorDialog(BiometricEnrollBase host, int errMsgId,
boolean canAssumeUdfps) {
if (host.isFinishing()) {
return;
}
final FragmentManager fragmentManager = host.getSupportFragmentManager();
if (fragmentManager.isDestroyed() || fragmentManager.isStateSaved()) {
return;
}
final CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId);
CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
if (!canAssumeUdfps
&& errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT) {
errMsg = host.getText(getErrorMessage(BiometricConstants.BIOMETRIC_ERROR_CANCELED));
}
final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId, canAssumeUdfps);
dialog.show(fragmentManager, FingerprintErrorDialog.class.getName());
}
@@ -124,11 +133,13 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
}
}
private static FingerprintErrorDialog newInstance(CharSequence msg, int msgId) {
private static FingerprintErrorDialog newInstance(CharSequence msg, int msgId,
boolean canAssumeUdfps) {
FingerprintErrorDialog dialog = new FingerprintErrorDialog();
Bundle args = new Bundle();
args.putCharSequence(KEY_ERROR_MSG, msg);
args.putInt(KEY_ERROR_ID, msgId);
args.putBoolean(KEY_UDFPS, canAssumeUdfps);
dialog.setArguments(args);
return dialog;
}