am 1f52437d: Show the keyguard if unsecure window on top

* commit '1f52437de9aa6089a72c7c992f9e7291a6a96115':
  Show the keyguard if unsecure window on top
This commit is contained in:
Craig Mautner
2014-03-13 10:47:49 -07:00
committed by Android Git Automerger

View File

@ -408,6 +408,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static final Rect mTmpNavigationFrame = new Rect(); static final Rect mTmpNavigationFrame = new Rect();
WindowState mTopFullscreenOpaqueWindowState; WindowState mTopFullscreenOpaqueWindowState;
boolean mHideWindowBehindKeyguard;
boolean mTopIsFullscreen; boolean mTopIsFullscreen;
boolean mForceStatusBar; boolean mForceStatusBar;
boolean mForceStatusBarFromKeyguard; boolean mForceStatusBarFromKeyguard;
@ -2936,6 +2937,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
@Override @Override
public void beginPostLayoutPolicyLw(int displayWidth, int displayHeight) { public void beginPostLayoutPolicyLw(int displayWidth, int displayHeight) {
mTopFullscreenOpaqueWindowState = null; mTopFullscreenOpaqueWindowState = null;
mHideWindowBehindKeyguard = false;
mForceStatusBar = false; mForceStatusBar = false;
mForceStatusBarFromKeyguard = false; mForceStatusBarFromKeyguard = false;
mForcingShowNavBar = false; mForcingShowNavBar = false;
@ -2973,7 +2975,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (attrs.type == TYPE_KEYGUARD) { if (attrs.type == TYPE_KEYGUARD) {
mShowingLockscreen = true; mShowingLockscreen = true;
} }
boolean applyWindow = attrs.type >= FIRST_APPLICATION_WINDOW boolean appWindow = attrs.type >= FIRST_APPLICATION_WINDOW
&& attrs.type <= LAST_APPLICATION_WINDOW; && attrs.type <= LAST_APPLICATION_WINDOW;
if (attrs.type == TYPE_DREAM) { if (attrs.type == TYPE_DREAM) {
// If the lockscreen was showing when the dream started then wait // If the lockscreen was showing when the dream started then wait
@ -2981,30 +2983,37 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (!mDreamingLockscreen if (!mDreamingLockscreen
|| (win.isVisibleLw() && win.hasDrawnLw())) { || (win.isVisibleLw() && win.hasDrawnLw())) {
mShowingDream = true; mShowingDream = true;
applyWindow = true; appWindow = true;
} }
} }
if (applyWindow
&& attrs.x == 0 && attrs.y == 0 final boolean showWhenLocked = (attrs.flags & FLAG_SHOW_WHEN_LOCKED) != 0;
&& attrs.width == WindowManager.LayoutParams.MATCH_PARENT if (appWindow) {
&& attrs.height == WindowManager.LayoutParams.MATCH_PARENT) { if (attrs.x == 0 && attrs.y == 0
if (DEBUG_LAYOUT) Log.v(TAG, "Fullscreen window: " + win); && attrs.width == WindowManager.LayoutParams.MATCH_PARENT
mTopFullscreenOpaqueWindowState = win; && attrs.height == WindowManager.LayoutParams.MATCH_PARENT) {
if ((attrs.flags & FLAG_SHOW_WHEN_LOCKED) != 0) { if (DEBUG_LAYOUT) Slog.v(TAG, "Fullscreen window: " + win);
if (DEBUG_LAYOUT) Log.v(TAG, "Setting mHideLockScreen to true by win " + win); mTopFullscreenOpaqueWindowState = win;
mHideLockScreen = true; if (!mHideWindowBehindKeyguard) {
mForceStatusBarFromKeyguard = false; if (showWhenLocked) {
} if (DEBUG_LAYOUT) Slog.v(TAG, "Setting mHideLockScreen to true by win " + win);
if ((attrs.flags & FLAG_DISMISS_KEYGUARD) != 0 mHideLockScreen = true;
&& mDismissKeyguard == DISMISS_KEYGUARD_NONE) { mForceStatusBarFromKeyguard = false;
if (DEBUG_LAYOUT) Log.v(TAG, "Setting mDismissKeyguard to true by win " + win); }
mDismissKeyguard = mWinDismissingKeyguard == win ? if ((attrs.flags & FLAG_DISMISS_KEYGUARD) != 0
DISMISS_KEYGUARD_CONTINUE : DISMISS_KEYGUARD_START; && mDismissKeyguard == DISMISS_KEYGUARD_NONE) {
mWinDismissingKeyguard = win; if (DEBUG_LAYOUT) Slog.v(TAG, "Setting mDismissKeyguard true by win " + win);
mForceStatusBarFromKeyguard = false; mDismissKeyguard = mWinDismissingKeyguard == win ?
} DISMISS_KEYGUARD_CONTINUE : DISMISS_KEYGUARD_START;
if ((attrs.flags & FLAG_ALLOW_LOCK_WHILE_SCREEN_ON) != 0) { mWinDismissingKeyguard = win;
mAllowLockscreenWhenOn = true; mForceStatusBarFromKeyguard = false;
}
}
if ((attrs.flags & FLAG_ALLOW_LOCK_WHILE_SCREEN_ON) != 0) {
mAllowLockscreenWhenOn = true;
}
} else if (!showWhenLocked) {
mHideWindowBehindKeyguard = true;
} }
} }
} }
@ -3083,7 +3092,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (mKeyguard != null) { if (mKeyguard != null) {
if (localLOGV) Log.v(TAG, "finishPostLayoutPolicyLw: mHideKeyguard=" if (localLOGV) Log.v(TAG, "finishPostLayoutPolicyLw: mHideKeyguard="
+ mHideLockScreen); + mHideLockScreen);
if (mDismissKeyguard != DISMISS_KEYGUARD_NONE && !mKeyguardMediator.isSecure()) { if (mDismissKeyguard != DISMISS_KEYGUARD_NONE && !isKeyguardSecure()) {
if (mKeyguard.hideLw(true)) { if (mKeyguard.hideLw(true)) {
changes |= FINISH_LAYOUT_REDO_LAYOUT changes |= FINISH_LAYOUT_REDO_LAYOUT
| FINISH_LAYOUT_REDO_CONFIG | FINISH_LAYOUT_REDO_CONFIG