Merge "Do not show 2nd FingerprintErrorDialog" into tm-qpr-dev am: 4fd86cc096 am: 45bab9ddc4
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20120050
Change-Id: Ia6c96f2c1f1ea869f1fdaebeebd977b0e1612263
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index d65c8c7..9598019 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -168,7 +168,8 @@
private Vibrator mVibrator;
private boolean mIsSetupWizard;
private boolean mIsOrientationChanged;
- private boolean mIsCanceled;
+ @VisibleForTesting
+ boolean mIsCanceled;
private AccessibilityManager mAccessibilityManager;
private boolean mIsAccessibilityEnabled;
private LottieAnimationView mIllustrationLottie;
@@ -196,7 +197,7 @@
@Override
public void onWindowFocusChanged(boolean hasFocus) {
- if (hasFocus) {
+ if (hasFocus || mIsCanceled) {
return;
}
@@ -411,8 +412,10 @@
@VisibleForTesting
void onCancelEnrollment(@IdRes int errorMsgId) {
- FingerprintErrorDialog.showErrorDialog(this, errorMsgId);
+ // 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);
mIsOrientationChanged = false;
cancelEnrollment();
stopIconAnimation();
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
index 9f9efdc..39d35dc 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
@@ -72,6 +72,7 @@
dialog.dismiss();
Activity activity = getActivity();
Intent intent = activity.getIntent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
intent.putExtra(KEY_STATE_CANCELED, false);
activity.startActivity(intent);
activity.finish();
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
index b808319..a7b7501 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
@@ -151,6 +151,16 @@
}
@Test
+ public void fingerprintUdfpsOverlayEnrollment_loseFocusWithCancelFlag_shouldNotCancelAgain() {
+ initializeActivityFor(TYPE_UDFPS_OPTICAL);
+
+ mActivity.mIsCanceled = true;
+ mActivity.onWindowFocusChanged(true);
+
+ verify(mActivity, never()).onCancelEnrollment(anyInt());
+ }
+
+ @Test
public void fingerprintSfpsEnroll_PlaysAllAnimationsAssetsCorrectly() {
initializeActivityFor(TYPE_POWER_BUTTON);