summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java1
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java10
2 files changed, 11 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index fe3ee50c34c5..64a4925b8677 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<WindowState> 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 e9ed20bd9683..b51784d8d6e5 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());
+ }
}