summaryrefslogtreecommitdiff
path: root/tools/aapt2/java/JavaClassGenerator_test.cpp
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2018-06-07 16:28:07 -0700
committerYohei Yukawa <yukawa@google.com>2018-06-07 16:28:07 -0700
commitd3ef842cd4785d2becb40690d2e9b0b6af1b7a1b (patch)
tree180af50969cdc65ac17eb90447c83cff9dab7473 /tools/aapt2/java/JavaClassGenerator_test.cpp
parentd0edb1904a6f42d60bf07e7c5227ed1311cf176a (diff)
Refresh visible IME proc boost upon onBindingDied
When an active IME is force-stopped, service connections from InputMethodManagerService (IMMS) to that IME have died and ServiceConnection#onServiceConnected() will never happen (again) even if Context.BIND_AUTO_CREATE is specified hence IMMS needs to re-establish connections from scratch. Previously IMMS did not handle this scenario and InputMethodManagerService#mVisibleConnection can remain to be true even after the current IME is updated, force-stopped, or whatever permanent death happened to it. As a result, IMMS fails to give process priority boost to the IME process when it shows up until it becomes hidden then shown again. Even though this is one-time anomaly, not giving priority boost to a visible IME is not intentional and should be fixed. Luckily we can rely on a recently introduced callback ServiceConnection#onBindingDied() [1][2] to clean up InputMethodManagerService#mVisibleBound for such a scenario, and this CL does it. [1]: I526cc00816c384fa9eb1312b92406f38085cbff9 9484603c0fa738b67980c18b4abfd3505778ae74 [2]: Ic21f7ef66d43fb6db9f7ebbc833f28c09474ea59 ac2653499692880571922ff63a9dd0ecc2d742a1 Fix: 80625728 Test: Manually verified as follows. 1. Build and flash aosp_taimen-userdebug 2. Run adb shell dumpsys input_method | grep mVisibleBound to make sure that mVisibleBound is true when and only when AOSP Keyboard is shown. 3. Run adb shell dumpsys activity services com.android.inputmethod.latin to make sure that there are two connections to "com.android.inputmethod.latin/.LatinIME" when AOSP Keyboard is shown and is only one connection when AOSP Keyboard is hidden. 4. Run adb shell dumpsys activity processes com.android.inputmethod.latin | grep curProcState to make sure that curProcState is PROCESS_STATE_BOUND_FOREGROUND_SERVICE (==4) when AOSP Keyboard is shown and curProcState is PROCESS_STATE_IMPORTANT_BACKGROUND (==6) when AOSP Keyboard is hidden. 5. Run adb shell cat /proc/`adb shell pidof com.android.inputmethod.latin`/cgroup to make sure that cpuset is foreground when and only when AOSP Keyboard is shown. 6. Run the following command while AOSP Keyboard is visible adb shell am force-stop com.android.inputmethod.latin 7. Run adb shell dumpsys input_method | grep mVisibleBound to make sure that mVisibleBound is reset to false. 8. Tap any EditText field 9. Make sure mVisibleBound becomes true again 10. Make sure curProcState becomes PROCESS_STATE_BOUND_FOREGROUND_SERVICE again 11. Make sure cpuset for AOSP Keyboard is foreground Change-Id: I983d95ffc0c2edab687117f6c6fa5a0d002ef6ad
Diffstat (limited to 'tools/aapt2/java/JavaClassGenerator_test.cpp')
0 files changed, 0 insertions, 0 deletions