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
2 files changed