diff options
Diffstat (limited to 'libs')
2 files changed, 73 insertions, 6 deletions
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 4f2e028a1df0..2fa09664b73f 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 @@ -381,7 +381,8 @@ public class RecentTasksController implements TaskStackListenerCallback, private void notifyRunningTaskAppeared(RunningTaskInfo taskInfo) { if (mListener == null || !shouldEnableRunningTasksForDesktopMode() - || taskInfo.realActivity == null) { + || taskInfo.realActivity == null + || excludeTaskFromGeneratedList(taskInfo)) { return; } try { @@ -397,7 +398,8 @@ public class RecentTasksController implements TaskStackListenerCallback, private void notifyRunningTaskChanged(RunningTaskInfo taskInfo) { if (mListener == null || !shouldEnableRunningTasksForDesktopMode() - || taskInfo.realActivity == null) { + || taskInfo.realActivity == null + || excludeTaskFromGeneratedList(taskInfo)) { return; } try { @@ -413,7 +415,8 @@ public class RecentTasksController implements TaskStackListenerCallback, private void notifyRunningTaskVanished(RunningTaskInfo taskInfo) { if (mListener == null || !shouldEnableRunningTasksForDesktopMode() - || taskInfo.realActivity == null) { + || taskInfo.realActivity == null + || excludeTaskFromGeneratedList(taskInfo)) { return; } try { @@ -430,7 +433,8 @@ public class RecentTasksController implements TaskStackListenerCallback, if (mListener == null || !DesktopModeFlags.ENABLE_TASK_STACK_OBSERVER_IN_SHELL.isTrue() || taskInfo.realActivity == null - || enableShellTopTaskTracking()) { + || enableShellTopTaskTracking() + || excludeTaskFromGeneratedList(taskInfo)) { return; } try { @@ -447,7 +451,8 @@ public class RecentTasksController implements TaskStackListenerCallback, if (mListener == null || !DesktopModeFlags.ENABLE_TASK_STACK_OBSERVER_IN_SHELL.isTrue() || taskInfo.realActivity == null - || enableShellTopTaskTracking()) { + || enableShellTopTaskTracking() + || excludeTaskFromGeneratedList(taskInfo)) { return; } try { 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 5028479b6ace..a546b3ea7d8f 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 @@ -107,6 +107,7 @@ import java.util.function.Consumer; @RunWith(AndroidJUnit4.class) @SmallTest public class RecentTasksControllerTest extends ShellTestCase { + private static final String SYSTEM_UI_PACKAGE_NAME = "com.android.systemui"; @Mock private Context mContext; @@ -582,6 +583,19 @@ public class RecentTasksControllerTest extends ShellTestCase { @Test @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS}) + public void onTaskAdded_orDesktopWallpaperActivity_doesNotTriggerOnRunningTaskAppeared() + throws Exception { + RunningTaskInfo taskInfo = makeDesktopWallpaperActivityTaskInfo(/* taskId= */10); + mRecentTasksControllerReal.registerRecentTasksListener(mRecentTasksListener); + + mRecentTasksControllerReal.onTaskAdded(taskInfo); + + verify(mRecentTasksListener, never()).onRunningTaskAppeared(any()); + } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS}) public void taskWindowingModeChanged_desktopRunningAppsEnabled_triggersOnRunningTaskChanged() throws Exception { mRecentTasksControllerReal.registerRecentTasksListener(mRecentTasksListener); @@ -593,6 +607,19 @@ public class RecentTasksControllerTest extends ShellTestCase { } @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS}) + public void taskInfoChanged_forDesktopWallpaperActivity_doesNotTriggerOnRunningTaskChanged() + throws Exception { + RunningTaskInfo taskInfo = makeDesktopWallpaperActivityTaskInfo(/* taskId= */10); + mRecentTasksControllerReal.registerRecentTasksListener(mRecentTasksListener); + + mRecentTasksControllerReal.onTaskRunningInfoChanged(taskInfo); + + verify(mRecentTasksListener, never()).onRunningTaskChanged(any()); + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS) public void @@ -619,6 +646,20 @@ public class RecentTasksControllerTest extends ShellTestCase { verify(mRecentTasksListener).onRunningTaskVanished(taskInfo); } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS}) + public void onTaskRemoved_forDesktopWallpaperActivity_doesNotTriggerOnRunningTaskVanished() + throws Exception { + RunningTaskInfo taskInfo = makeDesktopWallpaperActivityTaskInfo(/* taskId= */10); + mRecentTasksControllerReal.registerRecentTasksListener(mRecentTasksListener); + + mRecentTasksControllerReal.onTaskRemoved(taskInfo); + + verify(mRecentTasksListener, never()).onRunningTaskVanished(any()); + } + @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS) @@ -659,6 +700,18 @@ public class RecentTasksControllerTest extends ShellTestCase { } @Test + @EnableFlags(Flags.FLAG_ENABLE_TASK_STACK_OBSERVER_IN_SHELL) + public void onDesktopWallpaperActivityMovedToFront_doesNotTriggerOnTaskMovedToFront() + throws Exception { + RunningTaskInfo taskInfo = makeDesktopWallpaperActivityTaskInfo(/* taskId= */10); + mRecentTasksControllerReal.registerRecentTasksListener(mRecentTasksListener); + + mRecentTasksControllerReal.onTaskMovedToFrontThroughTransition(taskInfo); + + verify(mRecentTasksListener, never()).onTaskMovedToFront(any()); + } + + @Test public void getNullSplitBoundsNonSplitTask() { SplitBounds sb = mRecentTasksController.getSplitBoundsForTaskId(3); assertNull("splitBounds should be null for non-split task", sb); @@ -829,16 +882,25 @@ public class RecentTasksControllerTest extends ShellTestCase { * Helper to create a running task with a given task id. */ private RunningTaskInfo makeRunningTaskInfo(int taskId) { + return makeRunningTaskInfo(taskId, new ComponentName("com." + taskId, "Activity" + taskId)); + } + + private RunningTaskInfo makeRunningTaskInfo(int taskId, ComponentName intentComponent) { RunningTaskInfo info = new RunningTaskInfo(); info.taskId = taskId; info.realActivity = new ComponentName("testPackage", "testClass"); Intent intent = new Intent(); - intent.setComponent(new ComponentName("com." + taskId, "Activity" + taskId)); + intent.setComponent(intentComponent); info.baseIntent = intent; info.lastNonFullscreenBounds = new Rect(); return info; } + private RunningTaskInfo makeDesktopWallpaperActivityTaskInfo(int taskId) { + return makeRunningTaskInfo(taskId, new ComponentName(SYSTEM_UI_PACKAGE_NAME, + DesktopWallpaperActivity.class.getName())); + } + /** * Helper to set the raw task list on the controller. */ |