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

Commit 7c7e6700 authored by Jorge Gil's avatar Jorge Gil
Browse files

[12/N] Desks: Move multi-desks backend flag usages to dev option

Flag: com.android.window.flags.enable_multiple_desktops_backend
Bug: 362720497
Test: m
Change-Id: I25ed13aa7440b20959ae2a9d851305f1053f60e1
parent 1e340f3c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.hardware.display.DisplayManager;
import android.os.SystemProperties;
import android.view.Display;
import android.view.WindowManager;
import android.window.DesktopExperienceFlags;
import android.window.DesktopModeFlags;

import com.android.internal.R;
@@ -271,7 +272,7 @@ public class DesktopModeStatus {
     * frontend implementations).
     */
    public static boolean enableMultipleDesktops(@NonNull Context context) {
        return Flags.enableMultipleDesktopsBackend()
        return DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue()
                && Flags.enableMultipleDesktopsFrontend()
                && canEnterDesktopMode(context);
    }
+2 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERN
import android.view.Display.DEFAULT_DISPLAY
import android.view.IWindowManager
import android.view.WindowManager.TRANSIT_CHANGE
import android.window.DesktopExperienceFlags
import android.window.WindowContainerTransaction
import com.android.internal.protolog.ProtoLog
import com.android.window.flags.Flags
@@ -62,7 +63,7 @@ class DesktopDisplayEventHandler(
    private fun onInit() {
        displayController.addDisplayWindowListener(this)

        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue()) {
            desktopTasksController.onDeskRemovedListener = this
        }
    }
+11 −11
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.wm.shell.desktopmode

