From dc2a2ea7fef5286ec1c8fc8e98134b1febe72071 Mon Sep 17 00:00:00 2001 From: Shu Chen Date: Fri, 10 Mar 2023 12:37:04 +0800 Subject: [PATCH] Don't remove additional subtypes when ACTION_PACKAGE_CHANGED. Instead, remove additional subtypes when package is updating. Bug: 269678483 Test: Locally verified the bug. Change-Id: I94261ffaa6e11b5a21af6c5ac831dab66d8459f2 --- .../inputmethod/InputMethodManagerService.java | 13 ++++++++----- 1 file changed, 8 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 91f91f86d2752..e32bf1beb3000 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -1488,16 +1488,19 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub } int change = isPackageDisappearing(imi.getPackageName()); - if (isPackageModified(imi.getPackageName())) { - mAdditionalSubtypeMap.remove(imi.getId()); - AdditionalSubtypeUtils.save(mAdditionalSubtypeMap, mMethodMap, - mSettings.getCurrentUserId()); - } if (change == PACKAGE_TEMPORARY_CHANGE || change == PACKAGE_PERMANENT_CHANGE) { Slog.i(TAG, "Input method uninstalled, disabling: " + imi.getComponent()); setInputMethodEnabledLocked(imi.getId(), false); + } else if (change == PACKAGE_UPDATING) { + Slog.i(TAG, + "Input method reinstalling, clearing additional subtypes: " + + imi.getComponent()); + mAdditionalSubtypeMap.remove(imi.getId()); + AdditionalSubtypeUtils.save(mAdditionalSubtypeMap, + mMethodMap, + mSettings.getCurrentUserId()); } } }