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

Commit 44399f20 authored by Yuncheol Heo's avatar Yuncheol Heo Committed by Automerger Merge Worker
Browse files

Merge "Apply setAlwaysOnTop when recycling Task." into sc-v2-dev am: ee4ae77c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15305884

Change-Id: I3e31cb5daf9253d83954fcabbca93de04e921045
parents 379ac00e ee4ae77c
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -1559,6 +1559,7 @@ class ActivityStarter {
            TaskFragment inTaskFragment, boolean restrictedBgActivity,
            NeededUriGrants intentGrants) {
        int result = START_CANCELED;
        boolean startResultSuccessful = false;
        final Task startedActivityRootTask;

        // Create a transition now to record the original intent of actions taken within
@@ -1584,6 +1585,15 @@ class ActivityStarter {
            result = startActivityInner(r, sourceRecord, voiceSession, voiceInteractor,
                    startFlags, doResume, options, inTask, inTaskFragment, restrictedBgActivity,
                    intentGrants);
            startResultSuccessful = ActivityManager.isStartResultSuccessful(result);
            final boolean taskAlwaysOnTop = options != null && options.getTaskAlwaysOnTop();
            // Apply setAlwaysOnTop when starting an Activity is successful regardless of creating
            // a new Activity or recycling the existing Activity.
            if (taskAlwaysOnTop && startResultSuccessful) {
                final Task targetRootTask =
                        mTargetRootTask != null ? mTargetRootTask : mTargetTask.getRootTask();
                targetRootTask.setAlwaysOnTop(true);
            }
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
            startedActivityRootTask = handleStartResult(r, result);
@@ -1591,7 +1601,7 @@ class ActivityStarter {
            mSupervisor.mUserLeaving = false;

            // Transition housekeeping
            if (!ActivityManager.isStartResultSuccessful(result)) {
            if (!startResultSuccessful) {
                if (newTransition != null) {
                    newTransition.abort();
                }
@@ -1755,11 +1765,6 @@ class ActivityStarter {

        if (!mAvoidMoveToFront && mDoResume) {
            mTargetRootTask.getRootTask().moveToFront("reuseOrNewTask", targetTask);
            if (mOptions != null) {
                if (mOptions.getTaskAlwaysOnTop()) {
                    mTargetRootTask.setAlwaysOnTop(true);
                }
            }
            if (!mTargetRootTask.isTopRootTaskInDisplayArea() && mService.mInternal.isDreaming()) {
                // Launching underneath dream activity (fullscreen, always-on-top). Run the launch-
                // -behind transition so the Activity gets created and starts in visible state.