diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 4 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java | 8 |
2 files changed, 7 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 86285fbc58bb..129931e92822 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -857,8 +857,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return false; } if (w.mAttrs.type == TYPE_INPUT_METHOD_DIALOG && mImeLayeringTarget != null - && !mImeLayeringTarget.isRequestedVisible(ime()) - && !mImeLayeringTarget.isVisibleRequested()) { + && !(mImeLayeringTarget.isRequestedVisible(ime()) + && mImeLayeringTarget.isVisibleRequested())) { return false; } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index ec5e51e7b842..58e919dda964 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -2796,15 +2796,17 @@ public class DisplayContentTests extends WindowTestsBase { final WindowState imeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget"); mDisplayContent.setImeLayeringTarget(imeAppTarget); - spyOn(imeAppTarget); - doReturn(true).when(imeAppTarget).isRequestedVisible(ime()); + imeAppTarget.setRequestedVisibleTypes(ime()); assertEquals(imeMenuDialog, mDisplayContent.findFocusedWindow()); // Verify imeMenuDialog doesn't be focused window if the next IME target is closing. final WindowState nextImeAppTarget = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "nextImeAppTarget"); makeWindowVisibleAndDrawn(nextImeAppTarget); - nextImeAppTarget.mActivityRecord.commitVisibility(false, false); + // Even if the app still requests IME, the ime dialog should not gain focus if the target + // app is invisible. + nextImeAppTarget.setRequestedVisibleTypes(ime()); + nextImeAppTarget.mActivityRecord.setVisibility(false); mDisplayContent.setImeLayeringTarget(nextImeAppTarget); assertNotEquals(imeMenuDialog, mDisplayContent.findFocusedWindow()); } |