Use setting as base activity for fingerprint

Change to use FingerprintSetting as base activity when use launch
"Fingerprint Unlock" from Settings -> Security. And then we can prevent
that necesssary pop-up activites become full-screen.

Bug: 232874879

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
Test: robo test for SetupFingerprintEnrollFindSensorTest
      SetupFingerprintEnrollFinishTest
      FingerprintEnrollFindSensorTest FingerprintEnrollEnrollingTest

Change-Id: Ib1c2ef9f93fb910eed2930f871c0c69bdb94bcbd
This commit is contained in:
Milton Wu
2022-07-28 08:15:27 +00:00
parent 66479d6de4
commit 84b39c3ed0
10 changed files with 178 additions and 45 deletions

View File

@@ -165,4 +165,76 @@ public class FingerprintEnrollFindSensorTest {
null);
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(Activity.RESULT_CANCELED);
}
@Test
public void onActivityResult_EnrollRequestResultFinishShallBeSentBack() {
final int defaultActivityResult = Shadows.shadowOf(mActivity).getResultCode();
// Start enrolling
EnrollmentCallback enrollmentCallback = verifyAndCaptureEnrollmentCallback();
enrollmentCallback.onEnrollmentProgress(123);
enrollmentCallback.onEnrollmentError(FingerprintManager.FINGERPRINT_ERROR_CANCELED, "test");
// onStop shall not change default activity result
mActivity.onStop();
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(defaultActivityResult);
// onActivityResult from Enrolling activity shall be sent back
final int testResult = BiometricEnrollBase.RESULT_FINISHED;
mActivity.onActivityResult(BiometricEnrollBase.ENROLL_REQUEST, testResult, null);
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(testResult);
assertThat(mActivity.isFinishing()).isEqualTo(true);
// onStop shall not change last activity result
mActivity.onStop();
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(testResult);
}
@Test
public void onActivityResult_EnrollRequestResultSkipShallBeSentBack() {
final int defaultActivityResult = Shadows.shadowOf(mActivity).getResultCode();
// Start enrolling
EnrollmentCallback enrollmentCallback = verifyAndCaptureEnrollmentCallback();
enrollmentCallback.onEnrollmentProgress(123);
enrollmentCallback.onEnrollmentError(FingerprintManager.FINGERPRINT_ERROR_CANCELED, "test");
// onStop shall not change default activity result
mActivity.onStop();
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(defaultActivityResult);
// onActivityResult from Enrolling activity shall be sent back
final int testResult = BiometricEnrollBase.RESULT_SKIP;
mActivity.onActivityResult(BiometricEnrollBase.ENROLL_REQUEST, testResult, null);
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(testResult);
assertThat(mActivity.isFinishing()).isEqualTo(true);
// onStop shall not change last activity result
mActivity.onStop();
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(testResult);
}
@Test
public void onActivityResult_EnrollRequestResultTimeoutShallBeSentBack() {
final int defaultActivityResult = Shadows.shadowOf(mActivity).getResultCode();
// Start enrolling
EnrollmentCallback enrollmentCallback = verifyAndCaptureEnrollmentCallback();
enrollmentCallback.onEnrollmentProgress(123);
enrollmentCallback.onEnrollmentError(FingerprintManager.FINGERPRINT_ERROR_CANCELED, "test");
// onStop shall not change default activity result
mActivity.onStop();
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(defaultActivityResult);
// onActivityResult from Enrolling activity shall be sent back
final int testResult = BiometricEnrollBase.RESULT_TIMEOUT;
mActivity.onActivityResult(BiometricEnrollBase.ENROLL_REQUEST, testResult, null);
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(testResult);
assertThat(mActivity.isFinishing()).isEqualTo(true);
// onStop shall not change last activity result
mActivity.onStop();
assertThat(Shadows.shadowOf(mActivity).getResultCode()).isEqualTo(testResult);
}
}