diff options
| author | 2024-07-23 15:16:49 -0700 | |
|---|---|---|
| committer | 2024-07-23 15:16:49 -0700 | |
| commit | 422098eafeb41f72a5a4068221c56352a419f21b (patch) | |
| tree | 5189c9cad750e00eb0cc7b694ba30f3c552cdf2e | |
| parent | 1054f4ec74e7e2db5f1752ab88f66490009229c2 (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.java | 92 |
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())); |