summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-10-16 08:45:56 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-10-16 08:45:56 +0000
commit1875f9d68df4ea4992704edc96da95cd0bd89e3c (patch)
treeed6a38bb5c2b586271ab30dbe11e6d11db4b978f
parent29809687a9133d3fd10d8d154d467baa1991768a (diff)
parent2958d1748574d479dad8589f4356c8030339622d (diff)
Merge "Make IMM#getCurrentInputMethod{Info,Subtype} consistent" into main
-rw-r--r--core/java/android/view/inputmethod/flags.aconfig11
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java11
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