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

Commit fab9cd89 authored by Andrii Kulian's avatar Andrii Kulian
Browse files

Move activity to display on launch

When an activity is launched with displayId specified and there
is an existing matching task on some other display - that task
should be move to the target display.

Bug: 34396961
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testMoveToDisplayOnLaunch
Change-Id: I18b1f0de320039f4f1ac4e248f048a367f886d29
(cherry picked from commit ede131cc)
parent cf1f1d91
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
@@ -1453,6 +1453,12 @@ class ActivityStarter {
        return intentActivity;
        return intentActivity;
    }
    }


    /**
     * Figure out which task and activity to bring to front when we have found an existing matching
     * activity record in history. May also clear the task if needed.
     * @param intentActivity Existing matching activity.
     * @return {@link ActivityRecord} brought to front.
     */
    private ActivityRecord setTargetStackAndMoveToFrontIfNeeded(ActivityRecord intentActivity) {
    private ActivityRecord setTargetStackAndMoveToFrontIfNeeded(ActivityRecord intentActivity) {
        mTargetStack = intentActivity.getStack();
        mTargetStack = intentActivity.getStack();
        mTargetStack.mLastPausedActivity = null;
        mTargetStack.mLastPausedActivity = null;
@@ -1514,6 +1520,14 @@ class ActivityStarter {
                                    "bringToFrontInsteadOfAdjacentLaunch");
                                    "bringToFrontInsteadOfAdjacentLaunch");
                        }
                        }
                        mMovedToFront = true;
                        mMovedToFront = true;
                    } else if (launchStack.mDisplayId != mTargetStack.mDisplayId) {
                        // Target and computed stacks are on different displays and we've
                        // found a matching task - move the existing instance to that display and
                        // move it to front.
                        intentActivity.task.reparent(launchStack.mStackId, ON_TOP,
                                REPARENT_MOVE_STACK_TO_FRONT, ANIMATE, DEFER_RESUME,
                                "reparentToDisplay");
                        mMovedToFront = true;
                    }
                    }
                    mOptions = null;
                    mOptions = null;