Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3796abb1 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add desktop immersive flag to dev options" into main

parents 24969842 da89b4de
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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),
+3 −3
Original line number Diff line number Diff line
@@ -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)
    }
@@ -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
@@ -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).
+1 −2
Original line number Diff line number Diff line
@@ -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
@@ -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)
+3 −3
Original line number Diff line number Diff line
@@ -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)
    }

@@ -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
@@ -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 (
+5 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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.
@@ -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));
        }
@@ -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));
        }
@@ -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