From 5f892c130a9799067686ac47640f9f70c8916103 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Thu, 19 Nov 2009 23:39:13 -0500 Subject: [PATCH] When keyguard is active, only allow the status bar to be opened if it is insecure and covered by another window. Fixes b/2215112 (When screen wakes to Playback screen, Notification Bar is active) Change-Id: I43a8574259788d983c30b1a22e5bfc4e95d09bee Signed-off-by: Mike Lockwood --- .../policy/impl/KeyguardViewMediator.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/policy/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/com/android/internal/policy/impl/KeyguardViewMediator.java index 6b9db604ee99d..2e97e14560c1b 100644 --- a/policy/com/android/internal/policy/impl/KeyguardViewMediator.java +++ b/policy/com/android/internal/policy/impl/KeyguardViewMediator.java @@ -22,6 +22,7 @@ import com.android.internal.widget.LockPatternUtils; import android.app.ActivityManagerNative; import android.app.AlarmManager; import android.app.PendingIntent; +import android.app.StatusBarManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -135,6 +136,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private Context mContext; private AlarmManager mAlarmManager; + private StatusBarManager mStatusBarManager; private boolean mSystemReady; @@ -446,6 +448,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (mHidden != isHidden) { mHidden = isHidden; adjustUserActivityLocked(); + adjustStatusBarLocked(); } } } @@ -899,6 +902,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, mKeyguardViewManager.show(); mShowing = true; adjustUserActivityLocked(); + adjustStatusBarLocked(); try { ActivityManagerNative.getDefault().closeSystemDialogs("lock"); } catch (RemoteException e) { @@ -922,6 +926,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, mKeyguardViewManager.hide(); mShowing = false; adjustUserActivityLocked(); + adjustStatusBarLocked(); } } @@ -936,6 +941,23 @@ public class KeyguardViewMediator implements KeyguardViewCallback, } } + private void adjustStatusBarLocked() { + if (mStatusBarManager == null) { + mStatusBarManager = (StatusBarManager) + mContext.getSystemService(Context.STATUS_BAR_SERVICE); + } + if (mStatusBarManager == null) { + Log.w(TAG, "Could not get status bar manager"); + } else { + // if the keyguard is shown, allow the status bar to open + // only if the keyguard is insecure and is covered by another window + boolean enable = !mShowing || (mHidden && !isSecure()); + mStatusBarManager.disable(enable ? + StatusBarManager.DISABLE_NONE : + StatusBarManager.DISABLE_EXPAND); + } + } + /** * Handle message sent by {@link #wakeWhenReadyLocked(int)} * @param keyCode The key that woke the device.