Skip to content
Commit 4225c7d7 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Make ACTION_CLOSE_SYSTEM_DIALOGS handler in IMMS multi-user-aware

This is something we have completely overlooked when
InputMethodManagerService (IMMS) is upgraded to multi-user-aware [1].

Currently IMMS monitors ACTION_CLOSE_SYSTEM_DIALOGS sent to the system
user (usually user 0) only, if the IME switcher dialog cannot be
dismissed when:
 * the current user is a secondary user, and
 * a secondary user process sends ACTION_CLOSE_SYSTEM_DIALOGS,
which is not an intentional behavior.

With this CL, ACTION_CLOSE_SYSTEM_DIALOGS handler in IMMS becomes
multi-user-aware and accepts only if it is sent to the current user.

 [1]: Ib23849d352db33f0747aa9d5a178f00ac726c13b
      4e1ab15b

Fix: 127810562
Test: Manually verified as follows.
   1. Build aosp_blueline-userdebug and flash it.
   2. adb shell pm create-user test_user
   3. adb shell am switch-user 10
   4. adb shell wm dismiss-keyguard
   5. atest android.view.inputmethod.cts.InputMethodManagerTest#testShowInputMethodPicker
Test: Manually verified as follows.
   1. Build aosp_blueline-userdebug and flash it.
   2. adb shell pm create-user test_user
   3. adb shell am switch-user 10
   4. adb shell wm dismiss-keyguard
   5. make -j SoftKeyboard
   6. adb install -r $OUT/system/app/SoftKeyboard/SoftKeyboard.apk
   7. adb shell ime enable com.example.android.softkeyboard/.SoftKeyboard
   8. Tap the search field of the launcher.
   9. Make sure AOSP Keyboard is shown.
  10. Tap the IME switcher icon on the navigation bar.
  11. Make sure IME switcher dialog is shown.
  12. adb shell am broadcast -a android.intent.action.CLOSE_SYSTEM_DIALOGS --user 0
  13. Make sure that the IME switcher dialog is not dismissed.
  14. adb shell am broadcast -a android.intent.action.CLOSE_SYSTEM_DIALOGS --user 10
  15. Make sure that the IME switcher dialog is dismissed.
  16. Tap the IME switcher icon on the navigation bar again.
  17. Make sure IME switcher dialog is shown.
  18. adb shell am broadcast -a android.intent.action.CLOSE_SYSTEM_DIALOGS --user all
  19. Make sure that the IME switcher dialog is dismissed.
  20. Tap the IME switcher icon on the navigation bar again.
  21. Make sure IME switcher dialog is shown.
  22. adb shell am broadcast -a android.intent.action.CLOSE_SYSTEM_DIALOGS --user current
  23. Make sure that the IME switcher dialog is dismissed.
Change-Id: Id71e6f8122be05e27545fa9d6b95a0b6156d202c
parent 418358a0
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment