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

Commit 0ae6cfdd authored by Riddle Hsu's avatar Riddle Hsu Committed by Automerger Merge Worker
Browse files

Merge "Wake up dream after resuming the moving to front task" into tm-qpr-dev am: 4c430266

parents d5d978e1 4c430266
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -1970,12 +1970,6 @@ class ActivityStarter {
                ? targetTask.getTopNonFinishingActivity()
                ? targetTask.getTopNonFinishingActivity()
                : targetTaskTop;
                : targetTaskTop;


        // At this point we are certain we want the task moved to the front. If we need to dismiss
        // any other always-on-top root tasks, now is the time to do it.
        if (targetTaskTop.canTurnScreenOn() && mService.isDreaming()) {
            targetTaskTop.mTaskSupervisor.wakeUp("recycleTask#turnScreenOnFlag");
        }

        if (mMovedToFront) {
        if (mMovedToFront) {
            // We moved the task to front, use starting window to hide initial drawn delay.
            // We moved the task to front, use starting window to hide initial drawn delay.
            targetTaskTop.showStartingWindow(true /* taskSwitch */);
            targetTaskTop.showStartingWindow(true /* taskSwitch */);
@@ -1987,6 +1981,12 @@ class ActivityStarter {
        // And for paranoia, make sure we have correctly resumed the top activity.
        // And for paranoia, make sure we have correctly resumed the top activity.
        resumeTargetRootTaskIfNeeded();
        resumeTargetRootTaskIfNeeded();


        // This is moving an existing task to front. But since dream activity has a higher z-order
        // to cover normal activities, it needs the awakening event to be dismissed.
        if (mService.isDreaming() && targetTaskTop.canTurnScreenOn()) {
            targetTaskTop.mTaskSupervisor.wakeUp("recycleTask#turnScreenOnFlag");
        }

        mLastStartActivityRecord = targetTaskTop;
        mLastStartActivityRecord = targetTaskTop;
        return mMovedToFront ? START_TASK_TO_FRONT : START_DELIVERED_TO_TOP;
        return mMovedToFront ? START_TASK_TO_FRONT : START_DELIVERED_TO_TOP;
    }
    }
+20 −0
Original line number Original line Diff line number Diff line
@@ -1136,6 +1136,26 @@ public class ActivityStarterTests extends WindowTestsBase {
        assertThat(starter.mAddingToTask).isTrue();
        assertThat(starter.mAddingToTask).isTrue();
    }
    }


    @Test
    public void testRecycleTaskWakeUpWhenDreaming() {
        doNothing().when(mWm.mAtmService.mTaskSupervisor).wakeUp(anyString());
        doReturn(true).when(mWm.mAtmService).isDreaming();
        final ActivityStarter starter = prepareStarter(0 /* flags */);
        final ActivityRecord target = new ActivityBuilder(mAtm).setCreateTask(true).build();
        starter.mStartActivity = target;
        target.mVisibleRequested = false;
        target.setTurnScreenOn(true);
        // Assume the flag was consumed by relayout.
        target.setCurrentLaunchCanTurnScreenOn(false);
        startActivityInner(starter, target, null /* source */, null /* options */,
                null /* inTask */, null /* inTaskFragment */);
        // The flag should be set again when resuming (from recycleTask) the target as top.
        assertTrue(target.currentLaunchCanTurnScreenOn());
        // In real case, dream activity has a higher priority (TaskDisplayArea#getPriority) that
        // will be put at a higher z-order. So it relies on wakeUp() to be dismissed.
        verify(mWm.mAtmService.mTaskSupervisor).wakeUp(anyString());
    }

    @Test
    @Test
    public void testTargetTaskInSplitScreen() {
    public void testTargetTaskInSplitScreen() {
        final ActivityStarter starter =
        final ActivityStarter starter =