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 // showErrorDialog() will cause onWindowFocusChanged(false), set mIsCanceled to false
// before showErrorDialog() to prevent that another error dialog is triggered again. // before showErrorDialog() to prevent that another error dialog is triggered again.
mIsCanceled = true; mIsCanceled = true;
FingerprintErrorDialog.showErrorDialog(this, errorMsgId); FingerprintErrorDialog.showErrorDialog(this, errorMsgId, mCanAssumeUdfps);
mIsOrientationChanged = false; mIsOrientationChanged = false;
cancelEnrollment(); cancelEnrollment();
stopIconAnimation(); stopIconAnimation();

View File

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

View File

@@ -132,12 +132,12 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
@Override @Override
protected void onNextButtonClick(View view) { protected void onNextButtonClick(View view) {
updateFingerprintSuggestionEnableState(); updateFingerprintSuggestionEnableState();
finishAndToNext(); finishAndToNext(RESULT_FINISHED);
} }
private void finishAndToNext() { private void finishAndToNext(int resultCode) {
mIsAddAnotherOrFinish = true; mIsAddAnotherOrFinish = true;
setResult(RESULT_FINISHED); setResult(resultCode);
if (WizardManagerHelper.isAnySetupWizard(getIntent())) { if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
postEnroll(); postEnroll();
} }
@@ -184,9 +184,12 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
updateFingerprintSuggestionEnableState(); 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 // If user cancel during "Add another", just use similar flow on "Next" button
finishAndToNext(); finishAndToNext(RESULT_FINISHED);
} else { } else {
super.onActivityResult(requestCode, resultCode, data); 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_MSG = "error_msg";
public static final String KEY_ERROR_ID = "error_id"; public static final String KEY_ERROR_ID = "error_id";
public static final String KEY_UDFPS = "is_udfps";
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
CharSequence errorString = getArguments().getCharSequence(KEY_ERROR_MSG); CharSequence errorString = getArguments().getCharSequence(KEY_ERROR_MSG);
final int errMsgId = getArguments().getInt(KEY_ERROR_ID); final int errMsgId = getArguments().getInt(KEY_ERROR_ID);
final boolean canAssumeUdfps = getArguments().getBoolean(KEY_UDFPS, false);
boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT; boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT;
builder.setTitle(R.string.security_settings_fingerprint_enroll_error_dialog_title) 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) { public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); dialog.dismiss();
Activity activity = getActivity(); Activity activity = getActivity();
activity.setResult(RESULT_FINISHED); if (wasTimeout && !canAssumeUdfps) {
activity.setResult(RESULT_TIMEOUT);
} else {
activity.setResult(RESULT_FINISHED);
}
activity.finish(); activity.finish();
} }
}); });
if (wasTimeout) { if (wasTimeout && canAssumeUdfps) {
builder.setPositiveButton( builder.setPositiveButton(
R.string.security_settings_fingerprint_enroll_dialog_try_again, R.string.security_settings_fingerprint_enroll_dialog_try_again,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@@ -95,18 +101,21 @@ public class FingerprintErrorDialog extends InstrumentedDialogFragment {
return dialog; return dialog;
} }
public static void showErrorDialog(BiometricEnrollBase host, int errMsgId) { public static void showErrorDialog(BiometricEnrollBase host, int errMsgId,
boolean canAssumeUdfps) {
if (host.isFinishing()) { if (host.isFinishing()) {
return; return;
} }
final FragmentManager fragmentManager = host.getSupportFragmentManager(); final FragmentManager fragmentManager = host.getSupportFragmentManager();
if (fragmentManager.isDestroyed() || fragmentManager.isStateSaved()) { if (fragmentManager.isDestroyed() || fragmentManager.isStateSaved()) {
return; return;
} }
CharSequence errMsg = host.getText(getErrorMessage(errMsgId));
final CharSequence errMsg = host.getText(getErrorMessage(errMsgId)); if (!canAssumeUdfps
final FingerprintErrorDialog dialog = newInstance(errMsg, errMsgId); && 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()); 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(); FingerprintErrorDialog dialog = new FingerprintErrorDialog();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putCharSequence(KEY_ERROR_MSG, msg); args.putCharSequence(KEY_ERROR_MSG, msg);
args.putInt(KEY_ERROR_ID, msgId); args.putInt(KEY_ERROR_ID, msgId);
args.putBoolean(KEY_UDFPS, canAssumeUdfps);
dialog.setArguments(args); dialog.setArguments(args);
return dialog; return dialog;
} }