From 291714418c6e32ed9b39a92dd6dfa524bbd1c0b6 Mon Sep 17 00:00:00 2001 From: Vincent Wang Date: Thu, 13 Jul 2023 08:13:53 +0000 Subject: [PATCH] Fix enroll introduction page was not closed in background Bug: 291023102 Test: 1. Launch FingerprintEnrollFindSensor and back to introducntion 2. Go to home screen 3. Launch FingerprintEnrollFindSensor from recent app 4. Check if FingerprintEnrollFindSensor is stopped 5. make RunSettingsRoboTests -j96 ROBOTEST_FILTER=com.android.settings.biometrics.fingerprint Change-Id: I65504f663340a0e66d1f8bcd2e7d4b3659282884 --- .../BiometricEnrollIntroduction.java | 3 ++ .../FingerprintEnrollIntroductionTest.java | 31 ++++++++++++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index 2a350f4abd5..46f534df364 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -236,6 +236,9 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase protected void onResume() { super.onResume(); + //reset mNextClick to make sure introduction page would be closed correctly + mNextClicked = false; + final int errorMsg = checkMaxEnrolled(); if (errorMsg == 0) { mErrorText.setText(null); diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java index 69f10d629dd..3eba91c854f 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java @@ -85,6 +85,7 @@ public class FingerprintEnrollIntroductionTest { private Context mContext; private TestFingerprintEnrollIntroduction mFingerprintEnrollIntroduction; + private ActivityController mController; private static final int MAX_ENROLLMENTS = 5; private static final byte[] EXPECTED_TOKEN = new byte[] { 10, 20, 30, 40 }; @@ -121,9 +122,8 @@ public class FingerprintEnrollIntroductionTest { void setupFingerprintEnrollIntroWith(@NonNull Intent intent) { - final ActivityController controller = - Robolectric.buildActivity(TestFingerprintEnrollIntroduction.class, intent); - mFingerprintEnrollIntroduction = controller.get(); + mController = Robolectric.buildActivity(TestFingerprintEnrollIntroduction.class, intent); + mFingerprintEnrollIntroduction = mController.get(); mFingerprintEnrollIntroduction.mMockedFingerprintManager = mFingerprintManager; mFingerprintEnrollIntroduction.mMockedGatekeeperPasswordProvider = mGatekeeperPasswordProvider; @@ -137,7 +137,7 @@ public class FingerprintEnrollIntroductionTest { when(mLockPatternUtils.getActivePasswordQuality(userId)) .thenReturn(PASSWORD_QUALITY_SOMETHING); - controller.create(); + mController.create(); } void setFingerprintManagerToHave(int numEnrollments) { @@ -277,6 +277,18 @@ public class FingerprintEnrollIntroductionTest { } } + @Test + public void clickNext_onActivityResult_pause_shouldFinish() { + setupFingerprintEnrollIntroWith(newTokenOnlyIntent()); + mController.resume(); + mFingerprintEnrollIntroduction.clickNextBtn(); + mController.pause().stop(); + assertThat(mFingerprintEnrollIntroduction.shouldFinishWhenBackgrounded()).isEqualTo(false); + + mController.resume().pause().stop(); + assertThat(mFingerprintEnrollIntroduction.shouldFinishWhenBackgrounded()).isEqualTo(true); + } + private Intent newTokenOnlyIntent() { return new Intent() .putExtra(EXTRA_KEY_CHALLENGE_TOKEN, new byte[] { 1 }); @@ -362,5 +374,16 @@ public class FingerprintEnrollIntroductionTest { protected void getChallenge(GenerateChallengeCallback callback) { callback.onChallengeGenerated(mNewSensorId, mUserId, mNewChallenge); } + + @Override + protected boolean shouldFinishWhenBackgrounded() { + return super.shouldFinishWhenBackgrounded(); + } + + //mock click next btn + public void clickNextBtn() { + super.onNextButtonClick(null); + } + } }