summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Felix Stern <fstern@google.com> 2024-11-20 13:50:14 +0000
committer Felix Stern <fstern@google.com> 2024-11-22 11:59:21 +0000
commit13d5dce50e1753d6aac44bcaf1b21e576022d35e (patch)
treee143dab527d9e4c129b8423b06568888b62b448d
parent56b5042c5a34056166e99f45cfcadd35f851e511 (diff)
Remove invokeOnImeRequestedChangedListener call if input target != control target
In case when the input target was different to the control target, we already invoked IME listener (in ImeInsetsSourceProvider#reportImeInputTargetStateToControlTarget). However, this should only happen, when the caller of updateClientVisibility is the control target. In split screen, this will happen (through a call to WindowManager#updateDisplayWindowRequestedVisibleTypes). Therefore, we don't need to trigger the listener too early. The virtual display is an exemption, as is not guaranteed that it has an ImeInsetsSourceProvider. Test: CtsInputMethodTestCases Bug: 298172246 Flag: android.view.inputmethod.refactor_insets_controller Change-Id: I6fe7e2e1f972be264796e8880c006f15aa18f408
-rw-r--r--services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
index 49f717e228d2..48e1c069821c 100644
--- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
@@ -346,12 +346,15 @@ final class ImeInsetsSourceProvider extends InsetsSourceProvider {
ImeTracker.forLogging().onProgress(statsToken,
ImeTracker.PHASE_WM_SET_REMOTE_TARGET_IME_VISIBILITY);
controlTarget.setImeInputTargetRequestedVisibility(imeVisible);
+ // not all virtual displays have an ImeInsetsSourceProvider, so it is not
+ // guaranteed that the IME will be started when the control target reports its
+ // requested visibility back. Thus, invoking the listener here.
+ invokeOnImeRequestedChangedListener(imeInsetsTarget, statsToken);
} else {
ImeTracker.forLogging().onFailed(statsToken,
ImeTracker.PHASE_WM_SET_REMOTE_TARGET_IME_VISIBILITY);
}
}
- invokeOnImeRequestedChangedListener(imeInsetsTarget, statsToken);
}
// TODO(b/353463205) check callers to see if we can make statsToken @NonNull