summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Uwais Ashraf <uwaisashraf@google.com> 2024-11-21 11:39:33 +0000
committer Uwais Ashraf <uwaisashraf@google.com> 2024-11-21 17:47:07 +0000
commit736c02983a63cb24bbad380d1b0339a522b6124b (patch)
tree1a189630efe44df9982dffb0b435464aaca9821e
parent8eb5ac275d2afad334349dbf2f629d86b45bd430 (diff)
Don't add wallpaper activity to list of tasks
This will prevent it from showing up in recent apps. Bug: 342627272 Fix: 375603439 Test: RecentTasksControllerTest Flag: com.android.launcher3.enable_refactor_task_thumbnail Change-Id: I04deef136d84163153e99342688a7bbe5b5ea5a8
-rw-r--r--libs/WindowManager/Shell/Android.bp1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopWallpaperActivity.kt9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java6
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java30
4 files changed, 41 insertions, 5 deletions
diff --git a/libs/WindowManager/Shell/Android.bp b/libs/WindowManager/Shell/Android.bp
index a354bf78bb39..4c75ea4777da 100644
--- a/libs/WindowManager/Shell/Android.bp
+++ b/libs/WindowManager/Shell/Android.bp
@@ -182,6 +182,7 @@ android_library {
"kotlinx-coroutines-core",
"//frameworks/libs/systemui:com_android_systemui_shared_flags_lib",
"//frameworks/libs/systemui:iconloader_base",
+ "com_android_launcher3_flags_lib",
"com_android_wm_shell_flags_lib",
"PlatformAnimationLib",
"WindowManager-Shell-proto",
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopWallpaperActivity.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopWallpaperActivity.kt
index e835b2fec232..909a06604382 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopWallpaperActivity.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopWallpaperActivity.kt
@@ -17,12 +17,10 @@
package com.android.wm.shell.desktopmode
import android.app.Activity
-import android.app.ActivityManager
+import android.app.TaskInfo
import android.content.ComponentName
import android.os.Bundle
import android.view.WindowManager
-import com.android.internal.protolog.ProtoLog
-import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
/**
* A transparent activity used in the desktop mode to show the wallpaper under the freeform windows.
@@ -42,11 +40,12 @@ class DesktopWallpaperActivity : Activity() {
companion object {
private const val SYSTEM_UI_PACKAGE_NAME = "com.android.systemui"
- private val wallpaperActivityComponent =
+ @JvmStatic
+ val wallpaperActivityComponent =
ComponentName(SYSTEM_UI_PACKAGE_NAME, DesktopWallpaperActivity::class.java.name)
@JvmStatic
- fun isWallpaperTask(taskInfo: ActivityManager.RunningTaskInfo) =
+ fun isWallpaperTask(taskInfo: TaskInfo) =
taskInfo.baseIntent.component?.let(::isWallpaperComponent) ?: false
@JvmStatic
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
index d917f937b16c..4d7aa1fca767 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
@@ -21,6 +21,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.content.pm.PackageManager.FEATURE_PC;
import static com.android.wm.shell.Flags.enableShellTopTaskTracking;
+import static com.android.wm.shell.desktopmode.DesktopWallpaperActivity.isWallpaperTask;
import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_TASK_OBSERVER;
import static com.android.wm.shell.shared.ShellSharedConstants.KEY_EXTRA_SHELL_RECENT_TASKS;
@@ -53,6 +54,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import com.android.internal.protolog.ProtoLog;
+import com.android.launcher3.Flags;
import com.android.wm.shell.common.ExternalInterfaceBinder;
import com.android.wm.shell.common.RemoteCallable;
import com.android.wm.shell.common.ShellExecutor;
@@ -530,6 +532,10 @@ public class RecentTasksController implements TaskStackListenerCallback,
groupedTasks.add(GroupedTaskInfo.forSplitTasks(taskInfo, pairedTaskInfo,
mTaskSplitBoundsMap.get(pairedTaskId)));
} else {
+ if (Flags.enableRefactorTaskThumbnail() && isWallpaperTask(taskInfo)) {
+ // Don't add the wallpaper task as an entry in grouped tasks
+ continue;
+ }
// TODO(346588978): Consolidate multiple visible fullscreen tasks into the same
// grouped task
groupedTasks.add(GroupedTaskInfo.forFullscreenTasks(taskInfo));
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
index 12c397868f5a..68c8aab8849d 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
@@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+import static com.android.launcher3.Flags.FLAG_ENABLE_REFACTOR_TASK_THUMBNAIL;
import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PERSISTENCE;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_50_50;
@@ -51,6 +52,7 @@ import android.app.ActivityTaskManager;
import android.app.KeyguardManager;
import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Point;
import android.graphics.Rect;
@@ -72,6 +74,7 @@ import com.android.wm.shell.TestShellExecutor;
import com.android.wm.shell.common.DisplayInsetsController;
import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.desktopmode.DesktopRepository;
+import com.android.wm.shell.desktopmode.DesktopWallpaperActivity;
import com.android.wm.shell.shared.GroupedTaskInfo;
import com.android.wm.shell.shared.ShellSharedConstants;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
@@ -237,6 +240,19 @@ public class RecentTasksControllerTest extends ShellTestCase {
t3.taskId, -1);
}
+ @EnableFlags(FLAG_ENABLE_REFACTOR_TASK_THUMBNAIL)
+ @Test
+ public void testGetRecentTasks_removesDesktopWallpaperActivity() {
+ RecentTaskInfo t1 = makeTaskInfo(1);
+ RecentTaskInfo desktopWallpaperTaskInfo = makeDesktopWallpaperTaskInfo(2);
+ RecentTaskInfo t3 = makeTaskInfo(3);
+ setRawList(t1, desktopWallpaperTaskInfo, t3);
+
+ ArrayList<GroupedTaskInfo> recentTasks =
+ mRecentTasksController.getRecentTasks(MAX_VALUE, RECENT_IGNORE_UNAVAILABLE, 0);
+ assertGroupedTasksListEquals(recentTasks, t1.taskId, -1, t3.taskId, -1);
+ }
+
@Test
public void testGetRecentTasks_withPairs() {
RecentTaskInfo t1 = makeTaskInfo(1);
@@ -691,11 +707,25 @@ public class RecentTasksControllerTest extends ShellTestCase {
private RecentTaskInfo makeTaskInfo(int taskId) {
RecentTaskInfo info = new RecentTaskInfo();
info.taskId = taskId;
+
+ Intent intent = new Intent();
+ intent.setComponent(new ComponentName("com." + taskId, "Activity" + taskId));
+ info.baseIntent = intent;
+
info.lastNonFullscreenBounds = new Rect();
return info;
}
/**
+ * Helper to create a desktop wallpaper activity with a given task id.
+ */
+ private RecentTaskInfo makeDesktopWallpaperTaskInfo(int taskId) {
+ RecentTaskInfo info = makeTaskInfo(taskId);
+ info.baseIntent.setComponent(DesktopWallpaperActivity.getWallpaperActivityComponent());
+ return info;
+ }
+
+ /**
* Helper to create a running task with a given task id.
*/
private ActivityManager.RunningTaskInfo makeRunningTaskInfo(int taskId) {