Merge "setTurnScreenOn can only used as wakeup" into sc-v2-dev

This commit is contained in:
Wei Sheng Shih
2021-10-12 03:49:24 +00:00
committed by Android (Google) Code Review
2 changed files with 8 additions and 36 deletions

View File

@@ -77,7 +77,6 @@ import android.os.IBinder;
import android.os.Looper; import android.os.Looper;
import android.os.Parcelable; import android.os.Parcelable;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.Process; import android.os.Process;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager.ServiceNotFoundException; import android.os.ServiceManager.ServiceNotFoundException;
@@ -8804,9 +8803,7 @@ public class Activity extends ContextThemeWrapper
* the activity is visible after the screen is turned on when the lockscreen is up. In addition, * 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 * if this flag is set and the activity calls {@link
* KeyguardManager#requestDismissKeyguard(Activity, KeyguardManager.KeyguardDismissCallback)} * KeyguardManager#requestDismissKeyguard(Activity, KeyguardManager.KeyguardDismissCallback)}
* the screen will turn on. If the screen is off and device is not secured, this flag can turn * the screen will turn on.
* screen on and dismiss keyguard to make this activity visible and resume, which can be used to
* replace {@link PowerManager#ACQUIRE_CAUSES_WAKEUP}
* *
* @param turnScreenOn {@code true} to turn on the screen; {@code false} otherwise. * @param turnScreenOn {@code true} to turn on the screen; {@code false} otherwise.
* *

View File

@@ -194,8 +194,7 @@ class KeyguardController {
if (keyguardChanged) { if (keyguardChanged) {
// Irrelevant to AOD. // Irrelevant to AOD.
dismissMultiWindowModeForTaskIfNeeded(null /* currentTaskControllsingOcclusion */, dismissMultiWindowModeForTaskIfNeeded(null /* currentTaskControllsingOcclusion */);
false /* turningScreenOn */);
mKeyguardGoingAway = false; mKeyguardGoingAway = false;
if (keyguardShowing) { if (keyguardShowing) {
mDismissalRequested = false; mDismissalRequested = false;
@@ -396,6 +395,8 @@ class KeyguardController {
mService.continueWindowLayout(); mService.continueWindowLayout();
} }
} }
dismissMultiWindowModeForTaskIfNeeded(topActivity != null
? topActivity.getRootTask() : null);
} }
/** /**
@@ -421,21 +422,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) { boolean isDisplayOccluded(int displayId) {
return getDisplayState(displayId).mOccluded; return getDisplayState(displayId).mOccluded;
} }
@@ -449,11 +435,9 @@ class KeyguardController {
} }
private void dismissMultiWindowModeForTaskIfNeeded( private void dismissMultiWindowModeForTaskIfNeeded(
@Nullable Task currentTaskControllingOcclusion, boolean turningScreenOn) { @Nullable Task currentTaskControllingOcclusion) {
// If turningScreenOn is true, it means that the visibility state has changed from
// currentTaskControllingOcclusion and we should update windowing mode.
// TODO(b/113840485): Handle docked stack for individual display. // TODO(b/113840485): Handle docked stack for individual display.
if (!turningScreenOn && (!mKeyguardShowing || !isDisplayOccluded(DEFAULT_DISPLAY))) { if (!mKeyguardShowing || !isDisplayOccluded(DEFAULT_DISPLAY)) {
return; return;
} }
@@ -592,26 +576,17 @@ class KeyguardController {
&& controller.mWindowManager.isKeyguardSecure( && controller.mWindowManager.isKeyguardSecure(
controller.mService.getCurrentUserId()); controller.mService.getCurrentUserId());
boolean occludingChange = false;
boolean turningScreenOn = false;
if (mTopTurnScreenOnActivity != lastTurnScreenOnActivity if (mTopTurnScreenOnActivity != lastTurnScreenOnActivity
&& mTopTurnScreenOnActivity != null && mTopTurnScreenOnActivity != null
&& !mService.mWindowManager.mPowerManager.isInteractive() && !mService.mWindowManager.mPowerManager.isInteractive()
&& (mRequestDismissKeyguard || occludedByActivity && (mRequestDismissKeyguard || occludedByActivity)) {
|| controller.canDismissKeyguard())) { controller.mTaskSupervisor.wakeUp("handleTurnScreenOn");
turningScreenOn = true;
controller.handleTurnScreenOn(mDisplayId);
mTopTurnScreenOnActivity.setCurrentLaunchCanTurnScreenOn(false); mTopTurnScreenOnActivity.setCurrentLaunchCanTurnScreenOn(false);
} }
if (lastOccluded != mOccluded) { if (lastOccluded != mOccluded) {
occludingChange = true;
controller.handleOccludedChanged(mDisplayId, mTopOccludesActivity); controller.handleOccludedChanged(mDisplayId, mTopOccludesActivity);
} }
if (occludingChange || turningScreenOn) {
controller.dismissMultiWindowModeForTaskIfNeeded(task, turningScreenOn);
}
} }
/** /**