IMMS should preserve selected IME upon boot
This is another follow up CL to my refactoring CL [1], which unintentionally changed the condition to reset default enabled/selected IMEs when the device boots up. My previous attempt [2] actually fixed the unexpected reset of the enabled IMEs (Bug 67093433), but did not fix the unexpected reset of the selected IME (Bug 113159114). The culprit was IMMS#resetDefaultImeLocked(), which always resets the selected IME when it gets called in a too early boot phase where mCurMethodId is still null. Actually it turns out that we do not need to call IMMS#resetDefaultImeLocked() from IMMS#systemRunning() at all, because buildInputMethodListLocked(!imeSelectedOnBoot /* resetDefaultEnabledIme */) one line above already takes care of such a case. Note that this issue is observable only on direct-boot aware devices because of the same reason explained in my previous CL [2]. [1]: I5b37c450db4b25b3e635b6d634293a34eec8b9d4 7924782c [2]: Id624d577d941245cca944498dc6935eb364865cf 1f9a3cbe Fix: 113159114 Test: Manually verified as follows 1. Check out AOSP master 2. Build an OS image for a direct-boot aware device then flash it. 3. Open development/samples/SoftKeyboard/AndroidManifest.xml then add android:directBootAware="true" to the IME service. 4. tapas SoftKeyboard 5. make -j 6. adb install -r $OUT/system/app/SoftKeyboard/SoftKeyboard.apk 7. adb shell ime enable com.example.android.softkeyboard/.SoftKeyboard 8. adb shell ime set com.example.android.softkeyboard/.SoftKeyboard 9. adb shell locksettings set-password aaaa 10. adb reboot 11. Make sure that * Sample Soft keyboard is shown by default on the unlock screen. * AOSP Keyboard is also enabled. Change-Id: Icb782c01c742a9359b5a6684c360f30c5cf9cdc9
Loading
Please register or sign in to comment