Merge "Use parent window to evaluate show-to-all-users." into jb-mr1-dev

This commit is contained in:
Craig Mautner
2012-10-16 18:58:58 -07:00
committed by Android (Google) Code Review

View File

@@ -1038,18 +1038,26 @@ final class WindowState implements WindowManagerPolicy.WindowState {
} }
boolean isHiddenFromUserLocked() { boolean isHiddenFromUserLocked() {
// Save some cycles by not calling getDisplayInfo unless it is an application // Attached windows are evaluated based on the window that they are attached to.
// window intended for all users. WindowState win = this;
if (mAttrs.type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW while (win.mAttachedWindow != null) {
&& mAppToken != null && mAppToken.showWhenLocked) { win = win.mAttachedWindow;
final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo(); }
if (isFullscreen(displayInfo.appWidth, displayInfo.appHeight)) { if (win.mAttrs.type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
&& win.mAppToken != null && win.mAppToken.showWhenLocked) {
// Save some cycles by not calling getDisplayInfo unless it is an application
// window intended for all users.
final DisplayInfo displayInfo = win.mDisplayContent.getDisplayInfo();
if (win.mFrame.left <= 0 && win.mFrame.top <= 0
&& win.mFrame.right >= displayInfo.appWidth
&& win.mFrame.bottom >= displayInfo.appHeight) {
// Is a fullscreen window, like the clock alarm. Show to everyone. // Is a fullscreen window, like the clock alarm. Show to everyone.
return false; return false;
} }
} }
return mShowToOwnerOnly && UserHandle.getUserId(mOwnerUid) != mService.mCurrentUserId; return win.mShowToOwnerOnly
&& UserHandle.getUserId(win.mOwnerUid) != mService.mCurrentUserId;
} }
private static void applyInsets(Region outRegion, Rect frame, Rect inset) { private static void applyInsets(Region outRegion, Rect frame, Rect inset) {