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

Commit ea935407 authored by Andrii Kulian's avatar Andrii Kulian Committed by Android (Google) Code Review
Browse files

Merge "Fix deferring making activities active"

parents 922698a9 f2195366
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -2065,7 +2065,8 @@ final class ActivityRecord extends ConfigurationContainer {
     * - should be either the topmost in task, or right below the top activity that is finishing
     * If all of these conditions are not met at the same time, the activity cannot be made active.
     */
    private boolean shouldMakeActive(ActivityRecord activeActivity) {
    @VisibleForTesting
    boolean shouldMakeActive(ActivityRecord activeActivity) {
        // If the activity is stopped, stopping, cycle to an active state. We avoid doing
        // this when there is an activity waiting to become translucent as the extra binder
        // calls will lead to noticeable jank. A later call to
@@ -2080,6 +2081,11 @@ final class ActivityRecord extends ConfigurationContainer {
            return false;
        }

        if (!mStackSupervisor.readyToResume()) {
            // Making active is currently deferred (e.g. because an activity launch is in progress).
            return false;
        }

        if (this.mLaunchTaskBehind) {
            // This activity is being launched from behind, which means that it's not intended to be
            // presented to user right now, even if it's set to be visible.
+11 −0
Original line number Diff line number Diff line
@@ -368,4 +368,15 @@ public class ActivityRecordTests extends ActivityTestsBase {
        verify(mService.getLifecycleManager()).scheduleTransaction(eq(mActivity.app.getThread()),
                eq(mActivity.appToken), eq(expected));
    }

    @Test
    public void testShouldMakeActive_deferredResume() {
        mActivity.setState(ActivityStack.ActivityState.STOPPED, "Testing");

        mSupervisor.beginDeferResume();
        assertEquals(false, mActivity.shouldMakeActive(null /* activeActivity */));

        mSupervisor.endDeferResume();
        assertEquals(true, mActivity.shouldMakeActive(null /* activeActivity */));
    }
}