Merge "setTurnScreenOn can only used as wakeup" am: 385935d07f
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1884170 Change-Id: I330aebdfde7eaf349aaf4c4c6ee8adb0be50e212
This commit is contained in:
@@ -77,7 +77,6 @@ import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.os.Parcelable;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.PowerManager;
|
||||
import android.os.Process;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager.ServiceNotFoundException;
|
||||
@@ -8788,9 +8787,7 @@ public class Activity extends ContextThemeWrapper
|
||||
* the activity is visible after the screen is turned on when the lockscreen is up. In addition,
|
||||
* if this flag is set and the activity calls {@link
|
||||
* KeyguardManager#requestDismissKeyguard(Activity, KeyguardManager.KeyguardDismissCallback)}
|
||||
* the screen will turn on. If the screen is off and device is not secured, this flag can turn
|
||||
* screen on and dismiss keyguard to make this activity visible and resume, which can be used to
|
||||
* replace {@link PowerManager#ACQUIRE_CAUSES_WAKEUP}
|
||||
* the screen will turn on.
|
||||
*
|
||||
* @param turnScreenOn {@code true} to turn on the screen; {@code false} otherwise.
|
||||
*
|
||||
|
||||
@@ -190,8 +190,7 @@ class KeyguardController {
|
||||
|
||||
if (keyguardChanged) {
|
||||
// Irrelevant to AOD.
|
||||
dismissMultiWindowModeForTaskIfNeeded(null /* currentTaskControllsingOcclusion */,
|
||||
false /* turningScreenOn */);
|
||||
dismissMultiWindowModeForTaskIfNeeded(null /* currentTaskControllsingOcclusion */);
|
||||
mKeyguardGoingAway = false;
|
||||
if (keyguardShowing) {
|
||||
mDismissalRequested = false;
|
||||
@@ -385,6 +384,8 @@ class KeyguardController {
|
||||
mService.continueWindowLayout();
|
||||
}
|
||||
}
|
||||
dismissMultiWindowModeForTaskIfNeeded(topActivity != null
|
||||
? topActivity.getRootTask() : null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -410,21 +411,6 @@ class KeyguardController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when somebody wants to turn screen on.
|
||||
*/
|
||||
private void handleTurnScreenOn(int displayId) {
|
||||
if (displayId != DEFAULT_DISPLAY) {
|
||||
return;
|
||||
}
|
||||
|
||||
mTaskSupervisor.wakeUp("handleTurnScreenOn");
|
||||
if (mKeyguardShowing && canDismissKeyguard()) {
|
||||
mWindowManager.dismissKeyguard(null /* callback */, null /* message */);
|
||||
mDismissalRequested = true;
|
||||
}
|
||||
}
|
||||
|
||||
boolean isDisplayOccluded(int displayId) {
|
||||
return getDisplayState(displayId).mOccluded;
|
||||
}
|
||||
@@ -438,11 +424,9 @@ class KeyguardController {
|
||||
}
|
||||
|
||||
private void dismissMultiWindowModeForTaskIfNeeded(
|
||||
@Nullable Task currentTaskControllingOcclusion, boolean turningScreenOn) {
|
||||
// If turningScreenOn is true, it means that the visibility state has changed from
|
||||
// currentTaskControllingOcclusion and we should update windowing mode.
|
||||
@Nullable Task currentTaskControllingOcclusion) {
|
||||
// TODO(b/113840485): Handle docked stack for individual display.
|
||||
if (!turningScreenOn && (!mKeyguardShowing || !isDisplayOccluded(DEFAULT_DISPLAY))) {
|
||||
if (!mKeyguardShowing || !isDisplayOccluded(DEFAULT_DISPLAY)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -581,26 +565,17 @@ class KeyguardController {
|
||||
&& controller.mWindowManager.isKeyguardSecure(
|
||||
controller.mService.getCurrentUserId());
|
||||
|
||||
boolean occludingChange = false;
|
||||
boolean turningScreenOn = false;
|
||||
if (mTopTurnScreenOnActivity != lastTurnScreenOnActivity
|
||||
&& mTopTurnScreenOnActivity != null
|
||||
&& !mService.mWindowManager.mPowerManager.isInteractive()
|
||||
&& (mRequestDismissKeyguard || occludedByActivity
|
||||
|| controller.canDismissKeyguard())) {
|
||||
turningScreenOn = true;
|
||||
controller.handleTurnScreenOn(mDisplayId);
|
||||
&& (mRequestDismissKeyguard || occludedByActivity)) {
|
||||
controller.mTaskSupervisor.wakeUp("handleTurnScreenOn");
|
||||
mTopTurnScreenOnActivity.setCurrentLaunchCanTurnScreenOn(false);
|
||||
}
|
||||
|
||||
if (lastOccluded != mOccluded) {
|
||||
occludingChange = true;
|
||||
controller.handleOccludedChanged(mDisplayId, mTopOccludesActivity);
|
||||
}
|
||||
|
||||
if (occludingChange || turningScreenOn) {
|
||||
controller.dismissMultiWindowModeForTaskIfNeeded(task, turningScreenOn);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user