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