summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yohei Yukawa <yukawa@google.com> 2024-07-23 15:16:49 -0700
committer Yohei Yukawa <yukawa@google.com> 2024-07-23 15:16:49 -0700
commit422098eafeb41f72a5a4068221c56352a419f21b (patch)
tree5189c9cad750e00eb0cc7b694ba30f3c552cdf2e
parent1054f4ec74e7e2db5f1752ab88f66490009229c2 (diff)
Make "ime reset --user <userId>" consistent among users
With this CL adb shell ime reset --user <userId> starts behaving in the same manner across users, meaning that there is no special behavior when the userId is not IMMS#mCurrentUserId. We expect no abrupt behavior change in this CL. Bug: 350386877 Bug: 350834650 Test: manually verified Flag: EXEMPT refactor Change-Id: I4c776b45bb7d96d8f7dd49c71e269ffa310389c6
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java92
1 files changed, 36 insertions, 56 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index eed34b86f744..0940544a9e06 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -6825,67 +6825,47 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final String nextIme;
final List<InputMethodInfo> nextEnabledImes;
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
- if (userId == mCurrentUserId) {
- final var userData = getUserData(userId);
- if (Flags.refactorInsetsController()) {
- if (userData.mImeBindingState != null
- && userData.mImeBindingState.mFocusedWindowClient != null
- && userData.mImeBindingState.mFocusedWindowClient.mClient
- != null) {
- userData.mImeBindingState.mFocusedWindowClient.mClient
- .setImeVisibility(false,
- null /* TODO(b329229469) initialize statsToken here? */);
- } else {
- // TODO(b329229469): ImeTracker?
- }
+ final var userData = getUserData(userId);
+ if (Flags.refactorInsetsController()) {
+ if (userData.mImeBindingState != null
+ && userData.mImeBindingState.mFocusedWindowClient != null
+ && userData.mImeBindingState.mFocusedWindowClient.mClient
+ != null) {
+ userData.mImeBindingState.mFocusedWindowClient.mClient
+ .setImeVisibility(false,
+ null /* TODO(b329229469) initialize statsToken here? */);
} else {
- hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow,
- 0 /* flags */,
- SoftInputShowHideReason.HIDE_RESET_SHELL_COMMAND, userId);
- }
- final var bindingController = userData.mBindingController;
- bindingController.unbindCurrentMethod();
-
- // Enable default IMEs, disable others
- var toDisable = settings.getEnabledInputMethodList();
- var defaultEnabled = InputMethodInfoUtils.getDefaultEnabledImes(
- mContext, settings.getMethodList());
- toDisable.removeAll(defaultEnabled);
- for (InputMethodInfo info : toDisable) {
- setInputMethodEnabledLocked(info.getId(), false, userId);
- }
- for (InputMethodInfo info : defaultEnabled) {
- setInputMethodEnabledLocked(info.getId(), true, userId);
+ // TODO(b329229469): ImeTracker?
}
- // Choose new default IME, reset to none if no IME available.
- if (!chooseNewDefaultIMELocked(userId)) {
- resetSelectedInputMethodAndSubtypeLocked(null, userId);
- }
- updateInputMethodsFromSettingsLocked(true /* enabledMayChange */, userId);
- InputMethodUtils.setNonSelectedSystemImesDisabledUntilUsed(
- getPackageManagerForUser(mContext, settings.getUserId()),
- settings.getEnabledInputMethodList());
- nextIme = settings.getSelectedInputMethod();
- nextEnabledImes = settings.getEnabledInputMethodList();
} else {
- nextEnabledImes = InputMethodInfoUtils.getDefaultEnabledImes(mContext,
- settings.getMethodList());
- nextIme = InputMethodInfoUtils.getMostApplicableDefaultIME(
- nextEnabledImes).getId();
-
- // Reset enabled IMEs.
- final String[] nextEnabledImeIds = new String[nextEnabledImes.size()];
- for (int i = 0; i < nextEnabledImeIds.length; ++i) {
- nextEnabledImeIds[i] = nextEnabledImes.get(i).getId();
- }
- settings.putEnabledInputMethodsStr(InputMethodUtils.concatEnabledImeIds(
- "", nextEnabledImeIds));
+ hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow,
+ 0 /* flags */,
+ SoftInputShowHideReason.HIDE_RESET_SHELL_COMMAND, userId);
+ }
+ final var bindingController = userData.mBindingController;
+ bindingController.unbindCurrentMethod();
- // Reset selected IME.
- settings.putSelectedInputMethod(nextIme);
- settings.putSelectedDefaultDeviceInputMethod(null);
- settings.putSelectedSubtype(NOT_A_SUBTYPE_ID);
+ // Enable default IMEs, disable others
+ var toDisable = settings.getEnabledInputMethodList();
+ var defaultEnabled = InputMethodInfoUtils.getDefaultEnabledImes(
+ mContext, settings.getMethodList());
+ toDisable.removeAll(defaultEnabled);
+ for (InputMethodInfo info : toDisable) {
+ setInputMethodEnabledLocked(info.getId(), false, userId);
+ }
+ for (InputMethodInfo info : defaultEnabled) {
+ setInputMethodEnabledLocked(info.getId(), true, userId);
+ }
+ // Choose new default IME, reset to none if no IME available.
+ if (!chooseNewDefaultIMELocked(userId)) {
+ resetSelectedInputMethodAndSubtypeLocked(null, userId);
}
+ updateInputMethodsFromSettingsLocked(true /* enabledMayChange */, userId);
+ InputMethodUtils.setNonSelectedSystemImesDisabledUntilUsed(
+ getPackageManagerForUser(mContext, settings.getUserId()),
+ settings.getEnabledInputMethodList());
+ nextIme = settings.getSelectedInputMethod();
+ nextEnabledImes = settings.getEnabledInputMethodList();
out.println("Reset current and enabled IMEs for user #" + userId);
out.println(" Selected: " + nextIme);
nextEnabledImes.forEach(ime -> out.println(" Enabled: " + ime.getId()));