Merge "Don't show the embedded activities if visible needed activity without showWhenLocked" into sc-v2-dev

This commit is contained in:
TreeHugger Robot
2021-10-26 23:26:52 +00:00
committed by Android (Google) Code Review

View File

@@ -4157,18 +4157,39 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
* conditions a) above.
* Multi-windowing mode will be exited if {@code true} is returned.
*/
boolean canShowWhenLocked() {
if (!inPinnedWindowingMode() && (mShowWhenLocked || containsShowWhenLockedWindow())) {
private static boolean canShowWhenLocked(ActivityRecord r) {
if (r == null || r.getTaskFragment() == null) {
return false;
}
if (!r.inPinnedWindowingMode() && (r.mShowWhenLocked || r.containsShowWhenLockedWindow())) {
return true;
} else if (mInheritShownWhenLocked) {
final ActivityRecord r = task.getActivityBelow(this);
return r != null && !r.inPinnedWindowingMode() && (r.mShowWhenLocked
|| r.containsShowWhenLockedWindow());
} else if (r.mInheritShownWhenLocked) {
final ActivityRecord activity = r.getTaskFragment().getActivityBelow(r);
return activity != null && !activity.inPinnedWindowingMode()
&& (activity.mShowWhenLocked || activity.containsShowWhenLockedWindow());
} else {
return false;
}
}
/**
* Determines if the activity can show while lock-screen is displayed. System displays
* activities while lock-screen is displayed only if all activities
* {@link #canShowWhenLocked(ActivityRecord)}.
* @see #canShowWhenLocked(ActivityRecord)
*/
boolean canShowWhenLocked() {
final TaskFragment taskFragment = getTaskFragment();
if (taskFragment != null && taskFragment.getAdjacentTaskFragment() != null
&& taskFragment.isEmbedded()) {
final TaskFragment adjacentTaskFragment = taskFragment.getAdjacentTaskFragment();
final ActivityRecord r = adjacentTaskFragment.getTopNonFinishingActivity();
return canShowWhenLocked(this) && canShowWhenLocked(r);
} else {
return canShowWhenLocked(this);
}
}
/**
* @return Whether we are allowed to show non-starting windows at the moment. We disallow
* showing windows during transitions in case we have windows that have wide-color-gamut