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

Commit 13dbfff1 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Put launch adjacent activity in a new task if the activity does exist

For the launch adjacent case we only want to put the activity in
an existing task if the activity already exists in the history.

Bug: 28828326
Change-Id: I1a6fdd6779cb20f8c0d9b7d94635b21718f4ac1b
parent b8fe7e8b
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -1396,11 +1396,18 @@ class ActivityStarter {
            final TaskRecord task = mSupervisor.anyTaskForIdLocked(mOptions.getLaunchTaskId());
            intentActivity = task != null ? task.getTopActivity() : null;
        } else if (putIntoExistingTask) {
            // See if there is a task to bring to the front.  If this is a SINGLE_INSTANCE
            // activity, there can be one and only one instance of it in the history, and it is
            // always in its own unique task, so we do a special search.
            intentActivity = mLaunchSingleInstance ? mSupervisor.findActivityLocked(mIntent, mStartActivity.info)
                    : mSupervisor.findTaskLocked(mStartActivity);
            if (mLaunchSingleInstance) {
                // There can be one and only one instance of single instance activity in the
                // history, and it is always in its own unique task, so we do a special search.
               intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info);
            } else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) {
                // For the launch adjacent case we only want to put the activity in an existing
                // task if the activity already exists in the history.
                intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info);
            } else {
                // Otherwise find the best task to put the activity in.
                intentActivity = mSupervisor.findTaskLocked(mStartActivity);
            }
        }
        return intentActivity;
    }