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

Commit fe0dfcbe authored by Louis Chang's avatar Louis Chang
Browse files

Fix two activity stack leak cases

1) An activity stack was created while starting an activity. The stack
should be destroyed if activity did not landed on the stack eventually.

2) Recent stack shouldn't be created if the recents component is also
the home activity, while showing Recents in split-screen.

Bug: 137232340
Test: atest ActivityStarterTests ActivityVisibilityTests

Change-Id: Id870bc5249cd98b891ee7e6a1968f1ee2c6060fd
parent 0383ea90
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -834,11 +834,12 @@ class ActivityStack extends ConfigurationContainer {
                // so that the divider matches and remove this logic.
                // TODO: This is currently only called when entering split-screen while in another
                // task, and from the tests
                // TODO (b/78247419): Check if launcher and overview are same then move home stack
                // instead of recents stack. Then fix the rotation animation from fullscreen to
                // minimized mode
                // TODO (b/78247419): Fix the rotation animation from fullscreen to minimized mode
                final boolean isRecentsComponentHome =
                        mService.getRecentTasks().isRecentsComponentHomeActivity(mCurrentUser);
                final ActivityStack recentStack = display.getOrCreateStack(
                        WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, ACTIVITY_TYPE_RECENTS,
                        WINDOWING_MODE_SPLIT_SCREEN_SECONDARY,
                        isRecentsComponentHome ? ACTIVITY_TYPE_HOME : ACTIVITY_TYPE_RECENTS,
                        true /* onTop */);
                recentStack.moveToFront("setWindowingMode");
                // If task moved to docked stack - show recents if needed.
+5 −0
Original line number Diff line number Diff line
@@ -2337,7 +2337,12 @@ class ActivityStarter {
                            REPARENT_MOVE_STACK_TO_FRONT, ANIMATE, DEFER_RESUME,
                            "reparentingHome");
                    mMovedToFront = true;
                } else if (launchStack.topTask() == null) {
                    // The task does not need to be reparented to the launch stack. Remove the
                    // launch stack if there is no activity in it.
                    launchStack.remove();
                }

                mOptions = null;

                // We are moving a task to the front, use starting window to hide initial drawn