diff options
| author | 2024-07-24 00:18:11 +0000 | |
|---|---|---|
| committer | 2024-07-24 00:18:11 +0000 | |
| commit | 3ecb6a59ea3b809deff123e530e4e0ce9909e821 (patch) | |
| tree | 601fb355b36ff619be65d611e865849dff0bdfd3 | |
| parent | 4ce1a1754e1f421e952a67492625591e308b426e (diff) | |
| parent | 422098eafeb41f72a5a4068221c56352a419f21b (diff) | |
Merge "Make "ime reset --user <userId>" consistent among users" into main
| -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 100e30f6b3d5..ed71765fa6ee 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -6814,67 +6814,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())); |