Merge "Defer ending launcher power mode hint until after transient transition" into udc-dev

This commit is contained in:
Winson Chung
2023-07-18 01:22:21 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 0 deletions

View File

@@ -3212,6 +3212,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
+ "not idle", rootTask.getRootTaskId(), resumedActivity); + "not idle", rootTask.getRootTaskId(), resumedActivity);
return false; return false;
} }
if (mTransitionController.isTransientLaunch(resumedActivity)) {
// Not idle if the transient transition animation is running.
return false;
}
} }
// End power mode launch when idle. // End power mode launch when idle.
mService.endLaunchPowerMode(ActivityTaskManagerService.POWER_MODE_REASON_START_ACTIVITY); mService.endLaunchPowerMode(ActivityTaskManagerService.POWER_MODE_REASON_START_ACTIVITY);

View File

@@ -61,6 +61,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
@@ -1425,6 +1426,15 @@ public class TransitionTests extends WindowTestsBase {
// No need to wait for the activity in transient hide task. // No need to wait for the activity in transient hide task.
assertEquals(WindowContainer.SYNC_STATE_NONE, activity1.mSyncState); assertEquals(WindowContainer.SYNC_STATE_NONE, activity1.mSyncState);
// An active transient launch overrides idle state to avoid clearing power mode before the
// transition is finished.
spyOn(mRootWindowContainer.mTransitionController);
doAnswer(invocation -> controller.isTransientLaunch(invocation.getArgument(0))).when(
mRootWindowContainer.mTransitionController).isTransientLaunch(any());
activity2.getTask().setResumedActivity(activity2, "test");
activity2.idle = true;
assertFalse(mRootWindowContainer.allResumedActivitiesIdle());
activity1.setVisibleRequested(false); activity1.setVisibleRequested(false);
activity2.setVisibleRequested(true); activity2.setVisibleRequested(true);
activity2.setVisible(true); activity2.setVisible(true);