Replace custom header spy window with custom touchable regions
When custom headers are being used, even though input falls through the
spy window into the app's customized header, a11y isn't able to focus
the app's views when they're fully "occluded" (even though it's
transparent) by the spy window.
As an alternative approach to handling input, this CL removes the spy
input feature and instead explicitly sets touchable regions of the
caption bar to not included the customized space. This keeps the
existing input requirements the same (customized region in app receives
input, system regions and left over non-exclusion space is used by the
system for header buttons or drag-moving), but also allows the a11y
service to focus the app's views.
This is enabled behind a flag/param as it touches a lot of input
handling code. It also requires calling #relayout on exclusion region
changes because it's needed to update the touchable region of the window
now.
Flag: com.android.window.flags.enable_accessible_custom_headers
Fix: 339302584
Test: manual - using Clank with tabs in the custom header, check
talkback is able to focus the tabs and their X button.
Change-Id: I7ca24a71c4113e352ea173ac97ecb6e20bbbecb9
9 files changed