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

Commit fdd57fe2 authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Fix trigger-task reporting when finishing a task" into sc-dev am: a5c4ed8c

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

Change-Id: Iafe39d6ba88cf9300c892661b2f5fdfbefdbedf1
parents 7ccc0277 a5c4ed8c
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2880,6 +2880,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A

        mAtmService.deferWindowLayout();
        try {
            final Transition newTransition = (!mAtmService.getTransitionController().isCollecting()
                    && mAtmService.getTransitionController().getTransitionPlayer() != null)
                    ? mAtmService.getTransitionController().createTransition(TRANSIT_CLOSE) : null;
            makeFinishingLocked();
            // Make a local reference to its task since this.task could be set to null once this
            // activity is destroyed and detached from task.
@@ -2911,6 +2914,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            final boolean endTask = task.getTopNonFinishingActivity() == null
                    && !task.isClearingToReuseTask();
            final int transit = endTask ? TRANSIT_OLD_TASK_CLOSE : TRANSIT_OLD_ACTIVITY_CLOSE;
            if (newTransition != null) {
                mAtmService.getTransitionController().requestStartTransition(newTransition,
                        endTask ? task : null, null /* remote */);
            }
            if (isState(RESUMED)) {
                if (endTask) {
                    mAtmService.getTaskChangeNotificationController().notifyTaskRemovalStarted(
+21 −0
Original line number Diff line number Diff line
@@ -1032,6 +1032,27 @@ public class ActivityRecordTests extends WindowTestsBase {
        verify(activity.mDisplayContent, never()).prepareAppTransition(eq(TRANSIT_CLOSE));
    }

    /**
     * Verify that finish request for the last activity in a task will request a shell transition
     * with that task as a trigger.
     */
    @Test
    public void testFinishActivityIfPossible_lastInTaskRequestsTransitionWithTrigger() {
        // Set-up mock shell transitions
        final TestTransitionPlayer testPlayer = new TestTransitionPlayer(
                mAtm.getTransitionController(), mAtm.mWindowOrganizerController);
        mAtm.getTransitionController().registerTransitionPlayer(testPlayer);

        final ActivityRecord activity = createActivityWithTask();
        activity.finishing = false;
        activity.mVisibleRequested = true;
        activity.setState(RESUMED, "test");
        activity.finishIfPossible("test", false /* oomAdj */);

        verify(activity).setVisibility(eq(false));
        assertEquals(activity.getTask().mTaskId, testPlayer.mLastRequest.getTriggerTask().taskId);
    }

    /**
     * Verify that complete finish request for non-finishing activity is invalid.
     */