From f253eeb9d3d23d02746406b2b0e721ba3b4563ce Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Wed, 15 Apr 2015 18:03:08 -0700 Subject: [PATCH] Fix lockscreen bugs with SHOW_WHEN_LOCKED When unlocking to a SHOW_WHEN_LOCKED activity by clicking a notification, we don't get a the startKeyguardExitAnimation because Keyguard is not actually going away. Instead, we start it ourselves. Also fixes the bug where restarting Keyguard while it's occluded lead to an inconsistent state where the user got stuck on the lockscreen. Bug: 16481924 Change-Id: Iebc5bdd1287bbb81415ae01c7428850acc16c53f --- .../com/android/systemui/keyguard/KeyguardViewMediator.java | 6 ++++++ .../server/policy/keyguard/KeyguardServiceDelegate.java | 3 +++ 2 files changed, 9 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 065d62ebcb838..97a4c551379cc 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -867,6 +867,12 @@ public class KeyguardViewMediator extends SystemUI { */ private void handleSetOccluded(boolean isOccluded) { synchronized (KeyguardViewMediator.this) { + if (mHiding && isOccluded) { + // We're in the process of going away but WindowManager wants to show a + // SHOW_WHEN_LOCKED activity instead. + startKeyguardExitAnimation(0, 0); + } + if (mOccluded != isOccluded) { mOccluded = isOccluded; mStatusBarKeyguardViewManager.setOccluded(isOccluded); diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java index 75c33af2a1e92..1a52933056fa0 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java @@ -145,6 +145,9 @@ public class KeyguardServiceDelegate { if (mKeyguardState.bootCompleted) { mKeyguardService.onBootCompleted(); } + if (mKeyguardState.occluded) { + mKeyguardService.setOccluded(mKeyguardState.occluded); + } } @Override