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

Commit a31e01fc authored by wilsonshih's avatar wilsonshih
Browse files

Only adjust the task position when there is no move-to-top request.

Adjust the check order when adjusting the focus.
If there is no move-to-top request, only adjust the task position,
otherwise it may send top position change to unrelated activities.

Bug: 154685134
Test: atest ActivityLifecycleTopResumedStateTests
Test: atest ActivityRecordTests
Change-Id: I0827641b8f24e8f42e6b8e8703648dc540c902ef
parent 6dd1627a
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -2688,9 +2688,16 @@ class Task extends WindowContainer<WindowContainer> {
            return null;
        }

        final ActivityStack rootTask = (ActivityStack) focusableTask.getRootTask();
        if (!moveParentsToTop) {
            // Only move the next stack to top in its task container.
            WindowContainer parent = focusableTask.getParent();
            parent.positionChildAt(POSITION_TOP, focusableTask, false /* includingParents */);
            return rootTask;
        }

        final String myReason = reason + " adjustFocusToNextFocusableStack";
        final ActivityRecord top = focusableTask.topRunningActivity();
        final ActivityStack rootTask = (ActivityStack) focusableTask.getRootTask();
        if (focusableTask.isActivityTypeHome() && (top == null || !top.mVisibleRequested)) {
            // If we will be focusing on the home stack next and its current top activity isn't
            // visible, then use the move the home stack task to top to make the activity visible.
@@ -2698,13 +2705,6 @@ class Task extends WindowContainer<WindowContainer> {
            return rootTask;
        }

        if (!moveParentsToTop) {
            // Only move the next stack to top in its task container.
            WindowContainer parent = focusableTask.getParent();
            parent.positionChildAt(POSITION_TOP, focusableTask, false /* includingParents */);
            return rootTask;
        }

        // Move the entire hierarchy to top with updating global top resumed activity
        // and focused application if needed.
        focusableTask.moveToFront(myReason);