Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29171441 authored by Vincent Wang's avatar Vincent Wang
Browse files

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
parent b1aaa313
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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);
+27 −4
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ public class FingerprintEnrollIntroductionTest {
    private Context mContext;

    private TestFingerprintEnrollIntroduction mFingerprintEnrollIntroduction;
    private ActivityController<TestFingerprintEnrollIntroduction> 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<TestFingerprintEnrollIntroduction> 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);
        }

    }
}