Exclude IME insets in InsetsPolicy when the task is in split screen

The changes in [1] lead to the IME insets being dispatched to apps in vertical split screen, even when the show animation had not been started.
As SplitLayout is shifting the tasks up, the apps should not receive IME insets anymore, when being in split screen.

This CL introduces a flag within WindowContainer for insets types that should be excluded. Those types are merged with the types from its parent and updated, whenever the parent changes, or when the value is changed (this triggers also an update of all children).
The excludedInsetsTypes are set for the IME, when the requested state for the IME has changed in DisplayImeController, and reset at the beginning/end of the animation (SplitLayout). Thus, in between requesting the IME and receiving a control with leash, no insets are dispatched.
In InsetsPolicy#adjustVisibilityForIme, this flag is used to set the size of the IME to zero, pretending that it is in floating mode. Therefore, no more insets will be dispatched to the associated windows.

[1]: I8e3a74ee579f085cb582040fdba725e7a63d6b85

Test: atest KeyboardVisibilityControlTest#testNoImeInsetsInSplitScreen
      atest WindowContainerTests#testSetExcludeInsetsTypes
Flag: android.view.inputmethod.refactor_insets_controller
Fix: 362478040
Change-Id: Iadadf99a1d725c8d3a8083be0e62face339f0882
10 files changed