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

Commit d401d88f authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 07dbf8e8 e8e9069b
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);
                    }
                }
            }