Fix back swipes/presses ignored during IME hide animation

This change unregisters all IME callbacks when a IME hide animation starts, such that new back events immediately start dispatching to the next back callback.

In case the hide animation is interrupted causing the IME to reappear (before fully disappearing), the previously unregistered IME back callbacks are reregistered to restore a valid callback state.

Bug: 375986921
Test: Manual, i.e. verifying that quick double back swipes are handled correctly (including after an interrupted IME hide animation)
Test: ImeBackAnimationControllerTest
Flag: android.view.inputmethod.refactor_insets_controller
Change-Id: Ic6b2229cae21e91c85f32c5dec4ca1845962ae31
5 files changed