summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java8
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());
}