Merge "Stop animation when screen times out and the user turns on the phone." into sc-dev am: a16f9cc218
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15302103 Change-Id: Ia2b5acea0c6f192daf9e577645aa854005f5c9f7
This commit is contained in:
@@ -66,6 +66,8 @@ class KeyguardController {
|
||||
|
||||
private static final String TAG = TAG_WITH_CLASS_NAME ? "KeyguardController" : TAG_ATM;
|
||||
|
||||
static final String KEYGUARD_SLEEP_TOKEN_TAG = "keyguard";
|
||||
|
||||
private final ActivityTaskSupervisor mTaskSupervisor;
|
||||
private WindowManagerService mWindowManager;
|
||||
private boolean mKeyguardShowing;
|
||||
@@ -82,7 +84,7 @@ class KeyguardController {
|
||||
ActivityTaskSupervisor taskSupervisor) {
|
||||
mService = service;
|
||||
mTaskSupervisor = taskSupervisor;
|
||||
mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl("keyguard");
|
||||
mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl(KEYGUARD_SLEEP_TOKEN_TAG);
|
||||
}
|
||||
|
||||
void setWindowManager(WindowManagerService windowManager) {
|
||||
|
||||
@@ -71,6 +71,7 @@ import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP;
|
||||
import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS;
|
||||
import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList;
|
||||
import static com.android.server.wm.ActivityTaskSupervisor.printThisActivity;
|
||||
import static com.android.server.wm.KeyguardController.KEYGUARD_SLEEP_TOKEN_TAG;
|
||||
import static com.android.server.wm.RootWindowContainerProto.IS_HOME_RECENTS_COMPONENT;
|
||||
import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
|
||||
import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
|
||||
@@ -2055,7 +2056,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
||||
/**
|
||||
* Move root task with all its existing content to specified task display area.
|
||||
*
|
||||
* @param rootTaskId Id of root task to move.
|
||||
* @param rootTaskId Id of root task to move.
|
||||
* @param taskDisplayArea The task display area to move root task to.
|
||||
* @param onTop Indicates whether container should be place on top or on bottom.
|
||||
*/
|
||||
@@ -2093,9 +2094,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
||||
/**
|
||||
* Move root task with all its existing content to specified display.
|
||||
*
|
||||
* @param rootTaskId Id of root task to move.
|
||||
* @param displayId Id of display to move root task to.
|
||||
* @param onTop Indicates whether container should be place on top or on bottom.
|
||||
* @param rootTaskId Id of root task to move.
|
||||
* @param displayId Id of display to move root task to.
|
||||
* @param onTop Indicates whether container should be place on top or on bottom.
|
||||
*/
|
||||
void moveRootTaskToDisplay(int rootTaskId, int displayId, boolean onTop) {
|
||||
final DisplayContent displayContent = getDisplayContentOrCreate(displayId);
|
||||
@@ -2178,7 +2179,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
||||
final ActivityRecord oldTopActivity = task.getTopMostActivity();
|
||||
if (oldTopActivity != null && oldTopActivity.isState(STOPPED)
|
||||
&& task.getDisplayContent().mAppTransition.containsTransitRequest(
|
||||
TRANSIT_TO_BACK)) {
|
||||
TRANSIT_TO_BACK)) {
|
||||
task.getDisplayContent().mClosingApps.add(oldTopActivity);
|
||||
oldTopActivity.mRequestForceTransition = true;
|
||||
}
|
||||
@@ -2673,13 +2674,28 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
||||
}
|
||||
mSleepTokens.remove(token.mHashKey);
|
||||
final DisplayContent display = getDisplayContent(token.mDisplayId);
|
||||
if (display != null) {
|
||||
display.mAllSleepTokens.remove(token);
|
||||
if (display.mAllSleepTokens.isEmpty()) {
|
||||
mService.updateSleepIfNeededLocked();
|
||||
if (token.mTag.equals(DISPLAY_OFF_SLEEP_TOKEN_TAG)) {
|
||||
display.mSkipAppTransitionAnimation = true;
|
||||
}
|
||||
if (display == null) {
|
||||
Slog.d(TAG, "Remove sleep token for non-existing display: " + token + " from "
|
||||
+ Debug.getCallers(6));
|
||||
return;
|
||||
}
|
||||
|
||||
display.mAllSleepTokens.remove(token);
|
||||
if (display.mAllSleepTokens.isEmpty()) {
|
||||
mService.updateSleepIfNeededLocked();
|
||||
// Assuming no lock screen is set and a user launches an activity, turns off the screen
|
||||
// and turn on the screen again, then the launched activity should be displayed on the
|
||||
// screen without app transition animation. When the screen turns on, both keyguard
|
||||
// sleep token and display off sleep token are removed, but the order is
|
||||
// non-deterministic.
|
||||
// Note: Display#mSkipAppTransitionAnimation will be ignored when keyguard related
|
||||
// transition exists, so this affects only when no lock screen is set. Otherwise
|
||||
// keyguard going away animation will be played.
|
||||
// See also AppTransitionController#getTransitCompatType for more details.
|
||||
if ((!mTaskSupervisor.getKeyguardController().isDisplayOccluded(display.mDisplayId)
|
||||
&& token.mTag.equals(KEYGUARD_SLEEP_TOKEN_TAG))
|
||||
|| token.mTag.equals(DISPLAY_OFF_SLEEP_TOKEN_TAG)) {
|
||||
display.mSkipAppTransitionAnimation = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user