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

Commit 22ab2b96 authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Android (Google) Code Review
Browse files

Merge changes I72119772,I124e4cc0,I462d4dfc into pi-dev

* changes:
  Clear all options from Task when any ActivityRecord consumes the options.
  Revert "Set options on startingActivity instead of topActivity"
  Revert "Set options for activity being brought to front."
parents 1b929db3 82a0ba84
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -1543,7 +1543,13 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
                    Slog.e(TAG, "applyOptionsLocked: Unknown animationType=" + animationType);
                    break;
            }
            pendingOptions = null;

            if (task == null) {
                clearOptionsLocked(false /* withAbort */);
            } else {
                // This will clear the options for all the ActivityRecords for this Task.
                task.clearAllPendingOptions();
            }
        }
    }

@@ -1552,10 +1558,14 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
    }

    void clearOptionsLocked() {
        if (pendingOptions != null) {
        clearOptionsLocked(true /* withAbort */);
    }

    void clearOptionsLocked(boolean withAbort) {
        if (withAbort && pendingOptions != null) {
            pendingOptions.abort();
            pendingOptions = null;
        }
        pendingOptions = null;
    }

    ActivityOptions takeOptionsLocked() {
+8 −9
Original line number Diff line number Diff line
@@ -4501,11 +4501,11 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
        return hasVisibleActivities;
    }

    private void updateTransitLocked(int transit, ActivityRecord starting,
            ActivityOptions options) {
    private void updateTransitLocked(int transit, ActivityOptions options) {
        if (options != null) {
            if (starting != null && !starting.isState(RESUMED)) {
                starting.updateOptionsLocked(options);
            ActivityRecord r = topRunningActivityLocked();
            if (r != null && !r.isState(RESUMED)) {
                r.updateOptionsLocked(options);
            } else {
                ActivityOptions.abort(options);
            }
@@ -4542,9 +4542,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
        }
    }

    final void moveTaskToFrontLocked(TaskRecord tr, ActivityRecord starting,
            boolean noAnimation, ActivityOptions options, AppTimeTracker timeTracker,
            String reason) {
    final void moveTaskToFrontLocked(TaskRecord tr, boolean noAnimation, ActivityOptions options,
            AppTimeTracker timeTracker, String reason) {
        if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, "moveTaskToFront: " + tr);

        final ActivityStack topStack = getDisplay().getTopStack();
@@ -4556,7 +4555,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
            if (noAnimation) {
                ActivityOptions.abort(options);
            } else {
                updateTransitLocked(TRANSIT_TASK_TO_FRONT, starting, options);
                updateTransitLocked(TRANSIT_TASK_TO_FRONT, options);
            }
            return;
        }
@@ -4594,7 +4593,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
            }
            ActivityOptions.abort(options);
        } else {
            updateTransitLocked(TRANSIT_TASK_TO_FRONT, r, options);
            updateTransitLocked(TRANSIT_TASK_TO_FRONT, options);
        }
        // If a new task is moved to the front, then mark the existing top activity as supporting
        // picture-in-picture while paused only if the task would not be considered an oerlay on top
+1 −1
Original line number Diff line number Diff line
@@ -2196,7 +2196,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
        }

        final ActivityRecord r = task.getTopActivity();
        currentStack.moveTaskToFrontLocked(task, r, false /* noAnimation */, options,
        currentStack.moveTaskToFrontLocked(task, false /* noAnimation */, options,
                r == null ? null : r.appTimeTracker, reason);

        if (DEBUG_STACK) Slog.d(TAG_STACK,
+8 −9
Original line number Diff line number Diff line
@@ -1815,9 +1815,8 @@ class ActivityStarter {
                        // We only want to move to the front, if we aren't going to launch on a
                        // different stack. If we launch on a different stack, we will put the
                        // task on top there.
                        mTargetStack.moveTaskToFrontLocked(intentTask, mStartActivity, mNoAnimation,
                                mOptions, mStartActivity.appTimeTracker,
                                "bringingFoundTaskToFront");
                        mTargetStack.moveTaskToFrontLocked(intentTask, mNoAnimation, mOptions,
                                mStartActivity.appTimeTracker, "bringingFoundTaskToFront");
                        mMovedToFront = true;
                    } else if (launchStack.inSplitScreenWindowingMode()) {
                        if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) {
@@ -1831,7 +1830,7 @@ class ActivityStarter {
                            // We choose to move task to front instead of launching it adjacent
                            // when specific stack was requested explicitly and it appeared to be
                            // adjacent stack, but FLAG_ACTIVITY_LAUNCH_ADJACENT was not set.
                            mTargetStack.moveTaskToFrontLocked(intentTask, mStartActivity,
                            mTargetStack.moveTaskToFrontLocked(intentTask,
                                    mNoAnimation, mOptions, mStartActivity.appTimeTracker,
                                    "bringToFrontInsteadOfAdjacentLaunch");
                        }
@@ -2060,7 +2059,7 @@ class ActivityStarter {

        final TaskRecord topTask = mTargetStack.topTask();
        if (topTask != sourceTask && !mAvoidMoveToFront) {
            mTargetStack.moveTaskToFrontLocked(sourceTask, mStartActivity, mNoAnimation, mOptions,
            mTargetStack.moveTaskToFrontLocked(sourceTask, mNoAnimation, mOptions,
                    mStartActivity.appTimeTracker, "sourceTaskToFront");
        } else if (mDoResume) {
            mTargetStack.moveToFront("sourceStackToFront");
@@ -2126,7 +2125,7 @@ class ActivityStarter {
                && top.userId == mStartActivity.userId) {
            if ((mLaunchFlags & FLAG_ACTIVITY_SINGLE_TOP) != 0
                    || isLaunchModeOneOf(LAUNCH_SINGLE_TOP, LAUNCH_SINGLE_TASK)) {
                mTargetStack.moveTaskToFrontLocked(mInTask, mStartActivity, mNoAnimation, mOptions,
                mTargetStack.moveTaskToFrontLocked(mInTask, mNoAnimation, mOptions,
                        mStartActivity.appTimeTracker, "inTaskToFront");
                if ((mStartFlags & START_FLAG_ONLY_IF_NEEDED) != 0) {
                    // We don't need to start a new activity, and the client said not to do
@@ -2139,7 +2138,7 @@ class ActivityStarter {
        }

        if (!mAddingToTask) {
            mTargetStack.moveTaskToFrontLocked(mInTask, mStartActivity, mNoAnimation, mOptions,
            mTargetStack.moveTaskToFrontLocked(mInTask, mNoAnimation, mOptions,
                    mStartActivity.appTimeTracker, "inTaskToFront");
            // We don't actually want to have this activity added to the task, so just
            // stop here but still tell the caller that we consumed the intent.
@@ -2159,8 +2158,8 @@ class ActivityStarter {
            updateBounds(mInTask, mLaunchParams.mBounds);
        }

        mTargetStack.moveTaskToFrontLocked(mInTask, mStartActivity, mNoAnimation, mOptions,
                mStartActivity.appTimeTracker, "inTaskToFront");
        mTargetStack.moveTaskToFrontLocked(
                mInTask, mNoAnimation, mOptions, mStartActivity.appTimeTracker, "inTaskToFront");

        addOrReparentStartingActivity(mInTask, "setTaskFromInTask");
        if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Starting new activity " + mStartActivity
+7 −1
Original line number Diff line number Diff line
@@ -944,7 +944,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
    }

    @Override
    protected ConfigurationContainer getChildAt(int index) {
    protected ActivityRecord getChildAt(int index) {
        return mActivities.get(index);
    }

@@ -1898,6 +1898,12 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
        }
    }

    void clearAllPendingOptions() {
        for (int i = getChildCount() - 1; i >= 0; i--) {
            getChildAt(i).clearOptionsLocked(false /* withAbort */);
        }
    }

    void dump(PrintWriter pw, String prefix) {
        pw.print(prefix); pw.print("userId="); pw.print(userId);
                pw.print(" effectiveUid="); UserHandle.formatUid(pw, effectiveUid);
Loading