Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54d512c9 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Invalidate IMMS#mCurrentSubtype when upgrading the current IME.

Whenever the package to which the current IME belongs is
modified, IMMS#mCurrentSubtype needs to be invalidated.
Otherwize, InputMethodManager#getCurrentInputMethodSubtype()
continues to return the previously selected subtype.

One example scenario would be to update metadata of a subtype
in a new version of an IME with keeping the same subtypeId.
Suppose imeSubtypeExtraValue was updated from "ABC" to "XYZ".
In this scenario, the subtype in question retrieved with
IMM#getInputMethodList() then InputMethodInfo#getSubtypeAt()
has imeSubtypeExtraValue "XYZ", while the subtype returned
from InputMethodManager#getCurrentInputMethodSubtype() still
has imeSubtypeExtraValue "ABC".

With this CL, IMMS#mCurrentSubtype will be invalidate when
the active IME package is modified.

Bug: 21310194
Bug: 20708002
Change-Id: Ifbb35034d9c8e477ebb5353d2a470dfc1627bbd5
parent 1c5bf7f1
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -675,6 +675,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
                    // We currently don't have a default input method... is
                    // We currently don't have a default input method... is
                    // one now available?
                    // one now available?
                    changed = chooseNewDefaultIMELocked();
                    changed = chooseNewDefaultIMELocked();
                } else if (!changed && isPackageModified(curIm.getPackageName())) {
                    // Even if the current input method is still available, mCurrentSubtype could
                    // be obsolete when the package is modified in practice.
                    changed = true;
                }
                }


                if (changed) {
                if (changed) {