diff options
author | Jorim Jaggi <jjaggi@google.com> | 2015-08-19 01:13:28 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-19 01:13:28 +0000 |
commit | caa6cb3a2f8118df6e14862b5977d82b32771775 (patch) | |
tree | f44ec1dafebcdba3f2a471763a98824165ff459b /packages/Keyguard | |
parent | ca3c865da2df561f675ff4faf92e0e9b4c97ef2d (diff) | |
parent | 394686efbb51e7c05e230c4ad3695fadc3aa85a0 (diff) | |
download | frameworks_base-caa6cb3a2f8118df6e14862b5977d82b32771775.zip frameworks_base-caa6cb3a2f8118df6e14862b5977d82b32771775.tar.gz frameworks_base-caa6cb3a2f8118df6e14862b5977d82b32771775.tar.bz2 |
am 394686ef: Merge "Fix race condition for doze mode and wake-and-unlocking" into mnc-dr-dev
* commit '394686efbb51e7c05e230c4ad3695fadc3aa85a0':
Fix race condition for doze mode and wake-and-unlocking
Diffstat (limited to 'packages/Keyguard')
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java | 29 | ||||
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java | 11 |
2 files changed, 40 insertions, 0 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index f39acde..806f280 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -409,6 +409,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private void handleFingerprintAuthFailed() { + if (mFpWakeMode == FP_WAKE_DIRECT_UNLOCK) { + notifyOnFingerprintWakeAndUnlockingFinished(); + } + mFpWakeMode = FP_WAKE_NONE; releaseFingerprintWakeLock(); handleFingerprintHelp(-1, mContext.getString(R.string.fingerprint_not_recognized)); } @@ -428,6 +432,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } mHandler.postDelayed(mReleaseFingerprintWakeLockRunnable, FINGERPRINT_WAKELOCK_TIMEOUT_MS); + if (mFpWakeMode == FP_WAKE_DIRECT_UNLOCK) { + notifyOnFingerprintWakeAndUnlockingStarted(); + } } else if (!mDeviceInteractive) { mFpWakeMode = FP_WAKE_TO_BOUNCER; } else { @@ -435,6 +442,24 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } + private void notifyOnFingerprintWakeAndUnlockingStarted() { + for (int i = 0; i < mCallbacks.size(); i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onFingerprintWakeAndUnlockingStarted(); + } + } + } + + private void notifyOnFingerprintWakeAndUnlockingFinished() { + for (int i = 0; i < mCallbacks.size(); i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onFingerprintWakeAndUnlockingFinished(); + } + } + } + private final Runnable mReleaseFingerprintWakeLockRunnable = new Runnable() { @Override public void run() { @@ -891,6 +916,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { cb.onScreenTurnedOn(); } } + if (mFpWakeMode == FP_WAKE_DIRECT_UNLOCK) { + notifyOnFingerprintWakeAndUnlockingFinished(); + } + mFpWakeMode = FP_WAKE_NONE; } private void handleScreenTurnedOff() { diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index 52412f7..bf9435e 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -194,6 +194,17 @@ public class KeyguardUpdateMonitorCallback { public void onFingerprintAuthenticated(int userId, boolean wakeAndUnlocking) { } /** + * Called when we might be starting a wake-and-unlock sequence. + */ + public void onFingerprintWakeAndUnlockingStarted() { } + + /** + * Called when we're done with the wake-and-unlock sequence. This can either happen when we + * figure out that the fingerprint didn't match, or when the phone is fully unlocked. + */ + public void onFingerprintWakeAndUnlockingFinished() { } + + /** * Called when fingerprint provides help string (e.g. "Try again") * @param msgId * @param helpString |