diff --git a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java index c0dacf1daa..74376c83d4 100644 --- a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java +++ b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java @@ -19,6 +19,7 @@ import static android.view.View.VISIBLE; import static com.android.launcher3.LauncherState.BACKGROUND_APP; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; +import static com.android.window.flags.Flags.enableDesktopWindowingWallpaperActivity; import android.os.Debug; import android.os.SystemProperties; @@ -141,7 +142,8 @@ public class DesktopVisibilityController { final boolean isVisible = visibleTasksCount > 0; mVisibleDesktopTasksCount = visibleTasksCount; - if (wasVisible != isVisible) { + if (!enableDesktopWindowingWallpaperActivity() && wasVisible != isVisible) { + // TODO: b/333533253 - Remove after flag rollout if (mVisibleDesktopTasksCount > 0) { setLauncherViewsVisibility(View.INVISIBLE); if (!mInOverviewState) { @@ -178,6 +180,10 @@ public class DesktopVisibilityController { } if (overviewStateEnabled != mInOverviewState) { mInOverviewState = overviewStateEnabled; + if (enableDesktopWindowingWallpaperActivity()) { + return; + } + // TODO: b/333533253 - Clean up after flag rollout if (mInOverviewState) { setLauncherViewsVisibility(View.VISIBLE); markLauncherResumed(); @@ -190,6 +196,9 @@ public class DesktopVisibilityController { } } + /** + * TODO: b/333533253 - Remove after flag rollout + */ private void setBackgroundStateEnabled(boolean backgroundStateEnabled) { if (DEBUG) { Log.d(TAG, "setBackgroundStateEnabled: enabled=" + backgroundStateEnabled @@ -210,6 +219,8 @@ public class DesktopVisibilityController { /** * Whether recents gesture is currently in progress. + * + * TODO: b/333533253 - Remove after flag rollout */ public boolean isRecentsGestureInProgress() { return mGestureInProgress; @@ -217,6 +228,8 @@ public class DesktopVisibilityController { /** * Notify controller that recents gesture has started. + * + * TODO: b/333533253 - Remove after flag rollout */ public void setRecentsGestureStart() { if (DEBUG) { @@ -228,6 +241,8 @@ public class DesktopVisibilityController { /** * Notify controller that recents gesture finished with the given * {@link com.android.quickstep.GestureState.GestureEndTarget} + * + * TODO: b/333533253 - Remove after flag rollout */ public void setRecentsGestureEnd(@Nullable GestureState.GestureEndTarget endTarget) { if (DEBUG) { @@ -241,6 +256,9 @@ public class DesktopVisibilityController { } } + /** + * TODO: b/333533253 - Remove after flag rollout + */ private void setRecentsGestureInProgress(boolean gestureInProgress) { if (gestureInProgress != mGestureInProgress) { mGestureInProgress = gestureInProgress; @@ -256,7 +274,13 @@ public class DesktopVisibilityController { } } + /** + * TODO: b/333533253 - Remove after flag rollout + */ private void setLauncherViewsVisibility(int visibility) { + if (enableDesktopWindowingWallpaperActivity()) { + return; + } if (DEBUG) { Log.d(TAG, "setLauncherViewsVisibility: visibility=" + visibility + " " + Debug.getCaller()); @@ -275,7 +299,13 @@ public class DesktopVisibilityController { } } + /** + * TODO: b/333533253 - Remove after flag rollout + */ private void markLauncherPaused() { + if (enableDesktopWindowingWallpaperActivity()) { + return; + } if (DEBUG) { Log.d(TAG, "markLauncherPaused " + Debug.getCaller()); } @@ -286,7 +316,13 @@ public class DesktopVisibilityController { } } + /** + * TODO: b/333533253 - Remove after flag rollout + */ private void markLauncherResumed() { + if (enableDesktopWindowingWallpaperActivity()) { + return; + } if (DEBUG) { Log.d(TAG, "markLauncherResumed " + Debug.getCaller()); } diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 03c28053c1..07e9d00147 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -21,6 +21,7 @@ import static com.android.launcher3.statemanager.BaseState.FLAG_NON_INTERACTIVE; import static com.android.launcher3.taskbar.TaskbarEduTooltipControllerKt.TOOLTIP_STEP_FEATURES; import static com.android.launcher3.taskbar.TaskbarLauncherStateController.FLAG_VISIBLE; import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS; +import static com.android.window.flags.Flags.enableDesktopWindowingWallpaperActivity; import android.animation.Animator; import android.animation.AnimatorSet; @@ -218,9 +219,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController { DesktopVisibilityController desktopController = LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); - final boolean onDesktop = - desktopController != null && desktopController.areDesktopTasksVisible(); - if (onDesktop) { + if (!enableDesktopWindowingWallpaperActivity() + && desktopController != null + && desktopController.areDesktopTasksVisible()) { + // TODO: b/333533253 - Remove after flag rollout isVisible = false; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 17dcacea3c..ee21eacb8c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -837,6 +837,7 @@ public class TaskbarLauncherStateController { appendFlag(result, flags, FLAG_LAUNCHER_WAS_ACTIVE_WHILE_AWAKE, "was_active_while_awake"); appendFlag(result, flags, FLAG_DEVICE_LOCKED, "device_locked"); + appendFlag(result, flags, FLAG_TASKBAR_HIDDEN, "taskbar_hidden"); return result.toString(); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index 15be8e7415..41c0586208 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -1165,6 +1165,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba appendFlag(sj, flags, FLAG_STASHED_IN_APP_AUTO, "FLAG_STASHED_IN_APP_AUTO"); appendFlag(sj, flags, FLAG_STASHED_SYSUI, "FLAG_STASHED_SYSUI"); appendFlag(sj, flags, FLAG_STASHED_DEVICE_LOCKED, "FLAG_STASHED_DEVICE_LOCKED"); + appendFlag(sj, flags, FLAG_IN_OVERVIEW, "FLAG_IN_OVERVIEW"); return sj.toString(); } diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 9125254697..543fd02faa 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -64,6 +64,7 @@ import static com.android.quickstep.util.AnimUtils.completeRunnableListCallback; import static com.android.quickstep.util.SplitAnimationTimings.TABLET_HOME_TO_SPLIT; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY; import static com.android.window.flags.Flags.enableDesktopWindowingMode; +import static com.android.window.flags.Flags.enableDesktopWindowingWallpaperActivity; import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_50_50; import android.animation.Animator; @@ -965,12 +966,12 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer @Override public void setResumed() { - if (mDesktopVisibilityController != null + if (!enableDesktopWindowingWallpaperActivity() + && mDesktopVisibilityController != null && mDesktopVisibilityController.areDesktopTasksVisible() && !mDesktopVisibilityController.isRecentsGestureInProgress()) { // Return early to skip setting activity to appear as resumed - // TODO(b/255649902): shouldn't be needed when we have a separate launcher state - // for desktop that we can use to control other parts of launcher + // TODO: b/333533253 - Remove after flag rollout return; } super.setResumed(); diff --git a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java index 6647057776..a3935ce65a 100644 --- a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java +++ b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java @@ -88,8 +88,11 @@ public class LauncherSwipeHandlerV2 extends final View workspaceView = findWorkspaceView(launchCookies, mRecentsView.getRunningTaskView()); - boolean canUseWorkspaceView = workspaceView != null && workspaceView.isAttachedToWindow() - && workspaceView.getHeight() > 0; + boolean canUseWorkspaceView = workspaceView != null + && workspaceView.isAttachedToWindow() + && workspaceView.getHeight() > 0 + && (mContainer.getDesktopVisibilityController() == null + || !mContainer.getDesktopVisibilityController().areDesktopTasksVisible()); mContainer.getRootView().setForceHideBackArrow(true); if (!TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) { diff --git a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java index 7f2adedbca..3dec381b04 100644 --- a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java +++ b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java @@ -222,8 +222,10 @@ public class RemoteTargetGluer { for (int i = 0; i < mRemoteTargetHandles.length; i++) { RemoteAnimationTarget primaryTaskTarget = targets.apps[i]; + List excludeTargets = Arrays.stream(targets.apps) + .filter(target -> target.taskId != primaryTaskTarget.taskId).toList(); mRemoteTargetHandles[i].mTransformParams.setTargetSet( - createRemoteAnimationTargetsForTaskId(targets, primaryTaskTarget.taskId)); + createRemoteAnimationTargetsForTarget(targets, excludeTargets)); mRemoteTargetHandles[i].mTaskViewSimulator.setPreview(primaryTaskTarget, null); } return mRemoteTargetHandles; @@ -289,33 +291,6 @@ public class RemoteTargetGluer { filteredApps, targets.wallpapers, targets.nonApps, targets.targetMode); } - /** - * Ensures that we only animate one specific app target. Includes ancillary targets such as - * home/recents - * - * @param targets remote animation targets to filter - * @param taskId id for a task that we want this remote animation to apply to - * @return {@link RemoteAnimationTargets} where app target only includes the app that has the - * {@code taskId} that was passed in - */ - private RemoteAnimationTargets createRemoteAnimationTargetsForTaskId( - RemoteAnimationTargets targets, int taskId) { - RemoteAnimationTarget[] targetApp = null; - for (RemoteAnimationTarget targetCompat : targets.unfilteredApps) { - if (targetCompat.taskId == taskId) { - targetApp = new RemoteAnimationTarget[]{targetCompat}; - break; - } - } - - if (targetApp == null) { - targetApp = new RemoteAnimationTarget[0]; - } - - return new RemoteAnimationTargets(targetApp, targets.wallpapers, targets.nonApps, - targets.targetMode); - } - /** * The object returned by this is may be modified in * {@link #assignTargetsForSplitScreen(RemoteAnimationTargets)}, specifically the length of the diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java index 06c2aa3804..8d1907ff7d 100644 --- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java +++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java @@ -26,6 +26,7 @@ import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK; import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT; import static com.android.launcher3.LauncherState.SPRING_LOADED; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SPLIT_SELECTION_EXIT_HOME; +import static com.android.window.flags.Flags.enableDesktopWindowingWallpaperActivity; import android.annotation.TargetApi; import android.content.Context; @@ -260,7 +261,8 @@ public class LauncherRecentsView extends RecentsView