import com.android.window.flags.Flags
import android.window.DesktopExperienceFlags
import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN
import com.android.wm.shell.sysui.ShellCommandHandler
import java.io.PrintWriter
@@ -56,7 +56,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
                pw.println("Error: task id should be an integer")
                return false
            }
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            return controller.moveTaskToDefaultDeskAndActivate(taskId, transitionSource = UNKNOWN)
        }
        if (args.size < 3) {
@@ -95,7 +95,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runCreateDesk(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -116,7 +116,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runActivateDesk(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -137,7 +137,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runRemoveDesk(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -158,7 +158,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runRemoveAllDesks(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -167,7 +167,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runMoveTaskToFront(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -188,7 +188,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runMoveTaskOutOfDesk(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -209,7 +209,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runCanCreateDesk(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -225,7 +225,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    private fun runGetActiveDeskId(args: Array<String>, pw: PrintWriter): Boolean {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("Not supported.")
            return false
        }
@@ -246,7 +246,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
    }

    override fun printShellCommandHelp(pw: PrintWriter, prefix: String) {
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            pw.println("$prefix moveTaskToDesk <taskId> ")
            pw.println("$prefix  Move a task with given id to desktop mode.")
            pw.println("$prefix moveToNextDisplay <taskId> ")
+2 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.util.ArrayMap
import android.util.ArraySet
import android.util.SparseArray
import android.view.Display.INVALID_DISPLAY
import android.window.DesktopExperienceFlags
import android.window.DesktopModeFlags
import androidx.core.util.forEach
import androidx.core.util.valueIterator
@@ -137,7 +138,7 @@ class DesktopRepository(
    private var desktopGestureExclusionExecutor: Executor? = null

    private val desktopData: DesktopData =
        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            MultiDesktopData()
        } else {
            SingleDesktopData()
+15 −14
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import android.view.WindowManager.TRANSIT_OPEN
import android.view.WindowManager.TRANSIT_PIP
import android.view.WindowManager.TRANSIT_TO_FRONT
import android.widget.Toast
import android.window.DesktopExperienceFlags
import android.window.DesktopModeFlags
import android.window.DesktopModeFlags.DISABLE_NON_RESIZABLE_APP_SNAP_RESIZE
import android.window.DesktopModeFlags.ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER
@@ -428,7 +429,7 @@ class DesktopTasksController(

    /** Creates a new desk in the given display. */
    fun createDesk(displayId: Int) {
        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            desksOrganizer.createDesk(displayId) { deskId ->
                taskRepository.addDesk(displayId = displayId, deskId = deskId)
            }
@@ -607,7 +608,7 @@ class DesktopTasksController(
            addPendingMinimizeTransition(transition, it, MinimizeReason.TASK_LIMIT)
        }
        exitResult.asExit()?.runOnTransitionStart?.invoke(transition)
        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            desksTransitionObserver.addPendingTransition(
                DeskTransition.ActiveDeskWithTask(
                    token = transition,
@@ -635,7 +636,7 @@ class DesktopTasksController(
        task: RunningTaskInfo,
    ): Int? {
        val taskIdToMinimize =
            if (Flags.enableMultipleDesktopsBackend()) {
            if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
                // Activate the desk first.
                prepareForDeskActivation(displayId, wct)
                desksOrganizer.activateDesk(wct, deskId)
@@ -655,7 +656,7 @@ class DesktopTasksController(
                // Bring other apps to front first.
                bringDesktopAppsToFrontBeforeShowingNewTask(displayId, wct, task.taskId)
            }
        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            prepareMoveTaskToDesk(wct, task, deskId)
        } else {
            addMoveToDesktopChanges(wct, task)
@@ -714,7 +715,7 @@ class DesktopTasksController(
        )
        val wct = WindowContainerTransaction()
        exitSplitIfApplicable(wct, taskInfo)
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            // |moveHomeTask| is also called in |bringDesktopAppsToFrontBeforeShowingNewTask|, so
            // this shouldn't be necessary at all.
            if (Flags.enablePerDisplayDesktopWallpaperActivity()) {
@@ -746,7 +747,7 @@ class DesktopTasksController(
                addPendingMinimizeTransition(it, taskId, MinimizeReason.TASK_LIMIT)
            }
            exitResult.asExit()?.runOnTransitionStart?.invoke(transition)
            if (Flags.enableMultipleDesktopsBackend()) {
            if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
                desksTransitionObserver.addPendingTransition(
                    DeskTransition.ActiveDeskWithTask(
                        token = transition,
@@ -1543,7 +1544,7 @@ class DesktopTasksController(
    private fun prepareForDeskActivation(displayId: Int, wct: WindowContainerTransaction) {
        // Move home to front, ensures that we go back home when all desktop windows are closed
        val useParamDisplayId =
            Flags.enableMultipleDesktopsBackend() ||
            DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue ||
                Flags.enablePerDisplayDesktopWallpaperActivity()
        moveHomeTask(displayId = if (useParamDisplayId) displayId else context.displayId, wct = wct)
        // Currently, we only handle the desktop on the default display really.
@@ -2309,7 +2310,7 @@ class DesktopTasksController(
        taskInfo: RunningTaskInfo,
        deskId: Int,
    ) {
        if (!Flags.enableMultipleDesktopsBackend()) return
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) return
        val displayId = taskRepository.getDisplayForDesk(deskId)
        val displayLayout = displayController.getDisplayLayout(displayId) ?: return
        val initialBounds = getInitialBounds(displayLayout, taskInfo, displayId)
@@ -2541,7 +2542,7 @@ class DesktopTasksController(
    fun activateDesk(deskId: Int, remoteTransition: RemoteTransition? = null) {
        val displayId = taskRepository.getDisplayForDesk(deskId)
        val wct = WindowContainerTransaction()
        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            prepareForDeskActivation(displayId, wct)
            desksOrganizer.activateDesk(wct, deskId)
            if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) {
@@ -2562,7 +2563,7 @@ class DesktopTasksController(

        val transition = transitions.startTransition(transitionType, wct, handler)
        handler?.setTransition(transition)
        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            desksTransitionObserver.addPendingTransition(
                DeskTransition.ActivateDesk(
                    token = transition,
@@ -2598,7 +2599,7 @@ class DesktopTasksController(
        logV("removeDesk deskId=%d from displayId=%d", deskId, displayId)

        val tasksToRemove =
            if (Flags.enableMultipleDesktopsBackend()) {
            if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
                taskRepository.getActiveTaskIdsInDesk(deskId)
            } else {
                // TODO: 362720497 - make sure minimized windows are also removed in WM
@@ -2607,7 +2608,7 @@ class DesktopTasksController(
            }

        val wct = WindowContainerTransaction()
        if (!Flags.enableMultipleDesktopsBackend()) {
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            tasksToRemove.forEach {
                val task = shellTaskOrganizer.getRunningTaskInfo(it)
                if (task != null) {
@@ -2620,9 +2621,9 @@ class DesktopTasksController(
            // TODO: 362720497 - double check background tasks are also removed.
            desksOrganizer.removeDesk(wct, deskId)
        }
        if (!Flags.enableMultipleDesktopsBackend() && wct.isEmpty) return
        if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && wct.isEmpty) return
        val transition = transitions.startTransition(TRANSIT_CLOSE, wct, /* handler= */ null)
        if (Flags.enableMultipleDesktopsBackend()) {
        if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
            desksTransitionObserver.addPendingTransition(
                DeskTransition.RemoveDesk(
                    token = transition,
Loading