From 69c1241d3b4b07621c3ccfa6f58bc6db179739bf Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Thu, 6 Oct 2016 19:11:03 -0700 Subject: [PATCH] Allow sysui navigation to work when application occludes keyguard Fixes bug 30650150 Change-Id: Ie4a858dcfd259c733cd32c3c2b1dec2ff437f1ab --- .../systemui/statusbar/phone/PhoneStatusBar.java | 5 +++-- .../systemui/statusbar/policy/KeyguardMonitor.java | 10 ++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 04124b5c28ad3..1d91346673c31 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -2731,7 +2731,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, public void handleSystemNavigationKey(int key) { if (SPEW) Log.d(TAG, "handleSystemNavigationKey: " + key); if (!panelsEnabled() || !mKeyguardMonitor.isDeviceInteractive() - || mKeyguardMonitor.isShowing()) { + || mKeyguardMonitor.isShowing() && !mKeyguardMonitor.isOccluded()) { return; } @@ -4351,7 +4351,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, checkBarModes(); updateMediaMetaData(false, mState != StatusBarState.KEYGUARD); mKeyguardMonitor.notifyKeyguardState(mStatusBarKeyguardViewManager.isShowing(), - mStatusBarKeyguardViewManager.isSecure()); + mStatusBarKeyguardViewManager.isSecure(), + mStatusBarKeyguardViewManager.isOccluded()); Trace.endSection(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java index c175180bc9978..44816f92b222f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java @@ -38,6 +38,7 @@ public final class KeyguardMonitor extends KeyguardUpdateMonitorCallback { private int mCurrentUser; private boolean mShowing; private boolean mSecure; + private boolean mOccluded; private boolean mCanSkipBouncer; private boolean mListening; @@ -81,6 +82,10 @@ public final class KeyguardMonitor extends KeyguardUpdateMonitorCallback { return mSecure; } + public boolean isOccluded() { + return mOccluded; + } + public boolean canSkipBouncer() { return mCanSkipBouncer; } @@ -99,10 +104,11 @@ public final class KeyguardMonitor extends KeyguardUpdateMonitorCallback { } } - public void notifyKeyguardState(boolean showing, boolean secure) { - if (mShowing == showing && mSecure == secure) return; + public void notifyKeyguardState(boolean showing, boolean secure, boolean occluded) { + if (mShowing == showing && mSecure == secure && mOccluded == occluded) return; mShowing = showing; mSecure = secure; + mOccluded = occluded; notifyKeyguardChanged(); }