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

Commit 7066b46f 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 am: 2034ed11

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

Change-Id: I1f227fb1e76729fb0b8e28e1ec1b8e350323b8b0
parents d2d8e4eb 2034ed11
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,