Uses equals to compare the old/new subtypes.

In case of additional subtypes, which are provided by IME app at
runtime, the subtype instances may be re-created but remains the
identical hash codes.
So when an IME provided subtypes {A,B} with current subtype A and
then provides {A,B,C} later, the IME don't expect to be notified
by InputMethodService#onCurrentInputMethodSubtypeChanged.

Bug: 269546663
Test: locally verify the bug.
Change-Id: Ib23e5883af4b99845e80b370c245999fa10d7f57
This commit is contained in:
Shu Chen
2023-02-21 14:22:35 +08:00
parent 28c920ff2e
commit e4244a4f21

View File

@@ -3235,7 +3235,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
notifyInputMethodSubtypeChangedLocked(userId, info, null);
return;
}
if (newSubtype != oldSubtype) {
if (!newSubtype.equals(oldSubtype)) {
setSelectedInputMethodAndSubtypeLocked(info, subtypeId, true);
IInputMethodInvoker curMethod = getCurMethodLocked();
if (curMethod != null) {