Reset fingerprint lockout upon successful unlock

FingerprintSettings should not start listening for fingerprints until
after Pin/Pattern/Pass is entered

Fixes: 63437524
Fixes: 63739006

Test: open FP settings, touch an invalid finger 5 times
close FP settings, re-enter FP settings, enter Pin/Pattern/Pass
touch FP with valid finger, should not be in lockout mode

Change-Id: Ia2e219824c33169a5610b36123c42aa3d6ff22c5
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index 2425c61..1d427fc 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -129,7 +129,6 @@
 
     public static class FingerprintSettingsFragment extends SettingsPreferenceFragment
             implements OnPreferenceChangeListener, FingerprintPreference.OnDeleteClickListener {
-        private static final int MAX_RETRY_ATTEMPTS = 20;
         private static final int RESET_HIGHLIGHT_DELAY_MS = 500;
 
         private static final String TAG = "FingerprintSettings";
@@ -284,6 +283,11 @@
             if (mRemovalSidecar.inProgress()) {
                 return;
             }
+            // Don't start authentication if ChooseLockGeneric is showing, otherwise if the user
+            // is in FP lockout, a toast will show on top
+            if (mLaunchedConfirm) {
+                return;
+            }
             if (!mInFingerprintLockout) {
                 mFingerprintCancel = new CancellationSignal();
                 mFingerprintManager.authenticate(null, mFingerprintCancel, 0 /* flags */,
@@ -432,6 +436,7 @@
         @Override
         public void onResume() {
             super.onResume();
+            mInFingerprintLockout = false;
             // Make sure we reload the preference hierarchy since fingerprints may be added,
             // deleted or renamed.
             updatePreferences();
@@ -545,6 +550,7 @@
             super.onActivityResult(requestCode, resultCode, data);
             if (requestCode == CHOOSE_LOCK_GENERIC_REQUEST
                     || requestCode == CONFIRM_REQUEST) {
+                mLaunchedConfirm = false;
                 if (resultCode == RESULT_FINISHED || resultCode == RESULT_OK) {
                     // The lock pin/pattern/password was set. Start enrolling!
                     if (data != null) {