summaryrefslogtreecommitdiffstats
path: root/packages/Keyguard
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2015-08-19 01:13:28 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-19 01:13:28 +0000
commitcaa6cb3a2f8118df6e14862b5977d82b32771775 (patch)
treef44ec1dafebcdba3f2a471763a98824165ff459b /packages/Keyguard
parentca3c865da2df561f675ff4faf92e0e9b4c97ef2d (diff)
parent394686efbb51e7c05e230c4ad3695fadc3aa85a0 (diff)
downloadframeworks_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.java29
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java11
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