Merge "Early out when window is no longer in hierarchy" into rvc-dev am: f9e220f03d

Change-Id: I7fb77a88167e26f539a655b1397255f52b1891e5
This commit is contained in:
Jorim Jaggi
2020-04-16 14:13:24 +00:00
committed by Automerger Merge Worker
2 changed files with 15 additions and 1 deletions

View File

@@ -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;

View File

@@ -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());
}
}