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

Commit 0dd91528 authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "Moves the task to front if it is different from the top task" into main

parents a7488d72 9ef09c94
Loading
Loading
Loading
Loading
+41 −60
Original line number Diff line number Diff line
@@ -2767,10 +2767,7 @@ class ActivityStarter {
            }
        }

        // If the target task is not in the front, then we need to bring it to the front...
        // except...  well, with SINGLE_TASK_LAUNCH it's not entirely clear. We'd like to have
        // the same behavior as if a new instance was being started, which means not bringing it
        // to the front if the caller is not itself in the front.
        // If the target task is not in the front, then we need to bring it to the front.
        final boolean differentTopTask;
        if (mTargetRootTask.getDisplayArea() == mPreferredTaskDisplayArea) {
            final Task focusRootTask = mTargetRootTask.mDisplayContent.getFocusedRootTask();
@@ -2787,7 +2784,6 @@ class ActivityStarter {

        if (differentTopTask && !avoidMoveToFront()) {
            mStartActivity.intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
            if (mSourceRecord == null || inTopNonFinishingTask(mSourceRecord)) {
            // We really do want to push this one into the user's face, right now.
            if (mLaunchTaskBehind && mSourceRecord != null) {
                intentActivity.setTaskToAffiliateWith(mSourceRecord.getTask());
@@ -2830,7 +2826,6 @@ class ActivityStarter {
            }
            mOptions = null;
        }
        }
        if (differentTopTask) {
            logPIOnlyCreatorAllowsBAL();
        }
@@ -2850,20 +2845,6 @@ class ActivityStarter {
                mRootWindowContainer.getDefaultTaskDisplayArea(), mTargetRootTask);
    }

    private boolean inTopNonFinishingTask(ActivityRecord r) {
        if (r == null || r.getTask() == null) {
            return false;
        }

        final Task rTask = r.getTask();
        final Task parent = rTask.getCreatedByOrganizerTask() != null
                ? rTask.getCreatedByOrganizerTask() : r.getRootTask();
        final ActivityRecord topNonFinishingActivity = parent != null
                ? parent.getTopNonFinishingActivity() : null;

        return topNonFinishingActivity != null && topNonFinishingActivity.getTask() == rTask;
    }

    private void resumeTargetRootTaskIfNeeded() {
        if (mDoResume) {
            final ActivityRecord next = mTargetRootTask.topRunningActivity(