From 3ca9965a9693894e913d4b97819b27aa0b644e21 Mon Sep 17 00:00:00 2001 From: Hao Dong Date: Wed, 2 Nov 2022 17:30:21 +0000 Subject: [PATCH] Fix the flicker of FingerprintSettings before FingerprintEnrollIntro. Change to launch FingerprintEnrollIntroductionInternal directly when no fingerprint enrolled and fingerprint is the only biometrics. This avoids the flicker of FingerPrintSettings before showing the enroll introduction. This partially reverts the change in ag/19732076. Bug: 256334588 Test: manual test following cases on fp-only devices, and enable don't keep activity and test them again. 1. fp enrollment on SUW 2. fp add another on SUW 3. add first fp on Security Settings 4. add another fp on Security Settings Test: atest FingerprintStatusUtilsTest BiometricsSafetySourceTest Change-Id: I057b00fbca6660012887ebedf4d65c2c3d35792b Merged-In: I057b00fbca6660012887ebedf4d65c2c3d35792b (cherry picked from commit 6bed01f3159115d158eaf264661721641ac33f7c) --- .../fingerprint/FingerprintStatusUtils.java | 4 +++- .../fingerprint/FingerprintStatusUtilsTest.java | 14 +++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java index 71cdcf73b84..18db774214c 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java @@ -78,7 +78,9 @@ public class FingerprintStatusUtils { * Returns the class name of the Settings page corresponding to fingerprint settings. */ public String getSettingsClassName() { - return FingerprintSettings.class.getName(); + return !hasEnrolled() && isAvailable() + ? FingerprintEnrollIntroductionInternal.class.getName() + : FingerprintSettings.class.getName(); } /** diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java index 69e5e2f485b..a5d74a03500 100644 --- a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java +++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java @@ -179,8 +179,20 @@ public class FingerprintStatusUtilsTest { } @Test - public void getSettingsClassName_whenNotEnrolled_returnsFingerprintSettings() { + public void getSettingsClassName_whenNotEnrolled_fingerprintOnly_returnsFingerprintEnrollInduction() { when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(false); + when(mFingerprintManager.isHardwareDetected()).thenReturn(true); + when(mFaceManager.isHardwareDetected()).thenReturn(false); + + assertThat(mFingerprintStatusUtils.getSettingsClassName()) + .isEqualTo(FingerprintEnrollIntroductionInternal.class.getName()); + } + + @Test + public void getSettingsClassName_whenNotEnrolled_fingerprintNotOnly_returnsFingerprintSettings() { + when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(false); + when(mFingerprintManager.isHardwareDetected()).thenReturn(true); + when(mFaceManager.isHardwareDetected()).thenReturn(true); assertThat(mFingerprintStatusUtils.getSettingsClassName()) .isEqualTo(FingerprintSettings.class.getName());