From e9d50cd91bd48330064bef2f0f6c825bf79f2466 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Tue, 11 Jun 2019 20:40:30 -0700 Subject: [PATCH] Call finish() when enrollment loses focus Bug: 134971919 Test: Entering keyguard on any enrollment screen finishes enrollment now Test: Going back/forward works Change-Id: I2c80a5586c10fa3feb780a5eadfe203abed52dea --- .../biometrics/BiometricEnrollIntroduction.java | 7 +++++++ .../biometrics/face/FaceEnrollEducation.java | 14 ++++++++++++++ .../biometrics/face/FaceEnrollIntroduction.java | 10 ++++++++++ 3 files changed, 31 insertions(+) diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index d5414c9664d..d94686e3f27 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -47,6 +47,8 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase private boolean mHasPassword; private boolean mBiometricUnlockDisabledByAdmin; private TextView mErrorText; + protected boolean mConfirmingCredentials; + protected boolean mNextClicked; /** * @return true if the biometric is disabled by a device administrator @@ -149,10 +151,12 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase if (!mHasPassword) { // No password registered, launch into enrollment wizard. + mConfirmingCredentials = true; launchChooseLock(); } else if (mToken == null) { // It's possible to have a token but mLaunchedConfirmLock == false, since // ChooseLockGeneric can pass us a token. + mConfirmingCredentials = true; launchConfirmLock(getConfirmLockTitleResId(), getChallenge()); } } @@ -182,6 +186,7 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase @Override protected void onNextButtonClick(View view) { + mNextClicked = true; if (checkMaxEnrolled() == 0) { // Lock thingy is already set up, launch directly to the next page launchNextEnrollingActivity(mToken); @@ -249,12 +254,14 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase mToken = data.getByteArrayExtra( ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out); + mConfirmingCredentials = false; return; } else { setResult(resultCode, data); finish(); } } else if (requestCode == CONFIRM_REQUEST) { + mConfirmingCredentials = false; if (resultCode == RESULT_OK && data != null) { mToken = data.getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out); diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java index 16b0fcbc2c3..4bf5a1d4b27 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java @@ -61,6 +61,7 @@ public class FaceEnrollEducation extends BiometricEnrollBase { private Handler mHandler; private Intent mResultIntent; private TextView mDescriptionText; + private boolean mNextClicked; private CompoundButton.OnCheckedChangeListener mSwitchDiversityListener = new CompoundButton.OnCheckedChangeListener() { @@ -184,6 +185,17 @@ public class FaceEnrollEducation extends BiometricEnrollBase { } } + @Override + protected void onStop() { + super.onStop(); + + if (!isChangingConfigurations() && !WizardManagerHelper.isAnySetupWizard(getIntent()) + && !mNextClicked) { + setResult(RESULT_SKIP); + finish(); + } + } + @Override protected void onNextButtonClick(View view) { final Intent intent = new Intent(); @@ -193,6 +205,7 @@ public class FaceEnrollEducation extends BiometricEnrollBase { if (mUserId != UserHandle.USER_NULL) { intent.putExtra(Intent.EXTRA_USER_ID, mUserId); } + intent.putExtra(EXTRA_FROM_SETTINGS_SUMMARY, mFromSettingsSummary); final String flattenedString = getString(R.string.config_face_enroll); if (!TextUtils.isEmpty(flattenedString)) { ComponentName componentName = ComponentName.unflattenFromString(flattenedString); @@ -204,6 +217,7 @@ public class FaceEnrollEducation extends BiometricEnrollBase { if (mResultIntent != null) { intent.putExtras(mResultIntent); } + mNextClicked = true; WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); startActivityForResult(intent, BIOMETRIC_FIND_SENSOR_REQUEST); } diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index 525c1a3ee42..6686c96f928 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -77,6 +77,16 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { ); } + @Override + protected void onStop() { + super.onStop(); + + if (!isChangingConfigurations() && !mConfirmingCredentials && !mNextClicked + && !WizardManagerHelper.isAnySetupWizard(getIntent())) { + finish(); + } + } + @Override protected boolean isDisabledByAdmin() { return RestrictedLockUtilsInternal.checkIfKeyguardFeaturesDisabled(