Merge "Fixed unicorn multi-enrollment flow." into tm-d1-dev am: 431542dddc am: e30a71787e am: 54b7ac755a

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/19093051

Change-Id: I8a39ef5bcd58b5d525e5933a95bbbf28ae1a30c7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
index dda3997..e682934 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
@@ -333,6 +333,8 @@
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
 
+        Log.d(TAG,
+                "onActivityResult(requestCode=" + requestCode + ", resultCode=" + resultCode + ")");
         // single enrollment is handled entirely by the launched activity
         // this handles multi enroll or if parental consent is required
         if (mParentalConsentHelper != null) {
diff --git a/src/com/android/settings/biometrics/BiometricEnrollBase.java b/src/com/android/settings/biometrics/BiometricEnrollBase.java
index ad9b64e..eea1bad 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollBase.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollBase.java
@@ -184,7 +184,8 @@
     @Override
     protected void onStop() {
         super.onStop();
-        if (!isChangingConfigurations() && shouldFinishWhenBackgrounded()) {
+        if (!isChangingConfigurations() && shouldFinishWhenBackgrounded()
+                && !BiometricUtils.isAnyMultiBiometricFlow(this)) {
             setResult(RESULT_TIMEOUT);
             finish();
         }
diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
index 62114d2..acfe5a1 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
@@ -24,6 +24,7 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
 
@@ -302,7 +303,8 @@
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        // TODO(b/229924331): Add tests for the enrollment flows.
+        Log.d(TAG,
+                "onActivityResult(requestCode=" + requestCode + ", resultCode=" + resultCode + ")");
         final boolean cameFromMultiBioFpAuthAddAnother =
                 requestCode == BiometricUtils.REQUEST_ADD_ANOTHER
                 && BiometricUtils.isMultiBiometricFingerprintEnrollmentFlow(this);
diff --git a/src/com/android/settings/biometrics/BiometricUtils.java b/src/com/android/settings/biometrics/BiometricUtils.java
index 7e5a22f..f395aca 100644
--- a/src/com/android/settings/biometrics/BiometricUtils.java
+++ b/src/com/android/settings/biometrics/BiometricUtils.java
@@ -240,7 +240,6 @@
         return activity.getIntent().hasExtra(MultiBiometricEnrollHelper.EXTRA_ENROLL_AFTER_FACE);
     }
 
-
     /**
      * Used for checking if a multi-biometric enrollment flowstarts with Fingerprint
      * and ends with Face.
@@ -254,6 +253,18 @@
                 MultiBiometricEnrollHelper.EXTRA_ENROLL_AFTER_FINGERPRINT);
     }
 
+    /**
+     * Used to check if the activity is a multi biometric flow activity.
+     *
+     * @param activity Activity to check
+     * @return True if the activity is going through a multi-biometric enrollment flow, that starts
+     * with Fingerprint.
+     */
+    public static boolean isAnyMultiBiometricFlow(@NonNull Activity activity) {
+        return isMultiBiometricFaceEnrollmentFlow(activity)
+                || isMultiBiometricFingerprintEnrollmentFlow(activity);
+    }
+
     public static void copyMultiBiometricExtras(@NonNull Intent fromIntent,
             @NonNull Intent toIntent) {
         PendingIntent pendingIntent = (PendingIntent) fromIntent.getExtra(
diff --git a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
index 302c9e1..3a61d5e 100644
--- a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
@@ -74,7 +74,8 @@
                 getSupportFragmentManager()
                         .beginTransaction().remove(mSidecar).commitAllowingStateLoss();
             }
-            if (!WizardManagerHelper.isAnySetupWizard(getIntent())) {
+            if (!WizardManagerHelper.isAnySetupWizard(getIntent())
+                    && !BiometricUtils.isAnyMultiBiometricFlow(this)) {
                 setResult(RESULT_TIMEOUT);
             }
             finish();
diff --git a/src/com/android/settings/biometrics/ParentalConsentHelper.java b/src/com/android/settings/biometrics/ParentalConsentHelper.java
index 40ff8ea..f39f876 100644
--- a/src/com/android/settings/biometrics/ParentalConsentHelper.java
+++ b/src/com/android/settings/biometrics/ParentalConsentHelper.java
@@ -139,12 +139,12 @@
 
     @Nullable
     private Intent getNextConsentIntent(@NonNull Context context) {
-        if (mRequireFace && mConsentFace == null) {
-            return new Intent(context, FaceEnrollParentalConsent.class);
-        }
         if (mRequireFingerprint && mConsentFingerprint == null) {
             return new Intent(context, FingerprintEnrollParentalConsent.class);
         }
+        if (mRequireFace && mConsentFace == null) {
+            return new Intent(context, FaceEnrollParentalConsent.class);
+        }
         return null;
     }
 
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollParentalConsent.java b/src/com/android/settings/biometrics/face/FaceEnrollParentalConsent.java
index 0f384c2..a3a745d 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollParentalConsent.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollParentalConsent.java
@@ -53,11 +53,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        final String text =
-                getText(R.string.security_settings_face_enroll_introduction_consent_message_0)
-                + "\n\n"
-                + getText(R.string.security_settings_face_enroll_introduction_consent_message);
-        setDescriptionText(text);
+        setDescriptionText(R.string.security_settings_face_enroll_introduction_consent_message_0);
     }
 
     @Override
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
index 387f216..627a514 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -21,6 +21,7 @@
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.OrientationEventListener;
 import android.view.Surface;
 import android.view.View;
@@ -48,6 +49,9 @@
 public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
         BiometricEnrollSidecar.Listener {
 
+
+    private static final String TAG = "FingerprintEnrollFindSensor";
+
     @Nullable
     private FingerprintFindSensorAnimation mAnimation;
 
@@ -294,6 +298,8 @@
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        Log.d(TAG,
+                "onActivityResult(requestCode=" + requestCode + ", resultCode=" + resultCode + ")");
         boolean enrolledFingerprint = false;
         if (data != null) {
             enrolledFingerprint = data.getBooleanExtra(EXTRA_FINISHED_ENROLL_FINGERPRINT, false);
diff --git a/tests/unit/src/com/android/settings/biometrics/ParentalConsentHelperTest.java b/tests/unit/src/com/android/settings/biometrics/ParentalConsentHelperTest.java
index abb5355..175c2cf 100644
--- a/tests/unit/src/com/android/settings/biometrics/ParentalConsentHelperTest.java
+++ b/tests/unit/src/com/android/settings/biometrics/ParentalConsentHelperTest.java
@@ -82,7 +82,7 @@
     }
 
     @Test
-    public void testLaunchNext_face_and_fingerprint_all_consent() {
+    public void testLaunchNext__fingerprint_all_consent() {
         testLaunchNext(
                 true /* requireFace */, true /* grantFace */,
                 true /* requireFingerprint */, true /* grantFace */,
@@ -158,13 +158,13 @@
             boolean requireFingerprint, boolean grantFingerprint,
             long gkpw) {
         final List<Pair<String, Boolean>> expectedLaunches = new ArrayList<>();
-        if (requireFace) {
-            expectedLaunches.add(new Pair(FaceEnrollParentalConsent.class.getName(), grantFace));
-        }
         if (requireFingerprint) {
             expectedLaunches.add(
                     new Pair(FingerprintEnrollParentalConsent.class.getName(), grantFingerprint));
         }
+        if (requireFace) {
+            expectedLaunches.add(new Pair(FaceEnrollParentalConsent.class.getName(), grantFace));
+        }
 
         // initial consent status
         final ParentalConsentHelper helper = new ParentalConsentHelper(gkpw);