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