summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorim Jaggi <jjaggi@google.com> 2020-04-16 14:03:53 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-04-16 14:03:53 +0000
commitf9e220f03d7ad13f45ae9fa6eb95f478b76b1e62 (patch)
tree7fbcc9eb75e24d640b69982ebb4e1ac9aa634aa8
parent5895295da0cb8648a5d4423561f61055b4e09f53 (diff)
parentb895e20c5261532d6eac0600463ca374b63d897a (diff)
Merge "Early out when window is no longer in hierarchy" into rvc-dev
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java12
2 files changed, 15 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index af680701a33e..2b1f174d1175 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -5330,7 +5330,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
// this promotion.
final WindowState imeTarget = getDisplayContent().mInputMethodTarget;
boolean inTokenWithAndAboveImeTarget = imeTarget != null && imeTarget != this
- && imeTarget.mToken == mToken && imeTarget.compareTo(this) <= 0;
+ && imeTarget.mToken == mToken
+ && getParent() != null
+ && imeTarget.compareTo(this) <= 0;
return inTokenWithAndAboveImeTarget;
}
return false;
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 71b35b62366e..65fb2c0451d8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
@@ -657,4 +657,16 @@ public class WindowStateTests extends WindowTestsBase {
win0.mActivityRecord.getStack().setFocusable(false);
assertTrue(win0.cantReceiveTouchInput());
}
+
+ @Test
+ public void testNeedsRelativeLayeringToIme_notAttached() {
+ WindowState sameTokenWindow = createWindow(null, TYPE_BASE_APPLICATION, mAppWindow.mToken,
+ "SameTokenWindow");
+ mDisplayContent.mInputMethodTarget = mAppWindow;
+ sameTokenWindow.mActivityRecord.getStack().setWindowingMode(
+ WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
+ assertTrue(sameTokenWindow.needsRelativeLayeringToIme());
+ sameTokenWindow.removeImmediately();
+ assertFalse(sameTokenWindow.needsRelativeLayeringToIme());
+ }
}