Merge "Fix the "ime set <imeId>" workaround" into main
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 53b48f4..8afbd56 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -6588,6 +6588,28 @@
out.print(imeId);
out.print(" selected for user #");
out.println(userId);
+
+ // Workaround for b/354782333.
+ final InputMethodSettings settings =
+ InputMethodSettingsRepository.get(userId);
+ final var bindingController = getInputMethodBindingController(userId);
+ final int deviceId = bindingController.getDeviceIdToShowIme();
+ final String settingsValue;
+ if (deviceId == DEVICE_ID_DEFAULT) {
+ settingsValue = settings.getSelectedInputMethod();
+ } else {
+ settingsValue = settings.getSelectedDefaultDeviceInputMethod();
+ }
+ if (!TextUtils.equals(settingsValue, imeId)) {
+ Slog.w(TAG, "DEFAULT_INPUT_METHOD=" + settingsValue
+ + " is not updated. Fixing it up to " + imeId
+ + " See b/354782333.");
+ if (deviceId == DEVICE_ID_DEFAULT) {
+ settings.putSelectedInputMethod(imeId);
+ } else {
+ settings.putSelectedDefaultDeviceInputMethod(imeId);
+ }
+ }
}
hasFailed |= failedToSelectUnknownIme;
}