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

Commit ede131cc 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
parent ca470202
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -1453,6 +1453,12 @@ class ActivityStarter {
        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) {
        mTargetStack = intentActivity.getStack();
        mTargetStack.mLastPausedActivity = null;
@@ -1514,6 +1520,14 @@ class ActivityStarter {
                                    "bringToFrontInsteadOfAdjacentLaunch");
                        }
                        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;