Merge "Fix stuck IME when IME dialog is focused" into rvc-dev am: a13d349172 am: bf2c10fe3d am: 412262386e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12174528

Change-Id: I4eb06d91fa7413db5260823b73ad6c843d3f22ab
This commit is contained in:
TreeHugger Robot
2020-07-17 16:41:08 +00:00
committed by Automerger Merge Worker
2 changed files with 18 additions and 0 deletions

View File

@@ -2170,6 +2170,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
if (isInputMethodTarget()) { if (isInputMethodTarget()) {
dc.computeImeTarget(true /* updateImeTarget */); dc.computeImeTarget(true /* updateImeTarget */);
} }
if (dc.mInputMethodInputTarget == this) {
dc.setInputMethodInputTarget(null);
}
if (dc.mInputMethodControlTarget == this) { if (dc.mInputMethodControlTarget == this) {
dc.updateImeControlTarget(); dc.updateImeControlTarget();
} }

View File

@@ -886,6 +886,21 @@ public class DisplayContentTests extends WindowTestsBase {
assertEquals(dc.getImeContainer().getParentSurfaceControl(), dc.computeImeParent()); assertEquals(dc.getImeContainer().getParentSurfaceControl(), dc.computeImeParent());
} }
@Test
public void testInputMethodInputTarget_isClearedWhenWindowStateIsRemoved() throws Exception {
final DisplayContent dc = createNewDisplay();
WindowState app = createWindow(null, TYPE_BASE_APPLICATION, dc, "app");
dc.mInputMethodInputTarget = app;
assertEquals(app, dc.computeImeControlTarget());
app.removeImmediately();
assertNull(dc.mInputMethodInputTarget);
assertNull(dc.computeImeControlTarget());
}
@Test @Test
public void testComputeImeControlTarget() throws Exception { public void testComputeImeControlTarget() throws Exception {
final DisplayContent dc = createNewDisplay(); final DisplayContent dc = createNewDisplay();