Enabling New Insets API with Multi-Session IME.

New insets based IME requires windows manager to properly link the
assocaited IME window token against the target window token.

Test script:
Step 1: Patch this CL on rvc-dev repo
Step 2: Build and flash Hawk
Step 3: Build and install a sample multi-client IME
  make -j MultiClientInputMethod
  adb install -r $OUT/system/priv-app/MultiClientInputMethod/MultiClientInputMethod.apk
Step 4: Enable multi-client IME for the side-loaded sample multi-client IME
  adb root
  adb shell setprop persist.debug.multi_client_ime com.example.android.multiclientinputmethod/.MultiClientInputMethod
  adb reboot
Step 5: Open KitchenSync app, select carboard, enter text on Plain Text
tab (sample multi-session keyboard doesn't support numeric keyboard yet)

Bug: 123718661
Test: manual (see test script above)
Change-Id: I2a27c0da3a243d9cb3c98541531396cd9ff819a0
This commit is contained in:
Antonio Kantek
2020-06-08 21:11:09 -07:00
parent 38694c298c
commit 8403a13752

View File

@@ -1347,13 +1347,14 @@ public final class MultiClientInputMethodManagerService {
for (WindowInfo windowInfo : clientInfo.mWindowMap.values()) {
if (windowInfo.mWindowHandle == targetWindowHandle) {
final IBinder targetWindowToken = windowInfo.mWindowToken;
// TODO(yukawa): Report targetWindowToken and targetWindowToken to WMS.
if (DEBUG) {
Slog.v(TAG, "reportImeWindowTarget"
+ " clientId=" + clientId
+ " imeWindowToken=" + imeWindowToken
+ " targetWindowToken=" + targetWindowToken);
}
mIWindowManagerInternal.updateInputMethodTargetWindow(
imeWindowToken, targetWindowToken);
}
}
// not found.
@@ -1496,6 +1497,9 @@ public final class MultiClientInputMethodManagerService {
case InputMethodClientState.ALREADY_SENT_BIND_RESULT:
try {
clientInfo.mMSInputMethodSession.showSoftInput(flags, resultReceiver);
// Forcing WM to show IME on imeTargetWindow
mWindowManagerInternal.showImePostLayout(token);
} catch (RemoteException e) {
}
break;