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

Commit 107a0e61 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Return right activities in getTopVisibleActivities method" into udc-dev am: d401d88f

parents de319f23 d401d88f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -178,6 +178,9 @@ public abstract class ActivityTaskManagerInternal {
    /**
     * Returns the top activity from each of the currently visible root tasks, and the related task
     * id. The first entry will be the focused activity.
     *
     * <p>NOTE: If the top activity is in the split screen, the other activities in the same split
     * screen will also be returned.
     */
    public abstract List<ActivityAssistInfo> getTopVisibleActivities();

+17 −3
Original line number Diff line number Diff line
@@ -1746,9 +1746,13 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
    /**
     * @return a list of pairs, containing activities and their task id which are the top ones in
     * each visible root task. The first entry will be the focused activity.
     *
     * <p>NOTE: If the top activity is in the split screen, the other activities in the same split
     * screen will also be returned.
     */
    List<ActivityAssistInfo> getTopVisibleActivities() {
        final ArrayList<ActivityAssistInfo> topVisibleActivities = new ArrayList<>();
        final ArrayList<ActivityAssistInfo> activityAssistInfos = new ArrayList<>();
        final Task topFocusedRootTask = getTopDisplayFocusedRootTask();
        // Traverse all displays.
        forAllRootTasks(rootTask -> {
@@ -1756,11 +1760,21 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
            if (rootTask.shouldBeVisible(null /* starting */)) {
                final ActivityRecord top = rootTask.getTopNonFinishingActivity();
                if (top != null) {
                    ActivityAssistInfo visibleActivity = new ActivityAssistInfo(top);
                    activityAssistInfos.clear();
                    activityAssistInfos.add(new ActivityAssistInfo(top));
                    // Check if the activity on the split screen.
                    final Task adjacentTask = top.getTask().getAdjacentTask();
                    if (adjacentTask != null) {
                        final ActivityRecord adjacentActivityRecord =
                                adjacentTask.getTopNonFinishingActivity();
                        if (adjacentActivityRecord != null) {
                            activityAssistInfos.add(new ActivityAssistInfo(adjacentActivityRecord));
                        }
                    }
                    if (rootTask == topFocusedRootTask) {
                        topVisibleActivities.add(0, visibleActivity);
                        topVisibleActivities.addAll(0, activityAssistInfos);
                    } else {
                        topVisibleActivities.add(visibleActivity);
                        topVisibleActivities.addAll(activityAssistInfos);
                    }
                }
            }