diff options
-rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 5 | ||||
-rw-r--r-- | services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java | 16 |
2 files changed, 17 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index c6c012141484..b3809dd8f6c9 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1543,10 +1543,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP @Override public boolean canAffectSystemUiFlags() { final boolean translucent = mAttrs.alpha == 0.0f; + if (translucent) { + return false; + } if (mAppToken == null) { final boolean shown = mWinAnimator.getShown(); final boolean exiting = mAnimatingExit || mDestroying; - return shown && !exiting && !translucent; + return shown && !exiting; } else { return !mAppToken.isHidden(); } diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java index 67db5f4d12dd..7be203a99391 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java @@ -16,7 +16,6 @@ package com.android.server.wm; -import android.util.MergedConfiguration; import android.view.WindowManager; import org.junit.Test; import org.junit.runner.RunWith; @@ -45,8 +44,7 @@ import static org.junit.Assert.assertTrue; /** * Tests for the {@link WindowState} class. * - * Build/Install/Run: - * bit FrameworksServicesTests:com.android.server.wm.WindowStateTests + * atest FrameworksServicesTests:com.android.server.wm.WindowStateTests */ @SmallTest @Presubmit @@ -213,6 +211,18 @@ public class WindowStateTests extends WindowTestsBase { testPrepareWindowToDisplayDuringRelayout(true /*wasVisible*/); } + @Test + public void testCanAffectSystemUiFlags() throws Exception { + final WindowState app = createWindow(null, TYPE_APPLICATION, "app"); + app.mToken.setHidden(false); + assertTrue(app.canAffectSystemUiFlags()); + app.mToken.setHidden(true); + assertFalse(app.canAffectSystemUiFlags()); + app.mToken.setHidden(false); + app.mAttrs.alpha = 0.0f; + assertFalse(app.canAffectSystemUiFlags()); + } + private void testPrepareWindowToDisplayDuringRelayout(boolean wasVisible) { final WindowState root = createWindow(null, TYPE_APPLICATION, "root"); root.mAttrs.flags |= WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON; |