Reset mServedView when failing to start input by not target window
Fix a timing issue that when the window using ALT_FOCUSABLE_IM flag to disable starting the input, if the next time the app attempts to remove the flag and when focusing the editor to start the input but somehow added the flag back during IMMS#startInputOrWindowGainedFocus, then the system will fail to start the input with NOT_IME_TARGET_WINDOW result to client. This will fall into a bad consequence to make InputMethodManager thought the servedView (the editor) has already served but actually the input connection was not being refreshed, then ends up showing the keyboard but no-ops when typing the text. Reset mServedView when failing to start input by NOT_IME_TARGET_WINDOW to ensure InputMethodManager#checkFocus will fetch the next served view to start the input again. Bug: 260682160 Test: atest CtsInputMethodDeviceTests Test: manual with test steps: 0-1) Setup a password lock from Settings > Security 0-2) make and install EditTextVariations 0-3) In Setttings > Apps, enable "Notification" and "Display over other apps" for EditTextVariations app 1) Launch EditTexVariations app 2) Menu -> Select "Direct Reply" to popup a HUN 3) Turn off/on the screen 4) In the lockscreen, expand "Message from UserHandle" notification and press "Direct Reply Test" button 5) Expect the password lock shows up and enter the password 6) Verify the keyboard should show up and focusing on the notification editor. 7) Verify the keyboard can input the text on the notification editor. Change-Id: I788373d3fc28ce352f32856a195d04fa670d809f
Loading
Please register or sign in to comment