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)
}
}