From a2085f18b759f012bd4445b283abbbd31918db2f Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Tue, 26 Nov 2024 17:01:51 +0000 Subject: [PATCH] Fast enroll Test: manual Bug: 375320734 Flag: com.google.android.settings.flags.pixel_fingerprint_enroll Change-Id: Iaf3acfca8471165514660a2403e69be161392501 --- AndroidManifest.xml | 4 ++++ .../ActivityEmbeddingRulesController.java | 3 ++- .../biometrics/fingerprint/FingerprintEnroll.kt | 10 +++++++++- .../FingerprintEnrollActivityClassProvider.kt | 2 ++ .../fingerprint/FingerprintFeatureProvider.java | 2 +- .../biometrics/fingerprint/FingerprintSettings.java | 7 ++++--- .../biometrics/fingerprint/FingerprintEnrollTest.kt | 12 +++++++++++- 7 files changed, 33 insertions(+), 7 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5cd2bb394f8..18709353cc4 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2792,6 +2792,10 @@ android:exported="false" android:theme="@style/GlifTheme.Light" android:taskAffinity="com.android.settings.root" /> + + get() = enrollActivityProvider.addAnother + } + /** * The class of the next activity to launch. This is open to allow subclasses to provide their * own behavior. Defaults to the default activity class provided by the @@ -49,7 +57,7 @@ open class FingerprintEnroll: AppCompatActivity() { get() = enrollActivityProvider.default protected val enrollActivityProvider: FingerprintEnrollActivityClassProvider - get() = featureFactory.fingerprintFeatureProvider.enrollActivityClassProvider + get() = featureFactory.fingerprintFeatureProvider.getEnrollActivityClassProvider(this) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollActivityClassProvider.kt b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollActivityClassProvider.kt index 853a3df01b8..14261e9524a 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollActivityClassProvider.kt +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollActivityClassProvider.kt @@ -26,6 +26,8 @@ open class FingerprintEnrollActivityClassProvider { get() = SetupFingerprintEnrollIntroduction::class.java open val internal: Class get() = FingerprintEnrollIntroductionInternal::class.java + open val addAnother: Class + get() = FingerprintEnrollEnrolling::class.java companion object { @JvmStatic diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintFeatureProvider.java b/src/com/android/settings/biometrics/fingerprint/FingerprintFeatureProvider.java index baa88b5655a..06f8d74b802 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintFeatureProvider.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintFeatureProvider.java @@ -57,7 +57,7 @@ public interface FingerprintFeatureProvider { * @return the provider */ @NonNull - default FingerprintEnrollActivityClassProvider getEnrollActivityClassProvider() { + default FingerprintEnrollActivityClassProvider getEnrollActivityClassProvider(@NonNull Context context) { return FingerprintEnrollActivityClassProvider.getInstance(); } } diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 7d4716837a4..d8a14f1e450 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -537,8 +537,9 @@ public class FingerprintSettings extends SubSettings { activity, DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT, mUserId); final Intent helpIntent = HelpUtils.getHelpIntent( activity, getString(getHelpResource()), activity.getClass().getName()); - final View.OnClickListener learnMoreClickListener = (v) -> - activity.startActivityForResult(helpIntent, 0); + final View.OnClickListener learnMoreClickListener = (v) -> { + activity.startActivityForResult(helpIntent, 0); + }; mFooterColumns.clear(); if (admin != null) { @@ -910,7 +911,7 @@ public class FingerprintSettings extends SubSettings { mIsEnrolling = true; Intent intent = new Intent(); intent.setClassName(SETTINGS_PACKAGE_NAME, - FingerprintEnrollEnrolling.class.getName()); + FingerprintEnroll.AddAdditionalFingerprint.class.getName()); intent.putExtra(Intent.EXTRA_USER_ID, mUserId); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); if (mCalibrator != null) { diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollTest.kt b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollTest.kt index 07cdffb942c..0bfa9f31220 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollTest.kt +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollTest.kt @@ -24,6 +24,7 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.`when` +import org.mockito.kotlin.any import org.robolectric.Robolectric import org.robolectric.RobolectricTestRunner import org.robolectric.Shadows @@ -46,7 +47,7 @@ class FingerprintEnrollTest { @Before fun setUp() { featureFactory = FakeFeatureFactory.setupForTest() - `when`(featureFactory.fingerprintFeatureProvider.enrollActivityClassProvider) + `when`(featureFactory.fingerprintFeatureProvider.getEnrollActivityClassProvider(any())) .thenReturn(activityProvider) } @@ -81,6 +82,15 @@ class FingerprintEnrollTest { verifyLaunchNextActivity(activity, activityProvider.internal) } + @Test + fun testAndFinishLaunchAddAdditional() { + // Run + val activity = setupActivity(FingerprintEnroll.AddAdditionalFingerprint::class.java) + + // Verify + verifyLaunchNextActivity(activity, activityProvider.addAnother) + } + private fun verifyLaunchNextActivity( currentActivityInstance : FingerprintEnroll, nextActivityClass: Class