From ce12f8517e22a3180ba961697bbf2572ad703c2f Mon Sep 17 00:00:00 2001 From: chaviw Date: Fri, 12 Jun 2020 17:39:41 -0700 Subject: [PATCH] Don't set relative z of window to IME if starting window If a window is a starting window, it shouldn't get relative z to IME since we don't want to change its z order. Test: Split screen with pip and opening new app in split Test: WindowStateTests#testNeedsRelativeLayeringToIme_startingWindow Fixes: 158762203 Change-Id: I0be39285a96bc6458e077b772d0315be6075e0b0 --- .../core/java/com/android/server/wm/WindowState.java | 1 + .../src/com/android/server/wm/WindowStateTests.java | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index fe3ee50c34c5b..64a4925b86778 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5390,6 +5390,7 @@ class WindowState extends WindowContainer implements WindowManagerP final WindowState imeTarget = getDisplayContent().mInputMethodTarget; boolean inTokenWithAndAboveImeTarget = imeTarget != null && imeTarget != this && imeTarget.mToken == mToken + && mAttrs.type != TYPE_APPLICATION_STARTING && getParent() != null && imeTarget.compareTo(this) <= 0; return inTokenWithAndAboveImeTarget; diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index e9ed20bd9683b..b51784d8d6e5a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -692,4 +692,14 @@ public class WindowStateTests extends WindowTestsBase { sameTokenWindow.removeImmediately(); assertFalse(sameTokenWindow.needsRelativeLayeringToIme()); } + + @Test + public void testNeedsRelativeLayeringToIme_startingWindow() { + WindowState sameTokenWindow = createWindow(null, TYPE_APPLICATION_STARTING, + mAppWindow.mToken, "SameTokenWindow"); + mDisplayContent.mInputMethodTarget = mAppWindow; + sameTokenWindow.mActivityRecord.getStack().setWindowingMode( + WINDOWING_MODE_SPLIT_SCREEN_PRIMARY); + assertFalse(sameTokenWindow.needsRelativeLayeringToIme()); + } }