SystemUI: Add HBM provider for UDFPS on Pixel devices

This implements high brightness mode (HBM) control for the under-display
fingerprint sensor on Pixel devices. It enables and disables local HBM
through the Pixel display HAL, similar to Google's implementation in the
stock OS.

Blocking IPC calls to the display HAL are done on a background thread to
avoid causing frame drops by blocking the main thread, but callbacks are
always run on the main thread as specified by the UdfpsHbmProvider docs.
Care is taken to avoid enabling LHBM when it's already enabled and vice
versa, as doing so causes the display HAL's request to time out and
throw an exception.

For simplicity, global HBM is not supported as it has never been used in
production on Pixel devices.

Change-Id: I8d301c7e1ce54ee8ffd987708b6f0e2bf115f7ef
2 files changed