Dismiss dream with launchTaskBehind
When we are launching underneath an AOT screensaver, force launch-behind, attach the process, and go through the resume lifecycle events instead of creating the activity in stopped state. The check for turning the window on during relayout also needs a fix to check for isDreaming() as well as isInteractive() when deciding whether to call PowerManager.wakeUp() during window relayout. Test: atest DreamManagerServiceTests Bug: 154290545 Bug: 159821769 Change-Id: Ib3f6e6caad3abd793f5c66eece8beffcffde2017
This commit is contained in:
@@ -1662,6 +1662,12 @@ class ActivityStarter {
|
||||
mTargetStack.setAlwaysOnTop(true);
|
||||
}
|
||||
}
|
||||
if (!mTargetStack.isTopStackInDisplayArea() && mService.mInternal.isDreaming()) {
|
||||
// Launching underneath dream activity (fullscreen, always-on-top). Run the launch-
|
||||
// -behind transition so the Activity gets created and starts in visible state.
|
||||
mLaunchTaskBehind = true;
|
||||
r.mLaunchTaskBehind = true;
|
||||
}
|
||||
}
|
||||
|
||||
mService.mUgmInternal.grantUriPermissionUncheckedFromIntent(intentGrants,
|
||||
@@ -1911,6 +1917,12 @@ class ActivityStarter {
|
||||
return START_SUCCESS;
|
||||
}
|
||||
|
||||
// At this point we are certain we want the task moved to the front. If we need to dismiss
|
||||
// any other always-on-top stacks, now is the time to do it.
|
||||
if (targetTaskTop.canTurnScreenOn() && mService.mInternal.isDreaming()) {
|
||||
targetTaskTop.mStackSupervisor.wakeUp("recycleTask#turnScreenOnFlag");
|
||||
}
|
||||
|
||||
if (mMovedToFront) {
|
||||
// We moved the task to front, use starting window to hide initial drawn delay.
|
||||
targetTaskTop.showStartingWindow(null /* prev */, false /* newTask */,
|
||||
|
||||
@@ -2685,7 +2685,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
Settings.Global.THEATER_MODE_ON, 0) == 0;
|
||||
boolean canTurnScreenOn = mActivityRecord == null || mActivityRecord.currentLaunchCanTurnScreenOn();
|
||||
|
||||
if (allowTheaterMode && canTurnScreenOn && !mPowerManagerWrapper.isInteractive()) {
|
||||
if (allowTheaterMode && canTurnScreenOn
|
||||
&& (mWmService.mAtmInternal.isDreaming()
|
||||
|| !mPowerManagerWrapper.isInteractive())) {
|
||||
if (DEBUG_VISIBILITY || DEBUG_POWER) {
|
||||
Slog.v(TAG, "Relayout window turning screen on: " + this);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user