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

Commit 97b622ac authored by Jorge Gil's avatar Jorge Gil Committed by Android (Google) Code Review
Browse files

Merge "[27/N] Desks: Add activation changes from startLaunchTransition" into main

parents d78eef86 2403a485
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.wm.shell.desktopmode

import android.app.ActivityTaskManager.INVALID_TASK_ID
import android.window.DesktopExperienceFlags
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason
import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN
import com.android.wm.shell.sysui.ShellCommandHandler
import com.android.wm.shell.transition.FocusTransitionObserver
@@ -188,8 +189,12 @@ class DesktopModeShellCommandHandler(
                pw.println("Error: task id should be an integer")
                return false
            }
        pw.println("Not implemented.")
        return false
        controller.moveTaskToFront(
            /* taskId= */ taskId,
            /* remoteTransition= */ null,
            /* unminimizeReason= */ UnminimizeReason.UNKNOWN,
        )
        return true
    }

    private fun runMoveTaskOutOfDesk(args: Array<String>, pw: PrintWriter): Boolean {
+19 −23
Original line number Diff line number Diff line
@@ -1121,12 +1121,13 @@ class DesktopTasksController(
                excludeTaskId = launchingTaskId,
                reason = DesktopImmersiveController.ExitReason.TASK_LAUNCH,
            )
        var deskIdToActivate: Int? = null
        if (
            DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue &&
        var activationRunOnTransitStart: RunOnTransitStart? = null
        val shouldActivateDesk =
            (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue ||
                DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) &&
                !isDesktopModeShowing(displayId)
        ) {
            deskIdToActivate =
        if (shouldActivateDesk) {
            val deskIdToActivate =
                checkNotNull(
                    launchingTaskId?.let { taskRepository.getDeskIdForTask(it) }
                        ?: getDefaultDeskId(displayId)
@@ -1136,6 +1137,18 @@ class DesktopTasksController(
            // Desk activation must be handled before app launch-related transactions.
            activateDeskWct.merge(launchTransaction, /* transfer= */ true)
            launchTransaction = activateDeskWct
            activationRunOnTransitStart = { transition ->
                desksTransitionObserver.addPendingTransition(
                    DeskTransition.ActivateDesk(
                        token = transition,
                        displayId = displayId,
                        deskId = deskIdToActivate,
                    )
                )
            }
            desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted(
                FREEFORM_ANIMATION_DURATION
            )
        }
        val t =
            if (remoteTransition == null) {
@@ -1169,24 +1182,7 @@ class DesktopTasksController(
        if (launchingTaskId != null && taskRepository.isMinimizedTask(launchingTaskId)) {
            addPendingUnminimizeTransition(t, displayId, launchingTaskId, unminimizeReason)
        }
        if (
            DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue &&
                deskIdToActivate != null
        ) {
            if (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) {
                desksTransitionObserver.addPendingTransition(
                    DeskTransition.ActivateDesk(
                        token = t,
                        displayId = displayId,
                        deskId = deskIdToActivate,
                    )
                )
            }

            desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted(
                FREEFORM_ANIMATION_DURATION
            )
        }
        activationRunOnTransitStart?.invoke(t)
        exitImmersiveResult.asExit()?.runOnTransitionStart?.invoke(t)
        return t
    }
+29 −0
Original line number Diff line number Diff line
@@ -334,6 +334,16 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenAnswer { Binder() }
        whenever(exitDesktopTransitionHandler.startTransition(any(), any(), any(), any()))
            .thenReturn(Binder())
        whenever(
                desktopMixedTransitionHandler.startLaunchTransition(
                    any(),
                    any(),
                    anyOrNull(),
                    anyOrNull(),
                    anyOrNull(),
                )
            )
            .thenReturn(Binder())
        whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout)
        whenever(displayController.getDisplayContext(anyInt())).thenReturn(mockDisplayContext)
        whenever(displayController.getDisplay(anyInt())).thenReturn(display)
@@ -6572,6 +6582,25 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        assertThat(launchingTaskReorderIndex).isGreaterThan(wallpaperReorderIndex)
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
        Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER,
        Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
    )
    fun startLaunchTransition_desktopNotShowing_updatesDesktopEnterExitListener() {
        setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = 0)
        taskRepository.setDeskInactive(deskId = 0)

        controller.startLaunchTransition(
            transitionType = TRANSIT_OPEN,
            wct = WindowContainerTransaction(),
            launchingTaskId = null,
        )

        verify(desktopModeEnterExitTransitionListener).onEnterDesktopModeTransitionStarted(any())
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,