Include IME navigation bar in IME insets
Check if the IME navigation bar is visible, and make sure the computed
IME insets are at least as big as it is.
When an IME is in floating mode, the computed IME insets would be zero,
but the IME navigation bar would be shown (in gesture nav), so the app
content would be slightly covered by it. As a workaround, IMEs always
include the navigation bar insets size in their override for computing
the IME insets size.
With the introduction of the ability to hide the IME navigation bar in
[1], this lead to a problem where apps that want to inset their content
by the IME insets size, when an IME is in floating mode and requested to
hide the IME navigation bar, would still receive non-zero insets equal
to the size of the system gesture navigation bar (drag handle).
This ensures the IME insets size will always include the IME navigation
bar size when necessary, enabling IMEs to remove their workaround,
solving the non-zero insets problem described above.
[1]: I8793db69fb846046300d5a56b3b0060138ef4cd5
Bug: 336335471
Test: atest InputMethodServiceTest#testImeNavigationBarInsets
Change-Id: Id252731ac8b5138cccd1164197ff3ece3a5f3cf8
2 files changed