diff options
| author | 2024-10-16 08:45:56 +0000 | |
|---|---|---|
| committer | 2024-10-16 08:45:56 +0000 | |
| commit | 1875f9d68df4ea4992704edc96da95cd0bd89e3c (patch) | |
| tree | ed6a38bb5c2b586271ab30dbe11e6d11db4b978f | |
| parent | 29809687a9133d3fd10d8d154d467baa1991768a (diff) | |
| parent | 2958d1748574d479dad8589f4356c8030339622d (diff) | |
Merge "Make IMM#getCurrentInputMethod{Info,Subtype} consistent" into main
| -rw-r--r-- | core/java/android/view/inputmethod/flags.aconfig | 11 | ||||
| -rw-r--r-- | services/core/java/com/android/server/inputmethod/InputMethodManagerService.java | 11 |
2 files changed, 21 insertions, 1 deletions
diff --git a/core/java/android/view/inputmethod/flags.aconfig b/core/java/android/view/inputmethod/flags.aconfig index bae8affcec47..aa4927ee9b9c 100644 --- a/core/java/android/view/inputmethod/flags.aconfig +++ b/core/java/android/view/inputmethod/flags.aconfig @@ -73,6 +73,17 @@ flag { } flag { + name: "consistent_get_current_input_method_info" + namespace: "input_method" + description: "Use BindingController as the source of truth in getCurrentInputMethodInfo" + bug: "355034523" + is_fixed_read_only: true + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "ime_switcher_revamp" is_exported: true namespace: "input_method" diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 939aad469bd8..83044c202a04 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -1536,7 +1536,16 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. Manifest.permission.INTERACT_ACROSS_USERS_FULL, null); } final InputMethodSettings settings = InputMethodSettingsRepository.get(userId); - return settings.getMethodMap().get(settings.getSelectedInputMethod()); + final String selectedImeId; + if (Flags.consistentGetCurrentInputMethodInfo()) { + final var bindingController = getInputMethodBindingController(userId); + synchronized (ImfLock.class) { + selectedImeId = bindingController.getSelectedMethodId(); + } + } else { + selectedImeId = settings.getSelectedInputMethod(); + } + return settings.getMethodMap().get(selectedImeId); } @BinderThread |