Loading core/java/android/window/DesktopModeFlags.java +1 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ public enum DesktopModeFlags { ENABLE_DESKTOP_WINDOWING_TASK_LIMIT(Flags::enableDesktopWindowingTaskLimit, true), ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY(Flags::enableDesktopWindowingWallpaperActivity, true), ENABLE_FULLY_IMMERSIVE_IN_DESKTOP(Flags::enableFullyImmersiveInDesktop, true), ENABLE_HANDLE_INPUT_FIX(Flags::enableHandleInputFix, true), ENABLE_HOLD_TO_DRAG_APP_HANDLE(Flags::enableHoldToDragAppHandle, true), ENABLE_MINIMIZE_BUTTON(Flags::enableMinimizeButton, true), Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopImmersiveController.kt +3 −3 Original line number Diff line number Diff line Loading @@ -153,7 +153,7 @@ class DesktopImmersiveController( displayId: Int, reason: ExitReason, ) { if (!Flags.enableFullyImmersiveInDesktop()) return if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return val result = exitImmersiveIfApplicable(wct, displayId, excludeTaskId = null, reason) result.asExit()?.runOnTransitionStart?.invoke(transition) } Loading @@ -172,7 +172,7 @@ class DesktopImmersiveController( excludeTaskId: Int? = null, reason: ExitReason, ): ExitResult { if (!Flags.enableFullyImmersiveInDesktop()) return ExitResult.NoExit if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return ExitResult.NoExit val immersiveTask = desktopUserRepositories.current.getTaskInFullImmersiveState(displayId) ?: return ExitResult.NoExit Loading Loading @@ -214,7 +214,7 @@ class DesktopImmersiveController( taskInfo: RunningTaskInfo, reason: ExitReason, ): ExitResult { if (!Flags.enableFullyImmersiveInDesktop()) return ExitResult.NoExit if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return ExitResult.NoExit if (desktopUserRepositories.current.isTaskInFullImmersiveState(taskInfo.taskId)) { // A full immersive task is being minimized, make sure the immersive state is broken // (i.e. resize back to max bounds). Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt +1 −2 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.window.WindowContainerTransaction import androidx.annotation.VisibleForTesting import com.android.internal.jank.InteractionJankMonitor import com.android.internal.protolog.ProtoLog import com.android.window.flags.Flags import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.freeform.FreeformTaskTransitionHandler import com.android.wm.shell.freeform.FreeformTaskTransitionStarter Loading Loading @@ -105,7 +104,7 @@ class DesktopMixedTransitionHandler( exitingImmersiveTask: Int? = null, ): IBinder { if ( !Flags.enableFullyImmersiveInDesktop() && !DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue && !DesktopModeFlags.ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS_BUGFIX.isTrue ) { return transitions.startTransition(transitionType, wct, /* handler= */ null) Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +3 −3 Original line number Diff line number Diff line Loading @@ -1836,7 +1836,7 @@ class DesktopTasksController( /** Whether the given [change] in the [transition] is a known desktop change. */ fun isDesktopChange(transition: IBinder, change: TransitionInfo.Change): Boolean { // Only the immersive controller is currently involved in mixed transitions. return Flags.enableFullyImmersiveInDesktop() && return DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue && desktopImmersiveController.isImmersiveChange(transition, change) } Loading @@ -1847,7 +1847,7 @@ class DesktopTasksController( */ fun shouldPlayDesktopAnimation(info: TransitionRequestInfo): Boolean { // Only immersive mixed transition are currently supported. if (!Flags.enableFullyImmersiveInDesktop()) return false if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return false val triggerTask = info.triggerTask ?: return false if (!isDesktopModeShowing(triggerTask.displayId)) { return false Loading Loading @@ -3060,7 +3060,7 @@ class DesktopTasksController( /** Called when a task's info changes. */ fun onTaskInfoChanged(taskInfo: RunningTaskInfo) { if (!Flags.enableFullyImmersiveInDesktop()) return if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return val inImmersive = taskRepository.isTaskInFullImmersiveState(taskInfo.taskId) val requestingImmersive = taskInfo.requestingImmersive if ( Loading libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java +5 −5 Original line number Diff line number Diff line Loading @@ -21,13 +21,13 @@ import android.content.Context; import android.os.IBinder; import android.view.SurfaceControl; import android.view.WindowManager; import android.window.DesktopModeFlags; import android.window.TransitionInfo; import android.window.WindowContainerToken; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.android.window.flags.Flags; import com.android.wm.shell.desktopmode.DesktopImmersiveController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.transition.FocusTransitionObserver; Loading Loading @@ -85,7 +85,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction startT, @NonNull SurfaceControl.Transaction finishT) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced and the repository // is updated from there **before** the |mWindowDecorViewModel| methods are invoked. // Otherwise window decoration relayout won't run with the immersive state up to date. Loading Loading @@ -191,7 +191,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @Override public void onTransitionStarting(@NonNull IBinder transition) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced. mDesktopImmersiveController.ifPresent(h -> h.onTransitionStarting(transition)); } Loading @@ -199,7 +199,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @Override public void onTransitionMerged(@NonNull IBinder merged, @NonNull IBinder playing) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced. mDesktopImmersiveController.ifPresent(h -> h.onTransitionMerged(merged, playing)); } Loading @@ -224,7 +224,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @Override public void onTransitionFinished(@NonNull IBinder transition, boolean aborted) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced. mDesktopImmersiveController.ifPresent(h -> h.onTransitionFinished(transition, aborted)); } Loading Loading
core/java/android/window/DesktopModeFlags.java +1 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ public enum DesktopModeFlags { ENABLE_DESKTOP_WINDOWING_TASK_LIMIT(Flags::enableDesktopWindowingTaskLimit, true), ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY(Flags::enableDesktopWindowingWallpaperActivity, true), ENABLE_FULLY_IMMERSIVE_IN_DESKTOP(Flags::enableFullyImmersiveInDesktop, true), ENABLE_HANDLE_INPUT_FIX(Flags::enableHandleInputFix, true), ENABLE_HOLD_TO_DRAG_APP_HANDLE(Flags::enableHoldToDragAppHandle, true), ENABLE_MINIMIZE_BUTTON(Flags::enableMinimizeButton, true), Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopImmersiveController.kt +3 −3 Original line number Diff line number Diff line Loading @@ -153,7 +153,7 @@ class DesktopImmersiveController( displayId: Int, reason: ExitReason, ) { if (!Flags.enableFullyImmersiveInDesktop()) return if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return val result = exitImmersiveIfApplicable(wct, displayId, excludeTaskId = null, reason) result.asExit()?.runOnTransitionStart?.invoke(transition) } Loading @@ -172,7 +172,7 @@ class DesktopImmersiveController( excludeTaskId: Int? = null, reason: ExitReason, ): ExitResult { if (!Flags.enableFullyImmersiveInDesktop()) return ExitResult.NoExit if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return ExitResult.NoExit val immersiveTask = desktopUserRepositories.current.getTaskInFullImmersiveState(displayId) ?: return ExitResult.NoExit Loading Loading @@ -214,7 +214,7 @@ class DesktopImmersiveController( taskInfo: RunningTaskInfo, reason: ExitReason, ): ExitResult { if (!Flags.enableFullyImmersiveInDesktop()) return ExitResult.NoExit if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return ExitResult.NoExit if (desktopUserRepositories.current.isTaskInFullImmersiveState(taskInfo.taskId)) { // A full immersive task is being minimized, make sure the immersive state is broken // (i.e. resize back to max bounds). Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt +1 −2 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.window.WindowContainerTransaction import androidx.annotation.VisibleForTesting import com.android.internal.jank.InteractionJankMonitor import com.android.internal.protolog.ProtoLog import com.android.window.flags.Flags import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.freeform.FreeformTaskTransitionHandler import com.android.wm.shell.freeform.FreeformTaskTransitionStarter Loading Loading @@ -105,7 +104,7 @@ class DesktopMixedTransitionHandler( exitingImmersiveTask: Int? = null, ): IBinder { if ( !Flags.enableFullyImmersiveInDesktop() && !DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue && !DesktopModeFlags.ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS_BUGFIX.isTrue ) { return transitions.startTransition(transitionType, wct, /* handler= */ null) Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +3 −3 Original line number Diff line number Diff line Loading @@ -1836,7 +1836,7 @@ class DesktopTasksController( /** Whether the given [change] in the [transition] is a known desktop change. */ fun isDesktopChange(transition: IBinder, change: TransitionInfo.Change): Boolean { // Only the immersive controller is currently involved in mixed transitions. return Flags.enableFullyImmersiveInDesktop() && return DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue && desktopImmersiveController.isImmersiveChange(transition, change) } Loading @@ -1847,7 +1847,7 @@ class DesktopTasksController( */ fun shouldPlayDesktopAnimation(info: TransitionRequestInfo): Boolean { // Only immersive mixed transition are currently supported. if (!Flags.enableFullyImmersiveInDesktop()) return false if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return false val triggerTask = info.triggerTask ?: return false if (!isDesktopModeShowing(triggerTask.displayId)) { return false Loading Loading @@ -3060,7 +3060,7 @@ class DesktopTasksController( /** Called when a task's info changes. */ fun onTaskInfoChanged(taskInfo: RunningTaskInfo) { if (!Flags.enableFullyImmersiveInDesktop()) return if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return val inImmersive = taskRepository.isTaskInFullImmersiveState(taskInfo.taskId) val requestingImmersive = taskInfo.requestingImmersive if ( Loading
libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java +5 −5 Original line number Diff line number Diff line Loading @@ -21,13 +21,13 @@ import android.content.Context; import android.os.IBinder; import android.view.SurfaceControl; import android.view.WindowManager; import android.window.DesktopModeFlags; import android.window.TransitionInfo; import android.window.WindowContainerToken; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.android.window.flags.Flags; import com.android.wm.shell.desktopmode.DesktopImmersiveController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.transition.FocusTransitionObserver; Loading Loading @@ -85,7 +85,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction startT, @NonNull SurfaceControl.Transaction finishT) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced and the repository // is updated from there **before** the |mWindowDecorViewModel| methods are invoked. // Otherwise window decoration relayout won't run with the immersive state up to date. Loading Loading @@ -191,7 +191,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @Override public void onTransitionStarting(@NonNull IBinder transition) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced. mDesktopImmersiveController.ifPresent(h -> h.onTransitionStarting(transition)); } Loading @@ -199,7 +199,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @Override public void onTransitionMerged(@NonNull IBinder merged, @NonNull IBinder playing) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced. mDesktopImmersiveController.ifPresent(h -> h.onTransitionMerged(merged, playing)); } Loading @@ -224,7 +224,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs @Override public void onTransitionFinished(@NonNull IBinder transition, boolean aborted) { if (Flags.enableFullyImmersiveInDesktop()) { if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) { // TODO(b/367268953): Remove when DesktopTaskListener is introduced. mDesktopImmersiveController.ifPresent(h -> h.onTransitionFinished(transition, aborted)); } Loading