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

Commit 9291a5af authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix empty stacks leaked after blocking background activity launches." into qt-dev

parents c5e858a2 e8902452
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -1419,6 +1419,13 @@ class ActivityStarter {
                    stack.finishActivityLocked(mStartActivity, RESULT_CANCELED,
                            null /* intentResultData */, "startActivity", true /* oomAdj */);
                }

                // Stack should also be detached from display and be removed if it's empty.
                if (startedActivityStack != null && startedActivityStack.isAttached()
                        && startedActivityStack.numActivities() == 0
                        && !startedActivityStack.isActivityTypeHome()) {
                    startedActivityStack.remove();
                }
            }
            mService.mWindowManager.continueSurfaceLayout();
        }
@@ -2289,15 +2296,17 @@ class ActivityStarter {
    }

    private int setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) {
        if (mRestrictedBgActivity && (mReuseTask == null || !mReuseTask.containsAppUid(mCallingUid))
                && handleBackgroundActivityAbort(mStartActivity)) {
            return START_ABORTED;
        }

        mTargetStack = computeStackFocus(mStartActivity, true, mLaunchFlags, mOptions);

        // Do no move the target stack to front yet, as we might bail if
        // isLockTaskModeViolation fails below.

        if (mReuseTask == null) {
            if (mRestrictedBgActivity && handleBackgroundActivityAbort(mStartActivity)) {
                return START_ABORTED;
            }
            final TaskRecord task = mTargetStack.createTaskRecord(
                    mSupervisor.getNextTaskIdForUserLocked(mStartActivity.mUserId),
                    mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info,
@@ -2310,11 +2319,6 @@ class ActivityStarter {
            if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Starting new activity " + mStartActivity
                    + " in new task " + mStartActivity.getTaskRecord());
        } else {
            if (mRestrictedBgActivity && !mReuseTask.containsAppUid(mCallingUid)) {
                if (handleBackgroundActivityAbort(mStartActivity)) {
                    return START_ABORTED;
                }
            }
            addOrReparentStartingActivity(mReuseTask, "setTaskFromReuseOrCreateNewTask");
        }