DO NOT MERGE 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
(cherry picked from commit e4244a4f21)
This commit is contained in:
Shu Chen
2023-02-21 14:22:35 +08:00
committed by Taran Singh
parent 42139e0eba
commit 4507d65f91

View File

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