Filter out DesktopWallpaperActivity task from TTT.

Having DesktopWallpaperActivity in TTT sometimes cause crashes as it's a
system activity and launcher doesn't have the permission to read its
package info.

Bug: 398943577
Test: manually verify that WallpaperActivity is filtered out
Flag: EXEMPT Bug fix
Change-Id: I305763f5393350127e4046f1fcf7f3d8ed883f25
diff --git a/quickstep/src/com/android/quickstep/TopTaskTracker.java b/quickstep/src/com/android/quickstep/TopTaskTracker.java
index b3d9da3..8116a88 100644
--- a/quickstep/src/com/android/quickstep/TopTaskTracker.java
+++ b/quickstep/src/com/android/quickstep/TopTaskTracker.java
@@ -46,6 +46,7 @@
 import com.android.launcher3.util.SplitConfigurationOptions.StageType;
 import com.android.launcher3.util.TraceHelper;
 import com.android.quickstep.dagger.QuickstepBaseAppComponent;
+import com.android.quickstep.util.DesksUtils;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.Task.TaskKey;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -341,7 +342,8 @@
 
             ArrayList<TaskInfo> tasks = new ArrayList<>(mOrderedTaskList);
             // Strip the pinned task and recents task
-            tasks.removeIf(t -> t.taskId == mPinnedTaskId || isRecentsTask(t));
+            tasks.removeIf(t -> t.taskId == mPinnedTaskId || isRecentsTask(t)
+                    ||  DesksUtils.isDesktopWallpaperTask(t));
             return new CachedTaskInfo(tasks);
         }
     }
diff --git a/quickstep/src/com/android/quickstep/util/DesksUtils.kt b/quickstep/src/com/android/quickstep/util/DesksUtils.kt
index ccfdbb9..ecddc3f 100644
--- a/quickstep/src/com/android/quickstep/util/DesksUtils.kt
+++ b/quickstep/src/com/android/quickstep/util/DesksUtils.kt
@@ -16,28 +16,34 @@
 
 package com.android.quickstep.util
 
-import android.content.Context
+import android.app.TaskInfo
+import android.content.ComponentName
+import android.content.res.Resources
 import android.window.DesktopExperienceFlags
 import com.android.systemui.shared.recents.model.Task
 
 class DesksUtils {
     companion object {
+        val sysUiPackage =
+            Resources.getSystem().getString(com.android.internal.R.string.config_systemUi)
+
         @JvmStatic
         fun areMultiDesksFlagsEnabled() =
-            DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue() &&
-                DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_FRONTEND.isTrue()
+            DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue &&
+                DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_FRONTEND.isTrue
 
         /** Returns true if this [task] contains the [DesktopWallpaperActivity]. */
         @JvmStatic
-        fun isDesktopWallpaperTask(context: Context, task: Task): Boolean {
-            val sysUiPackage =
-                context.getResources().getString(com.android.internal.R.string.config_systemUi)
-            val component = task.key.component
-            if (component != null) {
-                return component.className.contains("DesktopWallpaperActivity") &&
-                    component.packageName.contains(sysUiPackage)
-            }
-            return false
-        }
+        fun isDesktopWallpaperTask(task: Task) =
+            task.key.component?.let(::isDesktopWallpaperComponent) == true
+
+        @JvmStatic
+        fun isDesktopWallpaperTask(taskInfo: TaskInfo) =
+            taskInfo.baseIntent.component?.let(::isDesktopWallpaperComponent) == true
+
+        @JvmStatic
+        fun isDesktopWallpaperComponent(component: ComponentName) =
+            component.className.contains("DesktopWallpaperActivity") &&
+                component.packageName.contains(sysUiPackage)
     }
 }