Restore the legacy protocol between IMMS and KeyboardLayoutManager
This is a follow up CL to my previous CL [1], which hooked up per-user
call flows in IMMS including the following methods.
* setInputMethodLocked()
* setSelectedInputMethodAndSubtypeLocked()
Let's see what went wrong.
InputManagerInternal has the following method so that IMMS can keep
notifying about what is the latest InptuMethodSubtype for each user.
void onInputMethodSubtypeChangedForKeyboardLayoutMapping(
@UserIdInt int userId,
@Nullable InputMethodSubtypeHandle subtypeHandle,
@Nullable InputMethodSubtype subtype)
Before my CL [1], IMMS had invoked the above method in two cases.
A. when the current IME's subtype is updated
B. when the current IME is switched from another user
It turns out that KeyboardLayoutManager has relied on the above
behavior, and it is not yet compatible with concurrent multi-user.
As a short term solution, with this CL both A and B are emulated in
the InputMethodManagerService side.
Longer term solutioins are going to be discussed at Bug 357663774.
[1]: I9d4615e6da979204c21555e040a687163c1460ab
fbeeb934
Fix: 356879517
Test: manually verified
Flag: EXEMPT bug fix
Change-Id: Iac268d3da463904a058ce44e403ca1cae691eedf
Loading
Please register or sign in to comment