Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab0fa4c0 authored by Orhan Uysal's avatar Orhan Uysal
Browse files

Filter excluded tasks from running task callbacks

The tasks that are already filtered from recents, can be excluded from
running tasks callback to launcher that is used for top task tracking.

Bug: 394917143
Test: Enter desktop, see that dragged task is the top task in launcher
Flag: EXEMPT Bugfix
Change-Id: I824d6d9e07266fdb7015110188523afc7e518f80
parent 837762a5
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -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 {
+63 −1
Original line number Diff line number Diff line
@@ -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;
@@ -579,6 +580,19 @@ public class RecentTasksControllerTest extends ShellTestCase {
        verify(mRecentTasksListener, never()).onRunningTaskAppeared(any());
    }

    @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})
@@ -592,6 +606,19 @@ public class RecentTasksControllerTest extends ShellTestCase {
        verify(mRecentTasksListener).onRunningTaskChanged(taskInfo);
    }

    @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)
@@ -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)
@@ -658,6 +699,18 @@ public class RecentTasksControllerTest extends ShellTestCase {
        verify(mRecentTasksListener, never()).onTaskMovedToFront(any());
    }

    @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);
@@ -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.
     */