Don't show the embedded activities if visible needed activity without showWhenLocked
While the host activity and the embedded activity are displayed
side-by-side. Only the activity with showWhenLocked flag is shown
when the lock-screen is displayed. This CL updates the logic for
embedded activities policy if the visible needed activity without
showWhenLocked flags. Don’t display the embedded activities while
the lock-screen is shown.
Bug: 197298936
Test: atest TaskFragmentOrganizerTest
TaskFragmentOrganizerPolicyTest
SplitActivityLifecycleTest
Change-Id: I8e318c4b47f38ff3daf0713ab70cd980e7928000
This commit is contained in:
@@ -4151,18 +4151,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
|
||||
|
||||
Reference in New Issue
Block a user