Merge "Do not consider finishing dream activity as occluded" into sc-dev

This commit is contained in:
Riddle Hsu
2021-03-09 12:09:00 +00:00
committed by Android (Google) Code Review

View File

@@ -16,6 +16,7 @@
package com.android.server.wm; package com.android.server.wm;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.DEFAULT_DISPLAY;
@@ -524,20 +525,18 @@ class KeyguardController {
boolean occludedByActivity = false; boolean occludedByActivity = false;
final Task task = getRootTaskForControllingOccluding(display); final Task task = getRootTaskForControllingOccluding(display);
if (task != null) { final ActivityRecord top = task != null ? task.getTopNonFinishingActivity() : null;
final ActivityRecord r = task.getTopNonFinishingActivity(); if (top != null) {
if (r != null) { if (top.containsDismissKeyguardWindow()) {
final boolean showWhenLocked = r.canShowWhenLocked(); mDismissingKeyguardActivity = top;
if (r.containsDismissKeyguardWindow()) {
mDismissingKeyguardActivity = r;
} }
if (r.getTurnScreenOnFlag() if (top.getTurnScreenOnFlag() && top.currentLaunchCanTurnScreenOn()) {
&& r.currentLaunchCanTurnScreenOn()) { mTopTurnScreenOnActivity = top;
mTopTurnScreenOnActivity = r;
} }
final boolean showWhenLocked = top.canShowWhenLocked();
if (showWhenLocked) { if (showWhenLocked) {
mTopOccludesActivity = r; mTopOccludesActivity = top;
} }
// Only the top activity may control occluded, as we can't occlude the Keyguard // Only the top activity may control occluded, as we can't occlude the Keyguard
@@ -547,17 +546,15 @@ class KeyguardController {
&& controller.canShowWhileOccluded( && controller.canShowWhileOccluded(
true /* dismissKeyguard */, false /* showWhenLocked */)); true /* dismissKeyguard */, false /* showWhenLocked */));
// FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD only apply for secondary display. // FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD only apply for secondary display.
if (mDisplayId != DEFAULT_DISPLAY && task.mDisplayContent != null) { if (mDisplayId != DEFAULT_DISPLAY) {
occludedByActivity |= occludedByActivity |= display.canShowWithInsecureKeyguard()
task.mDisplayContent.canShowWithInsecureKeyguard()
&& controller.canDismissKeyguard(); && controller.canDismissKeyguard();
} }
} }
}
// TODO(b/123372519): isShowingDream can only works on default display. final boolean dreaming = display.getDisplayPolicy().isShowingDreamLw() && (top != null
mOccluded = occludedByActivity || (mDisplayId == DEFAULT_DISPLAY && top.getActivityType() == ACTIVITY_TYPE_DREAM);
&& mService.mRootWindowContainer.getDefaultDisplay() mOccluded = dreaming || occludedByActivity;
.getDisplayPolicy().isShowingDreamLw());
mRequestDismissKeyguard = lastDismissKeyguardActivity != mDismissingKeyguardActivity mRequestDismissKeyguard = lastDismissKeyguardActivity != mDismissingKeyguardActivity
&& !mOccluded && !mOccluded
&& mDismissingKeyguardActivity != null && mDismissingKeyguardActivity != null