summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yabin Huang <yabinh@google.com> 2023-12-14 11:48:12 -0800
committer Yabin Huang <yabinh@google.com> 2023-12-14 20:20:06 +0000
commit0c09232b01bf093b57665cca22f9d98ddac0581c (patch)
tree0eddf9c6a76dccc7df76a3f9ae1f31d77e06a741
parent029cac40b158f9afe490559a84b3dcf6e1d814e7 (diff)
Update IMMI#onImeParentChanged() to take the display ID
To support multi-session IME, IMMI needs to know the display hosting the IME window. So this CL gets the display ID from DisplayContent, and passes it to IMMI. This CL just passes an unused parameter to IMMS. It doesn't change the behavior of the code, thus no flag is required. The passed parameter will be used by another CL to implement the multi-session IME, and that CL will be protected by the concurrent_input_methods feature flag. Bug: 305829876 Test: atest WmTests && atest FrameworksServicesTests Change-Id: Ifbfe231102585021d9835760c4a2b742d8e5c027
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java6
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java2
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java3
3 files changed, 7 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
index f526dbe9c66d..f1e12fc2c291 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
@@ -167,8 +167,10 @@ public abstract class InputMethodManagerInternal {
/**
* Indicates that the IME window has re-parented to the new target when the IME control changed.
+ *
+ * @param displayId the display hosting the IME window
*/
- public abstract void onImeParentChanged();
+ public abstract void onImeParentChanged(int displayId);
/**
* Destroys the IME surface.
@@ -288,7 +290,7 @@ public abstract class InputMethodManagerInternal {
}
@Override
- public void onImeParentChanged() {
+ public void onImeParentChanged(int displayId) {
}
@Override
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 09c388f08c7b..76ad0e0fb3ca 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -5671,7 +5671,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
}
@Override
- public void onImeParentChanged() {
+ public void onImeParentChanged(int displayId) {
synchronized (ImfLock.class) {
// Hide the IME method menu only when the IME surface parent is changed by the
// input target changed, in case seeing the dialog dismiss flickering during
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index a840973a941e..73644b39f38e 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -4769,7 +4769,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
assignRelativeLayerForIme(getSyncTransaction(), true /* forceUpdate */);
scheduleAnimation();
- mWmService.mH.post(() -> InputMethodManagerInternal.get().onImeParentChanged());
+ mWmService.mH.post(
+ () -> InputMethodManagerInternal.get().onImeParentChanged(getDisplayId()));
} else if (mImeControlTarget != null && mImeControlTarget == mImeLayeringTarget) {
// Even if the IME surface parent is not changed, the layer target belonging to the
// parent may have changes. Then attempt to reassign if the IME control target is