Unify IInputMethodPrivilegedOperations as sync IPC
Since its bettining [1] notifyUserAction() has been implemented as an async IPC method. This wasn't changed when I recently moved it from IInputMethodManager to IInputMethodPrivilegedOperations [2]. However, mixing sync and async methods into the same Binder object is known to be an anti-pattern. Although sending some signals in an asynchronous manner would make sense, it should be done by converting all the methods to async (with some result callbacks for operations that need to receive responce) like we do so in IInputContext.aidl. As for IInputMethodPrivilegedOperations, I think converting notifyUserAction() from async to sync is acceptable because there are already similar sync methods such as: * setImeWindowStatus * reportStartInput * reportFullscreenMode * updateStatusIcon [1]: I11ed9a767588f8080753cd9bce011dac7db579ad d7443c83 [2]: Icc1f9c7f530f0144ecfd460e86114e109ae0044e c07fd4c2 Bug: 114159783 Test: Manually verified as follows 1. Build and flush aosp_taimen-userdebug into Taimen 2. make -j SoftKeyboard 3. adb install -r $OUT/system/app/SoftKeyboard/SoftKeyboard.apk 4. adb shell ime enable com.example.android.softkeyboard/.SoftKeyboard 5. Open AOSP Keyboard settings 6. Enable "English (US)", "French", and "German" 7. Open SoftKeyboard settings 8. Enable "English (United States)", "English (GB)" 9. Open the Dialer app and tap the top edit field. 10. Make sure that the IME layout rotation order when tapping the globe key will be updated only when you tap the keyboard to enter some character. 11. Also confirm it with "adb shell dumpsys input_method" by checking "mSwitchingController:" section there. Change-Id: I9d41f19e30f205acd4d257a105e285bd32288130
Loading
Please register or sign in to comment