summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java25
1 files changed, 20 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 1564b2f86218..1f3c2f30212d 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -1341,20 +1341,35 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
@Override
public void onPackageDataCleared(String packageName, int uid) {
+ final int userId = getChangingUserId();
synchronized (ImfLock.class) {
+ final boolean isCurrentUser = (userId == mSettings.getUserId());
+ final AdditionalSubtypeMap additionalSubtypeMap;
+ final InputMethodSettings settings;
+ if (isCurrentUser) {
+ additionalSubtypeMap = mAdditionalSubtypeMap;
+ settings = mSettings;
+ } else {
+ additionalSubtypeMap = AdditionalSubtypeUtils.load(userId);
+ settings = queryInputMethodServicesInternal(mContext, userId,
+ additionalSubtypeMap, DirectBootAwareness.AUTO);
+ }
+
// Note that one package may implement multiple IMEs.
final ArrayList<String> changedImes = new ArrayList<>();
- for (InputMethodInfo imi : mSettings.getMethodList()) {
+ for (InputMethodInfo imi : settings.getMethodList()) {
if (imi.getPackageName().equals(packageName)) {
changedImes.add(imi.getId());
}
}
final AdditionalSubtypeMap newMap =
- mAdditionalSubtypeMap.cloneWithRemoveOrSelf(changedImes);
- if (newMap != mAdditionalSubtypeMap) {
- mAdditionalSubtypeMap = newMap;
+ additionalSubtypeMap.cloneWithRemoveOrSelf(changedImes);
+ if (newMap != additionalSubtypeMap) {
+ if (isCurrentUser) {
+ mAdditionalSubtypeMap = newMap;
+ }
AdditionalSubtypeUtils.save(
- mAdditionalSubtypeMap, mSettings.getMethodMap(), mSettings.getUserId());
+ newMap, settings.getMethodMap(), settings.getUserId());
}
if (!changedImes.isEmpty()) {
mChangedPackages.add(packageName);