From aea1bdec2d20753bbb64b53ac95b347395877493 Mon Sep 17 00:00:00 2001 From: Curtis Belmonte Date: Mon, 6 Jan 2020 12:13:36 -0800 Subject: [PATCH] Fix issues with SUW on fingerprint devices Fixes the following issues related to fingerprint/face in Setup Wizard: - Ensures super.onStop() is called by all enrollment-related Activities Test: Proceed through Setup Wizard on factory reset Pixel 3 XL Before: Periodic crash dialogs and stuck on fingerprint enrollment After: Able to proceed through wizard and enroll fingerprint normally Bug: 147325159 Change-Id: I76eb8c944140aa68f78eaea3702f440102b779c6 --- .../settings/biometrics/BiometricsEnrollEnrolling.java | 8 ++++++++ .../fingerprint/FingerprintEnrollEnrolling.java | 6 ++++-- .../fingerprint/FingerprintEnrollFindSensor.java | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java index 17a933b425c..f131e35457d 100644 --- a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java @@ -60,6 +60,8 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase @Override protected void onStop() { + super.onStop(); + if (mSidecar != null) { mSidecar.setListener(null); } @@ -77,6 +79,12 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase } } + @Override + protected boolean shouldFinishWhenBackgrounded() { + // Prevent super.onStop() from finishing, since we handle this in our onStop(). + return false; + } + @Override public void onBackPressed() { if (mSidecar != null) { diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index 8194878c07b..3831b07e1a7 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -217,13 +217,15 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { private void stopIconAnimation() { mAnimationCancelled = true; - mIconAnimationDrawable.stop(); + if (mIconAnimationDrawable != null) { + mIconAnimationDrawable.stop(); + } } @Override protected void onStop() { - stopIconAnimation(); super.onStop(); + stopIconAnimation(); } private void animateProgress(int progress) { diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java index 95082689bd5..dbedb4a4ebd 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java @@ -115,10 +115,10 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase { @Override protected void onStop() { + super.onStop(); if (mAnimation != null) { mAnimation.pauseAnimation(); } - super.onStop(); } @Override