diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java index 3b3e61d4b18..964e0464c1a 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java @@ -159,6 +159,14 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase startIconAnimation(); } + @Override + protected void onPause() { + super.onPause(); + if (mSidecar != null) { + mSidecar.setListener(null); + } + } + private void startIconAnimation() { mIconAnimationDrawable.start(); } diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java index 0225f11a6cc..9ab561d2c1b 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java @@ -32,6 +32,8 @@ import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.IFingerprintManager; +import java.util.ArrayList; + /** * Sidecar fragment to handle the state around fingerprint enrollment. */ @@ -47,6 +49,57 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment { private boolean mDone; private int mUserId; private IFingerprintManager mFingerprintManager; + private ArrayList mQueuedEvents; + + private abstract class QueuedEvent { + public abstract void send(Listener listener); + } + + private class QueuedEnrollmentProgress extends QueuedEvent { + int enrollmentSteps; + int remaining; + public QueuedEnrollmentProgress(int enrollmentSteps, int remaining) { + this.enrollmentSteps = enrollmentSteps; + this.remaining = remaining; + } + + @Override + public void send(Listener listener) { + listener.onEnrollmentProgressChange(enrollmentSteps, remaining); + } + } + + private class QueuedEnrollmentHelp extends QueuedEvent { + int helpMsgId; + CharSequence helpString; + public QueuedEnrollmentHelp(int helpMsgId, CharSequence helpString) { + this.helpMsgId = helpMsgId; + this.helpString = helpString; + } + + @Override + public void send(Listener listener) { + listener.onEnrollmentHelp(helpString); + } + } + + private class QueuedEnrollmentError extends QueuedEvent { + int errMsgId; + CharSequence errString; + public QueuedEnrollmentError(int errMsgId, CharSequence errString) { + this.errMsgId = errMsgId; + this.errString = errString; + } + + @Override + public void send(Listener listener) { + listener.onEnrollmentError(errMsgId, errString); + } + } + + public FingerprintEnrollSidecar() { + mQueuedEvents = new ArrayList<>(); + } @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -104,6 +157,13 @@ public class FingerprintEnrollSidecar extends InstrumentedFragment { public void setListener(Listener listener) { mListener = listener; + if (mListener != null) { + for (int i=0; i