From 82a42834b1635a77fe9f0e5127cf5df5d0b5455d Mon Sep 17 00:00:00 2001 From: lbill Date: Wed, 7 Sep 2022 03:14:14 +0000 Subject: [PATCH] Fix regression of pressing power key cancel sfps enrollment Previous ag/19699461 used to fix UdfpsControllerOverlay bug. However, we didn't consider a feature click power button to notify user with a Toast on sfps project. Bug: 245383975 Bug: 228261883 Bug: 242478941 Bug: 227905887 Test: make RunSettingsRoboTests ROBOTEST_FILTER=FingerprintEnrollEnrollingTest Test: manual verify sfps enrollment, press/long press power key would not cancel enrollment. Test: manual verify udfps enrollment, UdfpsControllerOverlay lose focus cancel enrollment. Change-Id: I44394bdb91660b27a704064a7f7cdc5d0ad95d30 --- .../fingerprint/FingerprintEnrollEnrolling.java | 4 +++- .../fingerprint/FingerprintEnrollEnrollingTest.java | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index b1b18ff1f56..64a08d3c996 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -203,7 +203,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { // 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 ef31c392af7..2c864d6d92b 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 @@ public class FingerprintEnrollEnrollingTest { ); } + @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 componentInfo = new ArrayList<>(); final FingerprintSensorPropertiesInternal prop =