Loading services/core/java/com/android/server/wm/ActivityRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -201,7 +201,7 @@ import static com.android.server.wm.Task.ActivityState.RESUMED; import static com.android.server.wm.Task.ActivityState.STARTED; import static com.android.server.wm.Task.ActivityState.STOPPED; import static com.android.server.wm.Task.ActivityState.STOPPING; import static com.android.server.wm.Task.TASK_VISIBILITY_VISIBLE; import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_VISIBLE; import static com.android.server.wm.TaskPersister.DEBUG; import static com.android.server.wm.TaskPersister.IMAGE_EXTENSION; import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN; Loading Loading @@ -5228,7 +5228,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A */ private boolean shouldBeResumed(ActivityRecord activeActivity) { return shouldMakeActive(activeActivity) && isFocusable() && getTask().getVisibility(activeActivity) == TASK_VISIBILITY_VISIBLE && getTask().getVisibility(activeActivity) == TASK_FRAGMENT_VISIBILITY_VISIBLE && canResumeByCompat(); } Loading services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +18 −16 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import android.util.Slog; /** Helper class to ensure activities are in the right visible state for a container. */ class EnsureActivitiesVisibleHelper { private final Task mTask; private final TaskFragment mTaskFragment; private ActivityRecord mTop; private ActivityRecord mStarting; private boolean mAboveTop; Loading @@ -34,12 +34,12 @@ class EnsureActivitiesVisibleHelper { private boolean mPreserveWindows; private boolean mNotifyClients; EnsureActivitiesVisibleHelper(Task container) { mTask = container; EnsureActivitiesVisibleHelper(TaskFragment container) { mTaskFragment = container; } /** * Update all attributes except {@link mTask} to use in subsequent calculations. * Update all attributes except {@link mTaskFragment} to use in subsequent calculations. * * @param starting The activity that is being started * @param configChanges Parts of the configuration that changed for this activity for evaluating Loading @@ -51,11 +51,11 @@ class EnsureActivitiesVisibleHelper { void reset(ActivityRecord starting, int configChanges, boolean preserveWindows, boolean notifyClients) { mStarting = starting; mTop = mTask.topRunningActivity(); mTop = mTaskFragment.topRunningActivity(); // If the top activity is not fullscreen, then we need to make sure any activities under it // are now visible. mAboveTop = mTop != null; mContainerShouldBeVisible = mTask.shouldBeVisible(mStarting); mContainerShouldBeVisible = mTaskFragment.shouldBeVisible(mStarting); mBehindFullscreenActivity = !mContainerShouldBeVisible; mConfigChanges = configChanges; mPreserveWindows = preserveWindows; Loading Loading @@ -85,22 +85,23 @@ class EnsureActivitiesVisibleHelper { Slog.v(TAG_VISIBILITY, "ensureActivitiesVisible behind " + mTop + " configChanges=0x" + Integer.toHexString(configChanges)); } if (mTop != null) { mTask.checkTranslucentActivityWaiting(mTop); if (mTop != null && mTaskFragment.asTask() != null) { // TODO(14709632): Check if this needed to be implemented in TaskFragment. mTaskFragment.asTask().checkTranslucentActivityWaiting(mTop); } // We should not resume activities that being launched behind because these // activities are actually behind other fullscreen activities, but still required // to be visible (such as performing Recents animation). final boolean resumeTopActivity = mTop != null && !mTop.mLaunchTaskBehind && mTask.isTopActivityFocusable() && (starting == null || !starting.isDescendantOf(mTask)); && mTaskFragment.isTopActivityFocusable() && (starting == null || !starting.isDescendantOf(mTaskFragment)); mTask.forAllActivities(a -> { mTaskFragment.forAllActivities(a -> { setActivityVisibilityState(a, starting, resumeTopActivity); }); if (mTask.mAtmService.getTransitionController().getTransitionPlayer() != null) { mTask.getDisplayContent().mWallpaperController.adjustWallpaperWindows(); if (mTaskFragment.mAtmService.getTransitionController().getTransitionPlayer() != null) { mTaskFragment.getDisplayContent().mWallpaperController.adjustWallpaperWindows(); } } Loading Loading @@ -179,9 +180,9 @@ class EnsureActivitiesVisibleHelper { r.makeInvisible(); } if (!mBehindFullscreenActivity && mTask.isActivityTypeHome() && r.isRootOfTask()) { if (!mBehindFullscreenActivity && mTaskFragment.isActivityTypeHome() && r.isRootOfTask()) { if (DEBUG_VISIBILITY) { Slog.v(TAG_VISIBILITY, "Home task: at " + mTask Slog.v(TAG_VISIBILITY, "Home task: at " + mTaskFragment + " containerShouldBeVisible=" + mContainerShouldBeVisible + " behindFullscreenActivity=" + mBehindFullscreenActivity); } Loading Loading @@ -219,7 +220,8 @@ class EnsureActivitiesVisibleHelper { r.setVisibility(true); } if (r != starting) { mTask.mTaskSupervisor.startSpecificActivity(r, andResume, true /* checkConfig */); mTaskFragment.mTaskSupervisor.startSpecificActivity(r, andResume, true /* checkConfig */); } } } services/core/java/com/android/server/wm/RootWindowContainer.java +3 −2 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ import static com.android.server.wm.Task.ActivityState.STOPPED; import static com.android.server.wm.Task.ActivityState.STOPPING; import static com.android.server.wm.Task.REPARENT_LEAVE_ROOT_TASK_IN_PLACE; import static com.android.server.wm.Task.REPARENT_MOVE_ROOT_TASK_TO_FRONT; import static com.android.server.wm.Task.TASK_VISIBILITY_INVISIBLE; import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_INVISIBLE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WALLPAPER_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_TRACE; Loading Loading @@ -1911,7 +1911,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> return; } if (rootTask.getVisibility(null /*starting*/) == TASK_VISIBILITY_INVISIBLE) { if (rootTask.getVisibility(null /* starting */) == TASK_FRAGMENT_VISIBILITY_INVISIBLE) { return; } Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -201,7 +201,7 @@ import static com.android.server.wm.Task.ActivityState.RESUMED; import static com.android.server.wm.Task.ActivityState.STARTED; import static com.android.server.wm.Task.ActivityState.STOPPED; import static com.android.server.wm.Task.ActivityState.STOPPING; import static com.android.server.wm.Task.TASK_VISIBILITY_VISIBLE; import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_VISIBLE; import static com.android.server.wm.TaskPersister.DEBUG; import static com.android.server.wm.TaskPersister.IMAGE_EXTENSION; import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN; Loading Loading @@ -5228,7 +5228,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A */ private boolean shouldBeResumed(ActivityRecord activeActivity) { return shouldMakeActive(activeActivity) && isFocusable() && getTask().getVisibility(activeActivity) == TASK_VISIBILITY_VISIBLE && getTask().getVisibility(activeActivity) == TASK_FRAGMENT_VISIBILITY_VISIBLE && canResumeByCompat(); } Loading
services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +18 −16 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import android.util.Slog; /** Helper class to ensure activities are in the right visible state for a container. */ class EnsureActivitiesVisibleHelper { private final Task mTask; private final TaskFragment mTaskFragment; private ActivityRecord mTop; private ActivityRecord mStarting; private boolean mAboveTop; Loading @@ -34,12 +34,12 @@ class EnsureActivitiesVisibleHelper { private boolean mPreserveWindows; private boolean mNotifyClients; EnsureActivitiesVisibleHelper(Task container) { mTask = container; EnsureActivitiesVisibleHelper(TaskFragment container) { mTaskFragment = container; } /** * Update all attributes except {@link mTask} to use in subsequent calculations. * Update all attributes except {@link mTaskFragment} to use in subsequent calculations. * * @param starting The activity that is being started * @param configChanges Parts of the configuration that changed for this activity for evaluating Loading @@ -51,11 +51,11 @@ class EnsureActivitiesVisibleHelper { void reset(ActivityRecord starting, int configChanges, boolean preserveWindows, boolean notifyClients) { mStarting = starting; mTop = mTask.topRunningActivity(); mTop = mTaskFragment.topRunningActivity(); // If the top activity is not fullscreen, then we need to make sure any activities under it // are now visible. mAboveTop = mTop != null; mContainerShouldBeVisible = mTask.shouldBeVisible(mStarting); mContainerShouldBeVisible = mTaskFragment.shouldBeVisible(mStarting); mBehindFullscreenActivity = !mContainerShouldBeVisible; mConfigChanges = configChanges; mPreserveWindows = preserveWindows; Loading Loading @@ -85,22 +85,23 @@ class EnsureActivitiesVisibleHelper { Slog.v(TAG_VISIBILITY, "ensureActivitiesVisible behind " + mTop + " configChanges=0x" + Integer.toHexString(configChanges)); } if (mTop != null) { mTask.checkTranslucentActivityWaiting(mTop); if (mTop != null && mTaskFragment.asTask() != null) { // TODO(14709632): Check if this needed to be implemented in TaskFragment. mTaskFragment.asTask().checkTranslucentActivityWaiting(mTop); } // We should not resume activities that being launched behind because these // activities are actually behind other fullscreen activities, but still required // to be visible (such as performing Recents animation). final boolean resumeTopActivity = mTop != null && !mTop.mLaunchTaskBehind && mTask.isTopActivityFocusable() && (starting == null || !starting.isDescendantOf(mTask)); && mTaskFragment.isTopActivityFocusable() && (starting == null || !starting.isDescendantOf(mTaskFragment)); mTask.forAllActivities(a -> { mTaskFragment.forAllActivities(a -> { setActivityVisibilityState(a, starting, resumeTopActivity); }); if (mTask.mAtmService.getTransitionController().getTransitionPlayer() != null) { mTask.getDisplayContent().mWallpaperController.adjustWallpaperWindows(); if (mTaskFragment.mAtmService.getTransitionController().getTransitionPlayer() != null) { mTaskFragment.getDisplayContent().mWallpaperController.adjustWallpaperWindows(); } } Loading Loading @@ -179,9 +180,9 @@ class EnsureActivitiesVisibleHelper { r.makeInvisible(); } if (!mBehindFullscreenActivity && mTask.isActivityTypeHome() && r.isRootOfTask()) { if (!mBehindFullscreenActivity && mTaskFragment.isActivityTypeHome() && r.isRootOfTask()) { if (DEBUG_VISIBILITY) { Slog.v(TAG_VISIBILITY, "Home task: at " + mTask Slog.v(TAG_VISIBILITY, "Home task: at " + mTaskFragment + " containerShouldBeVisible=" + mContainerShouldBeVisible + " behindFullscreenActivity=" + mBehindFullscreenActivity); } Loading Loading @@ -219,7 +220,8 @@ class EnsureActivitiesVisibleHelper { r.setVisibility(true); } if (r != starting) { mTask.mTaskSupervisor.startSpecificActivity(r, andResume, true /* checkConfig */); mTaskFragment.mTaskSupervisor.startSpecificActivity(r, andResume, true /* checkConfig */); } } }
services/core/java/com/android/server/wm/RootWindowContainer.java +3 −2 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ import static com.android.server.wm.Task.ActivityState.STOPPED; import static com.android.server.wm.Task.ActivityState.STOPPING; import static com.android.server.wm.Task.REPARENT_LEAVE_ROOT_TASK_IN_PLACE; import static com.android.server.wm.Task.REPARENT_MOVE_ROOT_TASK_TO_FRONT; import static com.android.server.wm.Task.TASK_VISIBILITY_INVISIBLE; import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_INVISIBLE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WALLPAPER_LIGHT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_TRACE; Loading Loading @@ -1911,7 +1911,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> return; } if (rootTask.getVisibility(null /*starting*/) == TASK_VISIBILITY_INVISIBLE) { if (rootTask.getVisibility(null /* starting */) == TASK_FRAGMENT_VISIBILITY_INVISIBLE) { return; } Loading