Merge "Fix regression of pressing power key cancel sfps enrollment" into tm-qpr-dev am: b9263732ee

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

Change-Id: I60e52637331ca2801845999334a8d83f4bec04fd
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 b1b18ff..64a08d3 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -203,7 +203,9 @@
         // Do NOT cancel enrollment progress after rotating, adding mIsOrientationChanged
         // to judge if the focus changed was triggered by rotation, current WMS has triple callbacks
         // (true > false > true), we need to reset mIsOrientationChanged when !hasFocus callback.
-        if (!mIsOrientationChanged) {
+        // Side fps do not have to synchronize udfpsController overlay state, we should bypass sfps
+        // from onWindowFocusChanged() as long press sfps power key will prompt dialog to users.
+        if (!mIsOrientationChanged && !mCanAssumeSfps) {
             onCancelEnrollment(FINGERPRINT_ERROR_USER_CANCELED);
         } else {
             mIsOrientationChanged = false;
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 da47955..64786ea 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
@@ -222,6 +222,16 @@
         );
     }
 
+    @Test
+    public void fingerprintSfpsEnrollment_loseFocus_shouldNotCancel() {
+        initializeActivityFor(FingerprintSensorProperties.TYPE_POWER_BUTTON);
+
+        mActivity.onEnrollmentProgressChange(1, 1);
+        mActivity.onWindowFocusChanged(true);
+
+        verify(mActivity, never()).onCancelEnrollment(anyInt());
+    }
+
     private void initializeActivityFor(int sensorType) {
         final List<ComponentInfoInternal> componentInfo = new ArrayList<>();
         final FingerprintSensorPropertiesInternal prop =