From 1b48b4679cc3f881bffc80f41a182ecf79c89757 Mon Sep 17 00:00:00 2001 From: Gaurav Bhola <gauravbhola@google.com> Date: Wed, 22 May 2024 03:56:55 +0000 Subject: [PATCH] Disable the trustedOverlay flag for taskview - TaskView is meant to contain app activities which shouldn't have trusted overlay set even when itself placed in a window which is trusted. Fix: 339701674 Fix: 342050101 Bug: 320410671 Test: atest WindowUntrustedTouchTest Change-Id: Ib9e3c73516aba7f407e8bcbf8cb9cd7477f40fa8 --- .../wm/shell/taskview/TaskViewTaskController.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java index 11aa402aa283..a126cbe41b00 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java @@ -30,6 +30,7 @@ import android.content.Intent; import android.content.pm.LauncherApps; import android.content.pm.ShortcutInfo; import android.graphics.Rect; +import android.gui.TrustedOverlay; import android.os.Binder; import android.util.CloseGuard; import android.util.Slog; @@ -448,6 +449,14 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener { mSurfaceCreated = true; mIsInitialized = true; mSurfaceControl = surfaceControl; + // SurfaceControl is expected to be null only in the case of unit tests. Guard against it + // to avoid runtime exception in SurfaceControl.Transaction. + if (surfaceControl != null) { + // TaskView is meant to contain app activities which shouldn't have trusted overlays + // flag set even when itself reparented in a window which is trusted. + mTransaction.setTrustedOverlay(surfaceControl, TrustedOverlay.DISABLED) + .apply(); + } notifyInitialized(); mShellExecutor.execute(() -> { if (mTaskToken == null) { -- GitLab