Fix WIC#hide(ime()) no-op when IME insets not controllable
When the app is in multi-windowing mode (e.g. Bubble or split-screen), calling WIC#show(ime()) isn't update IME requested visiblity to IME insets consumer due to the app unable to control the IME insets, even though IME ends up showing by invoking requestShow from consumer, the requested visible state is still be invisible. This affects when the app calling WIC#hide(ime()) next time, the call will be no-op since no previous requested visible state. To fix this, ensure in InsetsController#collectSourceControls could call consumer.show(fromIme) to update IME requested visiblity, even though the result of requestShow was IME_SHOW_DELAYED by IME insets not controllable. Fix: 235157568 Test: manual as following steps 1) make and install WindowInsetsTests 2) Launch WindowInsetsTests from all apps. 3) Launch another app and enter split-screen mode 4) Choose WindowInsetsTests task to be bottom split-task 5) In Window Insets Tests main activity, press "Window Insets Controller" button 6) Press "IME INVISIBLE" button to show IME 7) When IME is visible, press "IME VISIBLE" button to verify IME will be hidden Test: atest InsetsControllerTest#\ testImeRequestedVisibleWhenImeNotControllable Change-Id: I8f70dd8bdf24f4a08bcc6f975b13b69988bd69f3
Loading
Please register or sign in to comment