From af221d16de434c3550cb4e645135e95992ce1203 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 15 Nov 2016 14:59:57 -0800 Subject: [PATCH] Fix that window was not hidden after policy hiding animation When we removed WindowState.isOnScreenIgnoringKeyguard we forgot to change WindowState.isOnScreen to also check policy visibility. Test: runtest frameworks-services -c com.android.server.wm.WindowStateTests Test: Open camera app, make sure status bar is hidden Change-Id: I780f50c8ed3e675f2fab623fdba4fcfc5b6f1d5b Fixes: 32890266 --- .../java/com/android/server/wm/WindowState.java | 2 +- .../src/com/android/server/wm/WindowStateTests.java | 13 ++++++++++--- 2 files changed, 11 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 1a56518538184..c43c191bfe1e3 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1400,7 +1400,7 @@ class WindowState extends WindowContainer implements WindowManagerP * being visible. */ boolean isOnScreen() { - if (!mHasSurface || mDestroying) { + if (!mHasSurface || mDestroying || !mPolicyVisibility) { return false; } final AppWindowToken atoken = mAppToken; 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 3df1df980a266..4499275e8f468 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java @@ -41,9 +41,7 @@ import static org.junit.Assert.assertTrue; /** * Tests for the {@link WindowState} class. * - * Build: mmma -j32 frameworks/base/services/tests/servicestests - * Install: adb install -r out/target/product/$TARGET_PRODUCT/data/app/FrameworksServicesTests/FrameworksServicesTests.apk - * Run: adb shell am instrument -w -e class com.android.server.wm.WindowStateTests com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner + * runtest frameworks-services -c com.android.server.wm.WindowStateTests */ @SmallTest @Presubmit @@ -160,6 +158,15 @@ public class WindowStateTests { assertEquals(root, child2.getTopParentWindow()); } + @Test + public void testIsOnScreen_hiddenByPolicy() { + final WindowState window = createWindow(null, TYPE_APPLICATION); + window.setHasSurface(true); + assertTrue(window.isOnScreen()); + window.hideLw(false /* doAnimation */); + assertFalse(window.isOnScreen()); + } + private WindowState createWindow(WindowState parent, int type) { final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(type);