From 6b6d8c0d6d617807f7daef1cf6003a7ca0f7bc4b Mon Sep 17 00:00:00 2001 From: Milton Wu Date: Thu, 28 Jul 2022 09:11:17 +0000 Subject: [PATCH] Refactor BiometricEnrollBase::onStop() During BiometricEnrollBase::onStop(), it judeges activity result and determine finishing self or not by a common rule. And it causes some problems. 1. It may override original setResult() which was set by its child activity. 2. If we change the judgmental rule in BiometricEnollBase, we need to manully test all override class cases to make sure everything works well. It makes us hard to change the criteria here. Move code in BiometricEnrollBase::onStop() to its extended class to have more flexiable. Bug: 197717071 Test: Run ROBOTEST for SetupFingerprintEnrollIntroductionTest SetupFingerprintEnrollFinishTest FingerprintEnrollEnrollingTest FingerprintEnrollFindSensorTest FingerprintEnrollIntroductionTest SetupFingerprintEnrollFindSensorTest Test: Manully test fingerprint/faceauth flow in settings or SUW Change-Id: I5d6c63cf537c0146bc03bd2b36ee3e1d68918a19 --- .../settings/biometrics/BiometricEnrollBase.java | 10 ---------- .../biometrics/BiometricEnrollIntroduction.java | 10 ++++++++++ .../settings/biometrics/BiometricHandoffActivity.java | 10 ++++++++++ .../biometrics/BiometricsEnrollEnrolling.java | 7 ++++++- .../settings/biometrics/face/FaceEnrollEducation.java | 10 ++++++++++ .../settings/biometrics/face/FaceEnrollFinish.java | 11 +++++++++++ .../fingerprint/FingerprintEnrollFindSensor.java | 7 ++++++- .../fingerprint/FingerprintEnrollFinish.java | 10 ++++++++++ 8 files changed, 63 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/biometrics/BiometricEnrollBase.java b/src/com/android/settings/biometrics/BiometricEnrollBase.java index eea1bad91a9..75e409825ea 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollBase.java +++ b/src/com/android/settings/biometrics/BiometricEnrollBase.java @@ -181,16 +181,6 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { getWindow().setStatusBarColor(getBackgroundColor()); } - @Override - protected void onStop() { - super.onStop(); - if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() - && !BiometricUtils.isAnyMultiBiometricFlow(this)) { - setResult(RESULT_TIMEOUT); - finish(); - } - } - protected boolean shouldFinishWhenBackgrounded() { return !WizardManagerHelper.isAnySetupWizard(getIntent()); } diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index acfe5a10255..d9f8bd1bf0d 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -241,6 +241,16 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase } } + @Override + protected void onStop() { + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() + && !BiometricUtils.isAnyMultiBiometricFlow(this)) { + setResult(RESULT_TIMEOUT); + finish(); + } + super.onStop(); + } + @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); diff --git a/src/com/android/settings/biometrics/BiometricHandoffActivity.java b/src/com/android/settings/biometrics/BiometricHandoffActivity.java index 7f28ced2029..2b8d89b0dfe 100644 --- a/src/com/android/settings/biometrics/BiometricHandoffActivity.java +++ b/src/com/android/settings/biometrics/BiometricHandoffActivity.java @@ -49,6 +49,16 @@ public class BiometricHandoffActivity extends BiometricEnrollBase { mFooterBarMixin.setPrimaryButton(getPrimaryFooterButton()); } + @Override + protected void onStop() { + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() + && !BiometricUtils.isAnyMultiBiometricFlow(this)) { + setResult(RESULT_TIMEOUT); + finish(); + } + super.onStop(); + } + @NonNull protected FooterButton getPrimaryFooterButton() { if (mPrimaryFooterButton == null) { diff --git a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java index 3a61d5e2243..6f68f51e911 100644 --- a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java @@ -62,7 +62,11 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase @Override protected void onStop() { - super.onStop(); + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() + && !BiometricUtils.isAnyMultiBiometricFlow(this)) { + setResult(RESULT_TIMEOUT); + finish(); + } if (mSidecar != null) { mSidecar.setListener(null); @@ -80,6 +84,7 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase } finish(); } + super.onStop(); } @Override diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java index d2d356b1104..cdd99a228a7 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java @@ -170,6 +170,16 @@ public class FaceEnrollEducation extends BiometricEnrollBase { } } + @Override + protected void onStop() { + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() + && !BiometricUtils.isAnyMultiBiometricFlow(this)) { + setResult(RESULT_TIMEOUT); + finish(); + } + super.onStop(); + } + @Override protected boolean shouldFinishWhenBackgrounded() { return super.shouldFinishWhenBackgrounded() && !mNextClicked; diff --git a/src/com/android/settings/biometrics/face/FaceEnrollFinish.java b/src/com/android/settings/biometrics/face/FaceEnrollFinish.java index 6e99cdb344a..135179475dc 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollFinish.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollFinish.java @@ -22,6 +22,7 @@ import android.view.View; import com.android.settings.R; import com.android.settings.biometrics.BiometricEnrollBase; +import com.android.settings.biometrics.BiometricUtils; import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; @@ -48,6 +49,16 @@ public class FaceEnrollFinish extends BiometricEnrollBase { ); } + @Override + protected void onStop() { + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() + && !BiometricUtils.isAnyMultiBiometricFlow(this)) { + setResult(RESULT_TIMEOUT); + finish(); + } + super.onStop(); + } + @Override public int getMetricsCategory() { return SettingsEnums.FACE_ENROLL_FINISHED; diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java index 627a5143a38..79a106559ad 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java @@ -249,10 +249,15 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements @Override protected void onStop() { - super.onStop(); if (mAnimation != null) { mAnimation.pauseAnimation(); } + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() + && !BiometricUtils.isAnyMultiBiometricFlow(this)) { + setResult(RESULT_TIMEOUT); + finish(); + } + super.onStop(); } @Override diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java index 16773d3cbda..05ca39c144a 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java @@ -108,6 +108,16 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase { } } + @Override + protected void onStop() { + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded() + && !BiometricUtils.isAnyMultiBiometricFlow(this)) { + setResult(RESULT_TIMEOUT); + finish(); + } + super.onStop(); + } + @Override protected void onNextButtonClick(View view) { updateFingerprintSuggestionEnableState();