Loading core/java/android/view/WindowManagerPolicy.java +0 −7 Original line number Diff line number Diff line Loading @@ -338,13 +338,6 @@ public interface WindowManagerPolicy { */ boolean isVisibleLw(); /** * Like {@link #isVisibleLw}, but also counts a window that is currently * "hidden" behind the keyguard as visible. This allows us to apply * things like window flags that impact the keyguard. */ boolean isVisibleOrBehindKeyguardLw(); /** * Is this window currently visible to the user on-screen? It is * displayed either if it is visible or it is currently running an Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +11 −15 Original line number Diff line number Diff line Loading @@ -5089,12 +5089,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Dock windows carve out the bottom of the screen, so normal windows // can't appear underneath them. if (attrs.type == TYPE_INPUT_METHOD && win.isVisibleOrBehindKeyguardLw() && win.isDisplayedLw() && !win.getGivenInsetsPendingLw()) { if (attrs.type == TYPE_INPUT_METHOD && win.isVisibleLw() && !win.getGivenInsetsPendingLw()) { setLastInputMethodWindowLw(null, null); offsetInputMethodWindowLw(win); } if (attrs.type == TYPE_VOICE_INTERACTION && win.isVisibleOrBehindKeyguardLw() if (attrs.type == TYPE_VOICE_INTERACTION && win.isVisibleLw() && !win.getGivenInsetsPendingLw()) { offsetVoiceInputWindowLw(win); } Loading Loading @@ -5168,12 +5168,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void applyPostLayoutPolicyLw(WindowState win, WindowManager.LayoutParams attrs, WindowState attached, WindowState imeTarget) { if (DEBUG_LAYOUT) Slog.i(TAG, "Win " + win + ": isVisibleOrBehindKeyguardLw=" + win.isVisibleOrBehindKeyguardLw()); final boolean visible = win.isVisibleLw(); if (DEBUG_LAYOUT) Slog.i(TAG, "Win " + win + ": isVisible=" + visible); applyKeyguardPolicyLw(win, imeTarget); final int fl = PolicyControl.getWindowFlags(win, attrs); if (mTopFullscreenOpaqueWindowState == null && win.isVisibleLw() && attrs.type == TYPE_INPUT_METHOD) { if (mTopFullscreenOpaqueWindowState == null && visible && attrs.type == TYPE_INPUT_METHOD) { mForcingShowNavBar = true; mForcingShowNavBarLayer = win.getSurfaceLayer(); } Loading @@ -5189,8 +5188,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean appWindow = attrs.type >= FIRST_APPLICATION_WINDOW && attrs.type < FIRST_SYSTEM_WINDOW; final int stackId = win.getStackId(); if (mTopFullscreenOpaqueWindowState == null && win.isVisibleOrBehindKeyguardLw() && !win.isGoneForLayoutLw()) { if (mTopFullscreenOpaqueWindowState == null && visible) { if ((fl & FLAG_FORCE_NOT_FULLSCREEN) != 0) { mForceStatusBar = true; } Loading Loading @@ -5221,10 +5219,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } final boolean reallyVisible = win.isVisibleOrBehindKeyguardLw() && !win.isGoneForLayoutLw(); // Voice interaction overrides both top fullscreen and top docked. if (reallyVisible && win.getAttrs().type == TYPE_VOICE_INTERACTION) { if (visible && win.getAttrs().type == TYPE_VOICE_INTERACTION) { if (mTopFullscreenOpaqueWindowState == null) { mTopFullscreenOpaqueWindowState = win; if (mTopFullscreenOpaqueOrDimmingWindowState == null) { Loading @@ -5240,7 +5236,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } // Keep track of the window if it's dimming but not necessarily fullscreen. if (mTopFullscreenOpaqueOrDimmingWindowState == null && reallyVisible if (mTopFullscreenOpaqueOrDimmingWindowState == null && visible && win.isDimming() && StackId.normallyFullscreenWindows(stackId)) { mTopFullscreenOpaqueOrDimmingWindowState = win; } Loading @@ -5248,7 +5244,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // We need to keep track of the top "fullscreen" opaque window for the docked stack // separately, because both the "real fullscreen" opaque window and the one for the docked // stack can control View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR. if (mTopDockedOpaqueWindowState == null && reallyVisible && appWindow && attached == null if (mTopDockedOpaqueWindowState == null && visible && appWindow && attached == null && isFullscreen(attrs) && stackId == DOCKED_STACK_ID) { mTopDockedOpaqueWindowState = win; if (mTopDockedOpaqueOrDimmingWindowState == null) { Loading @@ -5258,7 +5254,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Also keep track of any windows that are dimming but not necessarily fullscreen in the // docked stack. if (mTopDockedOpaqueOrDimmingWindowState == null && reallyVisible && win.isDimming() if (mTopDockedOpaqueOrDimmingWindowState == null && visible && win.isDimming() && stackId == DOCKED_STACK_ID) { mTopDockedOpaqueOrDimmingWindowState = win; } Loading services/core/java/com/android/server/wm/WindowState.java +3 −52 Original line number Diff line number Diff line Loading @@ -1352,25 +1352,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return isVisible(); } /** * Like {@link #isVisibleLw}, but also counts a window that is currently "hidden" behind the * keyguard as visible. This allows us to apply things like window flags that impact the * keyguard. XXX I am starting to think we need to have ANOTHER visibility flag for this * "hidden behind keyguard" state rather than overloading mPolicyVisibility. Ungh. */ @Override public boolean isVisibleOrBehindKeyguardLw() { if (mToken.waitingToShow && mService.mAppTransition.isTransitionSet()) { return false; } final AppWindowToken atoken = mAppToken; final boolean animating = atoken != null && atoken.mAppAnimator.animation != null; return mHasSurface && !mDestroying && !mAnimatingExit && (atoken == null ? mPolicyVisibility : !atoken.hiddenRequested) && ((!isParentWindowHidden() && mViewVisibility == View.VISIBLE && !mToken.hidden) || mWinAnimator.mAnimation != null || animating); } /** * Is this window visible, ignoring its app token? It is not visible if there is no surface, * or we are in the process of running an exit animation that will remove the surface. Loading Loading @@ -1418,14 +1399,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP * being visible. */ boolean isOnScreen() { return mPolicyVisibility && isOnScreenIgnoringKeyguard(); } /** * Like isOnScreen(), but ignores any force hiding of the window due * to the keyguard. */ private boolean isOnScreenIgnoringKeyguard() { if (!mHasSurface || mDestroying) { return false; } Loading @@ -1449,7 +1422,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP boolean mightAffectAllDrawn(boolean visibleOnly) { final boolean isViewVisible = (mAppToken == null || !mAppToken.clientHidden) && (mViewVisibility == View.VISIBLE) && !mWindowRemovalAllowed; return (isOnScreenIgnoringKeyguard() && (!visibleOnly || isViewVisible) return (isOnScreen() && (!visibleOnly || isViewVisible) || mWinAnimator.mAttrType == TYPE_BASE_APPLICATION || mWinAnimator.mAttrType == TYPE_DRAWN_APPLICATION) && !mAnimatingExit && !mDestroying; Loading Loading @@ -1478,28 +1451,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP || ((mAppToken != null) && (mAppToken.mAppAnimator.animation != null))); } /** * Like isReadyForDisplay(), but ignores any force hiding of the window due * to the keyguard. */ boolean isReadyForDisplayIgnoringKeyguard() { if (mToken.waitingToShow && mService.mAppTransition.isTransitionSet()) { return false; } final AppWindowToken atoken = mAppToken; if (atoken == null && !mPolicyVisibility) { // If this is not an app window, and the policy has asked to force // hide, then we really do want to hide. return false; } return mHasSurface && !mDestroying && ((!isParentWindowHidden() && mViewVisibility == View.VISIBLE && !mToken.hidden) || mWinAnimator.mAnimation != null || ((atoken != null) && (atoken.mAppAnimator.animation != null) && !mWinAnimator.isDummyAnimation()) || isAnimatingWithSavedSurface()); } /** * Like isOnScreen, but returns false if the surface hasn't yet * been drawn. Loading Loading @@ -3771,7 +3722,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP logPerformShow("performShow on "); if (mWinAnimator.mDrawState != READY_TO_SHOW || !isReadyForDisplayIgnoringKeyguard()) { if (mWinAnimator.mDrawState != READY_TO_SHOW || !isReadyForDisplay()) { return false; } Loading Loading @@ -3821,7 +3772,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP || (DEBUG_STARTING_WINDOW && mAttrs.type == TYPE_APPLICATION_STARTING)) { Slog.v(TAG, prefix + this + ": mDrawState=" + mWinAnimator.drawStateToString() + " readyForDisplay=" + isReadyForDisplayIgnoringKeyguard() + " readyForDisplay=" + isReadyForDisplay() + " starting=" + (mAttrs.type == TYPE_APPLICATION_STARTING) + " during animation: policyVis=" + mPolicyVisibility + " parentHidden=" + isParentWindowHidden() Loading Loading
core/java/android/view/WindowManagerPolicy.java +0 −7 Original line number Diff line number Diff line Loading @@ -338,13 +338,6 @@ public interface WindowManagerPolicy { */ boolean isVisibleLw(); /** * Like {@link #isVisibleLw}, but also counts a window that is currently * "hidden" behind the keyguard as visible. This allows us to apply * things like window flags that impact the keyguard. */ boolean isVisibleOrBehindKeyguardLw(); /** * Is this window currently visible to the user on-screen? It is * displayed either if it is visible or it is currently running an Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +11 −15 Original line number Diff line number Diff line Loading @@ -5089,12 +5089,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Dock windows carve out the bottom of the screen, so normal windows // can't appear underneath them. if (attrs.type == TYPE_INPUT_METHOD && win.isVisibleOrBehindKeyguardLw() && win.isDisplayedLw() && !win.getGivenInsetsPendingLw()) { if (attrs.type == TYPE_INPUT_METHOD && win.isVisibleLw() && !win.getGivenInsetsPendingLw()) { setLastInputMethodWindowLw(null, null); offsetInputMethodWindowLw(win); } if (attrs.type == TYPE_VOICE_INTERACTION && win.isVisibleOrBehindKeyguardLw() if (attrs.type == TYPE_VOICE_INTERACTION && win.isVisibleLw() && !win.getGivenInsetsPendingLw()) { offsetVoiceInputWindowLw(win); } Loading Loading @@ -5168,12 +5168,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void applyPostLayoutPolicyLw(WindowState win, WindowManager.LayoutParams attrs, WindowState attached, WindowState imeTarget) { if (DEBUG_LAYOUT) Slog.i(TAG, "Win " + win + ": isVisibleOrBehindKeyguardLw=" + win.isVisibleOrBehindKeyguardLw()); final boolean visible = win.isVisibleLw(); if (DEBUG_LAYOUT) Slog.i(TAG, "Win " + win + ": isVisible=" + visible); applyKeyguardPolicyLw(win, imeTarget); final int fl = PolicyControl.getWindowFlags(win, attrs); if (mTopFullscreenOpaqueWindowState == null && win.isVisibleLw() && attrs.type == TYPE_INPUT_METHOD) { if (mTopFullscreenOpaqueWindowState == null && visible && attrs.type == TYPE_INPUT_METHOD) { mForcingShowNavBar = true; mForcingShowNavBarLayer = win.getSurfaceLayer(); } Loading @@ -5189,8 +5188,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean appWindow = attrs.type >= FIRST_APPLICATION_WINDOW && attrs.type < FIRST_SYSTEM_WINDOW; final int stackId = win.getStackId(); if (mTopFullscreenOpaqueWindowState == null && win.isVisibleOrBehindKeyguardLw() && !win.isGoneForLayoutLw()) { if (mTopFullscreenOpaqueWindowState == null && visible) { if ((fl & FLAG_FORCE_NOT_FULLSCREEN) != 0) { mForceStatusBar = true; } Loading Loading @@ -5221,10 +5219,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } final boolean reallyVisible = win.isVisibleOrBehindKeyguardLw() && !win.isGoneForLayoutLw(); // Voice interaction overrides both top fullscreen and top docked. if (reallyVisible && win.getAttrs().type == TYPE_VOICE_INTERACTION) { if (visible && win.getAttrs().type == TYPE_VOICE_INTERACTION) { if (mTopFullscreenOpaqueWindowState == null) { mTopFullscreenOpaqueWindowState = win; if (mTopFullscreenOpaqueOrDimmingWindowState == null) { Loading @@ -5240,7 +5236,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } // Keep track of the window if it's dimming but not necessarily fullscreen. if (mTopFullscreenOpaqueOrDimmingWindowState == null && reallyVisible if (mTopFullscreenOpaqueOrDimmingWindowState == null && visible && win.isDimming() && StackId.normallyFullscreenWindows(stackId)) { mTopFullscreenOpaqueOrDimmingWindowState = win; } Loading @@ -5248,7 +5244,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // We need to keep track of the top "fullscreen" opaque window for the docked stack // separately, because both the "real fullscreen" opaque window and the one for the docked // stack can control View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR. if (mTopDockedOpaqueWindowState == null && reallyVisible && appWindow && attached == null if (mTopDockedOpaqueWindowState == null && visible && appWindow && attached == null && isFullscreen(attrs) && stackId == DOCKED_STACK_ID) { mTopDockedOpaqueWindowState = win; if (mTopDockedOpaqueOrDimmingWindowState == null) { Loading @@ -5258,7 +5254,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Also keep track of any windows that are dimming but not necessarily fullscreen in the // docked stack. if (mTopDockedOpaqueOrDimmingWindowState == null && reallyVisible && win.isDimming() if (mTopDockedOpaqueOrDimmingWindowState == null && visible && win.isDimming() && stackId == DOCKED_STACK_ID) { mTopDockedOpaqueOrDimmingWindowState = win; } Loading
services/core/java/com/android/server/wm/WindowState.java +3 −52 Original line number Diff line number Diff line Loading @@ -1352,25 +1352,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return isVisible(); } /** * Like {@link #isVisibleLw}, but also counts a window that is currently "hidden" behind the * keyguard as visible. This allows us to apply things like window flags that impact the * keyguard. XXX I am starting to think we need to have ANOTHER visibility flag for this * "hidden behind keyguard" state rather than overloading mPolicyVisibility. Ungh. */ @Override public boolean isVisibleOrBehindKeyguardLw() { if (mToken.waitingToShow && mService.mAppTransition.isTransitionSet()) { return false; } final AppWindowToken atoken = mAppToken; final boolean animating = atoken != null && atoken.mAppAnimator.animation != null; return mHasSurface && !mDestroying && !mAnimatingExit && (atoken == null ? mPolicyVisibility : !atoken.hiddenRequested) && ((!isParentWindowHidden() && mViewVisibility == View.VISIBLE && !mToken.hidden) || mWinAnimator.mAnimation != null || animating); } /** * Is this window visible, ignoring its app token? It is not visible if there is no surface, * or we are in the process of running an exit animation that will remove the surface. Loading Loading @@ -1418,14 +1399,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP * being visible. */ boolean isOnScreen() { return mPolicyVisibility && isOnScreenIgnoringKeyguard(); } /** * Like isOnScreen(), but ignores any force hiding of the window due * to the keyguard. */ private boolean isOnScreenIgnoringKeyguard() { if (!mHasSurface || mDestroying) { return false; } Loading @@ -1449,7 +1422,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP boolean mightAffectAllDrawn(boolean visibleOnly) { final boolean isViewVisible = (mAppToken == null || !mAppToken.clientHidden) && (mViewVisibility == View.VISIBLE) && !mWindowRemovalAllowed; return (isOnScreenIgnoringKeyguard() && (!visibleOnly || isViewVisible) return (isOnScreen() && (!visibleOnly || isViewVisible) || mWinAnimator.mAttrType == TYPE_BASE_APPLICATION || mWinAnimator.mAttrType == TYPE_DRAWN_APPLICATION) && !mAnimatingExit && !mDestroying; Loading Loading @@ -1478,28 +1451,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP || ((mAppToken != null) && (mAppToken.mAppAnimator.animation != null))); } /** * Like isReadyForDisplay(), but ignores any force hiding of the window due * to the keyguard. */ boolean isReadyForDisplayIgnoringKeyguard() { if (mToken.waitingToShow && mService.mAppTransition.isTransitionSet()) { return false; } final AppWindowToken atoken = mAppToken; if (atoken == null && !mPolicyVisibility) { // If this is not an app window, and the policy has asked to force // hide, then we really do want to hide. return false; } return mHasSurface && !mDestroying && ((!isParentWindowHidden() && mViewVisibility == View.VISIBLE && !mToken.hidden) || mWinAnimator.mAnimation != null || ((atoken != null) && (atoken.mAppAnimator.animation != null) && !mWinAnimator.isDummyAnimation()) || isAnimatingWithSavedSurface()); } /** * Like isOnScreen, but returns false if the surface hasn't yet * been drawn. Loading Loading @@ -3771,7 +3722,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP logPerformShow("performShow on "); if (mWinAnimator.mDrawState != READY_TO_SHOW || !isReadyForDisplayIgnoringKeyguard()) { if (mWinAnimator.mDrawState != READY_TO_SHOW || !isReadyForDisplay()) { return false; } Loading Loading @@ -3821,7 +3772,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP || (DEBUG_STARTING_WINDOW && mAttrs.type == TYPE_APPLICATION_STARTING)) { Slog.v(TAG, prefix + this + ": mDrawState=" + mWinAnimator.drawStateToString() + " readyForDisplay=" + isReadyForDisplayIgnoringKeyguard() + " readyForDisplay=" + isReadyForDisplay() + " starting=" + (mAttrs.type == TYPE_APPLICATION_STARTING) + " during animation: policyVis=" + mPolicyVisibility + " parentHidden=" + isParentWindowHidden() Loading