Merge "Do not consider finishing dream activity as occluded" into sc-dev
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user