Show calibtation result in FingerprintSettings & EnrollEnrolling
if results are available

Bug: b/326155807
Test: Enroll multiple fingerprints and check if
        calibration isn't triggered.

Change-Id: I006db64f001fb70d2bb294a15a2d3efc77e2da25
Merged-In: I006db64f001fb70d2bb294a15a2d3efc77e2da25
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index 90b9346..bbeaf2a 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -71,7 +71,6 @@
 import com.android.settings.biometrics.BiometricsSplitScreenDialog;
 import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.flags.Flags;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.display.DisplayDensityUtils;
 
@@ -252,12 +251,6 @@
 
             setContentView(layout);
             setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
-
-            if (Flags.udfpsEnrollCalibration()) {
-                mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
-                        .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState,
-                                getIntent());
-            }
         } else if (mCanAssumeSfps) {
             mSfpsEnrollmentFeature = FeatureFactory.getFeatureFactory()
                     .getFingerprintFeatureProvider().getSfpsEnrollmentFeature();
@@ -342,6 +335,15 @@
 
         final Configuration config = getApplicationContext().getResources().getConfiguration();
         maybeHideSfpsText(config);
+
+        if (!mIsSetupWizard) {
+            mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
+                    .getUdfpsEnrollCalibrator(getApplicationContext(), null, getIntent());
+            if (mCalibrator != null) {
+                mCalibrator.onWaitingPage(getLifecycle(),
+                        getSupportFragmentManager(), null);
+            }
+        }
     }
 
     private void setHelpAnimation() {
@@ -371,11 +373,6 @@
         super.onSaveInstanceState(outState);
         outState.putBoolean(KEY_STATE_CANCELED, mIsCanceled);
         outState.putInt(KEY_STATE_PREVIOUS_ROTATION, mPreviousRotation);
-        if (Flags.udfpsEnrollCalibration()) {
-            if (mCalibrator != null) {
-                mCalibrator.onSaveInstanceState(outState);
-            }
-        }
     }
 
     private void restoreSavedState(Bundle savedInstanceState) {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
index 6b7538a..aeb0dac 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -167,7 +167,7 @@
                         .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState,
                                 getIntent());
                 if (mCalibrator != null) {
-                    mCalibrator.onFindSensorPage(
+                    mCalibrator.onWaitingPage(
                             getLifecycle(),
                             getSupportFragmentManager(),
                             this::enableUdfpsLottieAndNextButton
@@ -296,7 +296,7 @@
                 getIntent().getIntExtra(BiometricUtils.EXTRA_ENROLL_REASON, -1));
         if (Flags.udfpsEnrollCalibration()) {
             if (mCalibrator != null) {
-                ret.putExtras(mCalibrator.getExtrasForNextIntent(true));
+                ret.putExtras(mCalibrator.getExtrasForNextIntent());
             }
         }
         return ret;
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
index f92cfbf..59e4035 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
@@ -384,7 +384,7 @@
         }
         if (Flags.udfpsEnrollCalibration()) {
             if (mCalibrator != null) {
-                intent.putExtras(mCalibrator.getExtrasForNextIntent(false));
+                intent.putExtras(mCalibrator.getExtrasForNextIntent());
             }
         }
         intent.putExtra(BiometricUtils.EXTRA_ENROLL_REASON,
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index 2aacbe4..9dac46d 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -88,6 +88,7 @@
 import com.android.settingslib.widget.FooterPreference;
 import com.android.settingslib.widget.TwoTargetPreference;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.util.DeviceHelper;
 
 import java.util.ArrayList;
@@ -111,6 +112,9 @@
     private static final int RESULT_SKIP = BiometricEnrollBase.RESULT_SKIP;
     private static final int RESULT_TIMEOUT = BiometricEnrollBase.RESULT_TIMEOUT;
 
+    @Nullable
+    private UdfpsEnrollCalibrator mCalibrator;
+
     @Override
     public Intent getIntent() {
         Intent modIntent = new Intent(super.getIntent());
@@ -131,6 +135,13 @@
         setTitle(msg);
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+        mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
+                .getUdfpsEnrollCalibrator(getApplicationContext(), null, null);
+    }
+
     /**
      * @param context
      * @return true if the Fingerprint hardware is detected.
@@ -800,6 +811,11 @@
                 }
                 intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
                 intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
+                if (((FingerprintSettings) getActivity()).mCalibrator != null) {
+                    intent.putExtras(
+                            (((FingerprintSettings) getActivity()).mCalibrator)
+                                    .getExtrasForNextIntent());
+                }
                 startActivityForResult(intent, ADD_FINGERPRINT_REQUEST);
             } else if (pref instanceof FingerprintPreference) {
                 FingerprintPreference fpref = (FingerprintPreference) pref;
diff --git a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
index 6590530..3037c2a 100644
--- a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
@@ -51,7 +51,7 @@
         SetupWizardUtils.copySetupExtras(getIntent(), intent);
         if (Flags.udfpsEnrollCalibration()) {
             if (mCalibrator != null) {
-                intent.putExtras(mCalibrator.getExtrasForNextIntent(true));
+                intent.putExtras(mCalibrator.getExtrasForNextIntent());
             }
         }
         return intent;
diff --git a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java
index 0ee9ad3..c263b2e 100644
--- a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java
@@ -49,7 +49,7 @@
         SetupWizardUtils.copySetupExtras(getIntent(), intent);
         if (Flags.udfpsEnrollCalibration()) {
             if (mCalibrator != null) {
-                intent.putExtras(mCalibrator.getExtrasForNextIntent(false));
+                intent.putExtras(mCalibrator.getExtrasForNextIntent());
             }
         }
         return intent;
diff --git a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollCalibrator.kt b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollCalibrator.kt
index c54c6b5..22a69ba 100644
--- a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollCalibrator.kt
+++ b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollCalibrator.kt
@@ -6,13 +6,14 @@
 
 interface UdfpsEnrollCalibrator {
 
-    fun getExtrasForNextIntent(isEnrolling: Boolean): Bundle
+    fun getExtrasForNextIntent(): Bundle
 
     fun onSaveInstanceState(outState: Bundle)
 
-    fun onFindSensorPage(
+    fun onWaitingPage(
             lifecycle: Lifecycle,
             fragmentManager: FragmentManager,
-            enableEnrollingRunnable: Runnable
+            enableEnrollingRunnable: Runnable?
     )
+
 }
\ No newline at end of file