diff options
| author | 2016-08-04 14:52:06 -0700 | |
|---|---|---|
| committer | 2016-08-05 00:05:16 +0000 | |
| commit | ddcdecc9529bc4db7187458b09d15dcb1590825c (patch) | |
| tree | 02ef727189d32f58825dd1052fb07153b0e8ee17 | |
| parent | d88eb2693b6a70af0f5fbc5881ce855e28de33aa (diff) | |
Keyguard: Improve trusted unlock while occluded
Smoothly unlocks device when going from a SHOW_WHEN_LOCKED activity
to a DISMISS_KEYGUARD activity while the device is trusted.
This change suppresses the jank from going briefly through the
lockscreen if the device is trusted and unlockable without entering
a credential.
Bug: 27410215
Change-Id: Idd86e825d37a89538a0a1f690daf6afcf94a0699
| -rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index b0f7038628e7..56683529c050 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3562,7 +3562,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public boolean canShowDismissingWindowWhileLockedLw() { - return false; + // If the keyguard is trusted, it will unlock without a challange. Therefore, windows with + // FLAG_DISMISS_KEYGUARD don't need to be force hidden, as they will unlock the phone right + // away anyways. + return mKeyguardDelegate != null && mKeyguardDelegate.isTrusted(); } private void launchAssistLongPressAction() { @@ -5261,7 +5264,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } else if (mDismissKeyguard != DISMISS_KEYGUARD_NONE) { mKeyguardHidden = false; - if (setKeyguardOccludedLw(false)) { + final boolean trusted = mKeyguardDelegate.isTrusted(); + if (trusted) { + // No need to un-occlude keyguard - we'll dimiss it right away anyways. + } else if (setKeyguardOccludedLw(false)) { changes |= FINISH_LAYOUT_REDO_LAYOUT | FINISH_LAYOUT_REDO_CONFIG | FINISH_LAYOUT_REDO_WALLPAPER; @@ -5271,7 +5277,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mHandler.post(new Runnable() { @Override public void run() { - mKeyguardDelegate.dismiss(false /* allowWhileOccluded */); + mKeyguardDelegate.dismiss(trusted /* allowWhileOccluded */); } }); } |