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

Commit 2034ed11 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Automerger Merge Worker
Browse files

Merge "Prevent execute app transition too early when performClearTask" into...

Merge "Prevent execute app transition too early when performClearTask" into sc-v2-dev am: f49cb0da

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

Change-Id: Id0de28967f91119ffbc8d53904dc794d9673a24d
parents b33da445 f49cb0da
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -1606,9 +1606,15 @@ class Task extends TaskFragment {
        } else {
            forAllActivities((r) -> {
                if (r.finishing) return;
                // TODO: figure-out how to avoid object creation due to capture of reason variable.
                r.finishIfPossible(Activity.RESULT_CANCELED,
                        null /* resultData */, null /* resultGrants */, reason, false /* oomAdj */);
                // Prevent the transition from being executed too early if the top activity is
                // resumed but the mVisibleRequested of any other activity is true, the transition
                // should wait until next activity resumed.
                if (r.isState(RESUMED) || (r.isVisible()
                        && !mDisplayContent.mAppTransition.containsTransitRequest(TRANSIT_CLOSE))) {
                    r.finishIfPossible(reason, false /* oomAdj */);
                } else {
                    r.destroyIfPossible(reason);
                }
            });
        }
    }
+14 −0
Original line number Diff line number Diff line
@@ -102,6 +102,20 @@ public class AppTransitionControllerTest extends WindowTestsBase {
                        mDisplayContent.mChangingContainers, null, null, false));
    }

    @Test
    public void testClearTaskSkipAppExecuteTransition() {
        final ActivityRecord behind = createActivityRecord(mDisplayContent,
                WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
        final Task task = behind.getTask();
        final ActivityRecord top = createActivityRecord(task);
        top.setState(ActivityRecord.State.RESUMED, "test");
        behind.setState(ActivityRecord.State.STARTED, "test");
        behind.mVisibleRequested = true;

        task.performClearTask("test");
        assertFalse(mDisplayContent.mAppTransition.isReady());
    }

    @Test
    public void testTranslucentOpen() {
        final ActivityRecord behind = createActivityRecord(mDisplayContent,