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 6bed01f315)
This commit is contained in:
Hao Dong
2022-11-02 17:30:21 +00:00
parent b93416b26d
commit 3ca9965a96
2 changed files with 16 additions and 2 deletions

View File

@@ -78,7 +78,9 @@ public class FingerprintStatusUtils {
* Returns the class name of the Settings page corresponding to fingerprint settings. * Returns the class name of the Settings page corresponding to fingerprint settings.
*/ */
public String getSettingsClassName() { public String getSettingsClassName() {
return FingerprintSettings.class.getName(); return !hasEnrolled() && isAvailable()
? FingerprintEnrollIntroductionInternal.class.getName()
: FingerprintSettings.class.getName();
} }
/** /**

View File

@@ -179,8 +179,20 @@ public class FingerprintStatusUtilsTest {
} }
@Test @Test
public void getSettingsClassName_whenNotEnrolled_returnsFingerprintSettings() { public void getSettingsClassName_whenNotEnrolled_fingerprintOnly_returnsFingerprintEnrollInduction() {
when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(false); 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()) assertThat(mFingerprintStatusUtils.getSettingsClassName())
.isEqualTo(FingerprintSettings.class.getName()); .isEqualTo(FingerprintSettings.class.getName());