From b109d69fefb8741b1baad6ab86ff8fa9bf373fe6 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Mon, 6 Mar 2023 12:01:49 +0000 Subject: [PATCH] Set TaskSnapshotWindow no InputChannel. TaskSnapshotWindow has no need to process any input events. If it has a valid InputChannel but no InputEventReceiver, it won't receive events sent by InputDispatcher like TouchModeEvent. This may cause an ANR. Test: when TaskSnapshotWindow is showing, verify that touch on Notification shade won't trigger ANR on TaskSnapshotWindow. Bug: 271552817 Change-Id: I9595b15fa277ebff4be375eed220cb57533a1a2c --- core/java/android/window/SnapshotDrawerUtils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/java/android/window/SnapshotDrawerUtils.java b/core/java/android/window/SnapshotDrawerUtils.java index 071c20f25e5c2..7b8b354d48d83 100644 --- a/core/java/android/window/SnapshotDrawerUtils.java +++ b/core/java/android/window/SnapshotDrawerUtils.java @@ -34,6 +34,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; import static android.view.WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; +import static android.view.WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_USE_BLAST; @@ -410,6 +411,7 @@ public class SnapshotDrawerUtils { layoutParams.setFitInsetsIgnoringVisibility(attrs.isFitInsetsIgnoringVisibility()); layoutParams.setTitle(title); + layoutParams.inputFeatures |= INPUT_FEATURE_NO_INPUT_CHANNEL; return layoutParams; }