Prevent IMEs from switching to another IME that isn't enabled

Fixes an issue where the current IME can switch to any IME,
even if it hasn't been enabled.

Fixes: 227207653
Test: atest android.view.inputmethod.cts.InputMethodServiceTest
Change-Id: I12829de9fa58610a7d53e4b154e1550f0f791e75
This commit is contained in:
Adrian Roos
2022-05-24 16:57:47 +02:00
parent d648d08442
commit ceb9a211ec

View File

@@ -4831,6 +4831,13 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
Slog.w(TAG, "Ignoring setInputMethod of uid " + Binder.getCallingUid()
+ " token: " + token);
return;
} else {
// Called with current IME's token.
if (mMethodMap.get(id) != null
&& mSettings.getEnabledInputMethodListWithFilterLocked(
(info) -> info.getId().equals(id)).isEmpty()) {
throw new IllegalStateException("Requested IME is not enabled: " + id);
}
}
final long ident = Binder.clearCallingIdentity();