From 992ad4953c04e2e0b8c9c34f85bad7f4b8369afc Mon Sep 17 00:00:00 2001 From: Bernardo Rufino Date: Fri, 6 Nov 2020 10:38:59 +0000 Subject: [PATCH] Make PiP overlay trusted to let touches pass-through This seems to be the overlay with the settings/close/maximize buttons (please correct me if I'm wrong). With go/untrusted-touches the overlay is blocking touches, since that's generated and owned by SystemUI with original intention of letting touches pass-through to the "pip_input_consumer" below (owned by the system), the fix is to make it trusted. Bug: 172629907 Bug: 158002302 Test: Put app in PiP state (eg. Maps), click on it and verify no toast/logcat is shown regarding untrusted touch. Change-Id: I4227d129b1d43ebc46cd169be7cae7f4e7ed9b9a --- .../android/wm/shell/pip/phone/PipMenuActivityController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java index 24144b21e6d00..105a7900833a6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java @@ -22,6 +22,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; import static android.view.WindowManager.LayoutParams.FLAG_SLIPPERY; import static android.view.WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; import static android.view.WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static android.view.WindowManager.SHELL_ROOT_LAYER_PIP; @@ -419,7 +420,7 @@ public class PipMenuActivityController { TYPE_APPLICATION_OVERLAY, FLAG_WATCH_OUTSIDE_TOUCH | FLAG_SPLIT_TOUCH | FLAG_SLIPPERY | FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT); - + lp.privateFlags |= PRIVATE_FLAG_TRUSTED_OVERLAY; lp.setTitle(MENU_WINDOW_TITLE); return lp; }