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

Commit 58eb7f7d authored by Omar Elmekkawy's avatar Omar Elmekkawy Committed by Android (Google) Code Review
Browse files

Merge "Decouple DesktopTasksController from DesktopModeWindowDecorViewModel." into main

parents 6f2ba58f d7031747
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -759,7 +759,6 @@ public abstract class WMShellModule {
            FocusTransitionObserver focusTransitionObserver,
            DesktopModeEventLogger desktopModeEventLogger,
            DesktopModeUiEventLogger desktopModeUiEventLogger,
            DesktopTilingDecorViewModel desktopTilingDecorViewModel,
            DesktopWallpaperActivityTokenProvider desktopWallpaperActivityTokenProvider,
            Optional<BubbleController> bubbleController,
            OverviewToDesktopTransitionObserver overviewToDesktopTransitionObserver,
@@ -798,7 +797,6 @@ public abstract class WMShellModule {
                mainHandler,
                desktopModeEventLogger,
                desktopModeUiEventLogger,
                desktopTilingDecorViewModel,
                desktopWallpaperActivityTokenProvider,
                bubbleController,
                overviewToDesktopTransitionObserver,
@@ -990,7 +988,8 @@ public abstract class WMShellModule {
            DesktopModeUiEventLogger desktopModeUiEventLogger,
            WindowDecorTaskResourceLoader taskResourceLoader,
            RecentsTransitionHandler recentsTransitionHandler,
            DesktopModeCompatPolicy desktopModeCompatPolicy
            DesktopModeCompatPolicy desktopModeCompatPolicy,
            DesktopTilingDecorViewModel desktopTilingDecorViewModel
    ) {
        if (!DesktopModeStatus.canEnterDesktopModeOrShowAppHandle(context)) {
            return Optional.empty();
@@ -1006,7 +1005,8 @@ public abstract class WMShellModule {
                desktopTasksLimiter, appHandleEducationController, appToWebEducationController,
                windowDecorCaptionHandleRepository, activityOrientationChangeHandler,
                focusTransitionObserver, desktopModeEventLogger, desktopModeUiEventLogger,
                taskResourceLoader, recentsTransitionHandler, desktopModeCompatPolicy));
                taskResourceLoader, recentsTransitionHandler, desktopModeCompatPolicy,
                desktopTilingDecorViewModel));
    }

    @WMSingleton
+20 −29
Original line number Diff line number Diff line
@@ -136,7 +136,6 @@ import com.android.wm.shell.sysui.UserChangeListener
import com.android.wm.shell.transition.OneShotRemoteHandler
import com.android.wm.shell.transition.Transitions
import com.android.wm.shell.transition.Transitions.TransitionFinishCallback
import com.android.wm.shell.windowdecor.DesktopModeWindowDecoration
import com.android.wm.shell.windowdecor.DragPositioningCallbackUtility
import com.android.wm.shell.windowdecor.MoveToDesktopAnimator
import com.android.wm.shell.windowdecor.OnTaskRepositionAnimationListener
@@ -144,7 +143,7 @@ import com.android.wm.shell.windowdecor.OnTaskResizeAnimationListener
import com.android.wm.shell.windowdecor.extension.isFullscreen
import com.android.wm.shell.windowdecor.extension.isMultiWindow
import com.android.wm.shell.windowdecor.extension.requestingImmersive
import com.android.wm.shell.windowdecor.tiling.DesktopTilingDecorViewModel
import com.android.wm.shell.windowdecor.tiling.SnapEventHandler
import java.io.PrintWriter
import java.util.Optional
import java.util.concurrent.Executor
@@ -184,7 +183,6 @@ class DesktopTasksController(
    @ShellMainThread private val handler: Handler,
    private val desktopModeEventLogger: DesktopModeEventLogger,
    private val desktopModeUiEventLogger: DesktopModeUiEventLogger,
    private val desktopTilingDecorViewModel: DesktopTilingDecorViewModel,
    private val desktopWallpaperActivityTokenProvider: DesktopWallpaperActivityTokenProvider,
    private val bubbleController: Optional<BubbleController>,
    private val overviewToDesktopTransitionObserver: OverviewToDesktopTransitionObserver,
@@ -204,7 +202,9 @@ class DesktopTasksController(
    private var userId: Int
    private val desktopModeShellCommandHandler: DesktopModeShellCommandHandler =
        DesktopModeShellCommandHandler(this)

    private val mOnAnimationFinishedCallback = { releaseVisualIndicator() }
    private lateinit var snapEventHandler: SnapEventHandler
    private val dragToDesktopStateListener =
        object : DragToDesktopStateListener {
            override fun onCommitToDesktopAnimationStart() {
@@ -269,7 +269,7 @@ class DesktopTasksController(
                        RecentsTransitionStateListener.stateToString(state),
                    )
                    recentsTransitionState = state
                    desktopTilingDecorViewModel.onOverviewAnimationStateChange(
                    snapEventHandler.onOverviewAnimationStateChange(
                        RecentsTransitionStateListener.isAnimating(state)
                    )
                }
@@ -300,6 +300,11 @@ class DesktopTasksController(
        dragToDesktopTransitionHandler.setSplitScreenController(controller)
    }

    /** Setter to handle snap events */
    fun setSnapEventHandler(handler: SnapEventHandler) {
        snapEventHandler = handler
    }

    /** Returns the transition type for the given remote transition. */
    private fun transitionType(remoteTransition: RemoteTransition?): Int {
        if (remoteTransition == null) {
@@ -784,7 +789,7 @@ class DesktopTasksController(
        taskInfo: RunningTaskInfo,
    ): ((IBinder) -> Unit)? {
        val taskId = taskInfo.taskId
        desktopTilingDecorViewModel.removeTaskIfTiled(displayId, taskId)
        snapEventHandler.removeTaskIfTiled(displayId, taskId)
        performDesktopExitCleanupIfNeeded(taskId, displayId, wct, forceToFullscreen = false)
        taskRepository.addClosingTask(displayId, taskId)
        taskbarDesktopTaskListener?.onTaskbarCornerRoundingUpdate(
@@ -833,7 +838,7 @@ class DesktopTasksController(
        val taskId = taskInfo.taskId
        val displayId = taskInfo.displayId
        val wct = WindowContainerTransaction()
        desktopTilingDecorViewModel.removeTaskIfTiled(displayId, taskId)
        snapEventHandler.removeTaskIfTiled(displayId, taskId)
        performDesktopExitCleanupIfNeeded(taskId, displayId, wct, forceToFullscreen = false)
        // Notify immersive handler as it might need to exit immersive state.
        val exitResult =
@@ -861,7 +866,7 @@ class DesktopTasksController(
    /** Move a task with given `taskId` to fullscreen */
    fun moveToFullscreen(taskId: Int, transitionSource: DesktopModeTransitionSource) {
        shellTaskOrganizer.getRunningTaskInfo(taskId)?.let { task ->
            desktopTilingDecorViewModel.removeTaskIfTiled(task.displayId, taskId)
            snapEventHandler.removeTaskIfTiled(task.displayId, taskId)
            moveToFullscreenWithAnimation(task, task.positionInParent, transitionSource)
        }
    }
@@ -869,7 +874,7 @@ class DesktopTasksController(
    /** Enter fullscreen by moving the focused freeform task in given `displayId` to fullscreen. */
    fun enterFullscreen(displayId: Int, transitionSource: DesktopModeTransitionSource) {
        getFocusedFreeformTask(displayId)?.let {
            desktopTilingDecorViewModel.removeTaskIfTiled(displayId, it.taskId)
            snapEventHandler.removeTaskIfTiled(displayId, it.taskId)
            moveToFullscreenWithAnimation(it, it.positionInParent, transitionSource)
        }
    }
@@ -988,7 +993,7 @@ class DesktopTasksController(
        logV("moveTaskToFront taskId=%s", taskInfo.taskId)
        // If a task is tiled, another task should be brought to foreground with it so let
        // tiling controller handle the request.
        if (desktopTilingDecorViewModel.moveTaskToFrontIfTiled(taskInfo)) {
        if (snapEventHandler.moveTaskToFrontIfTiled(taskInfo)) {
            return
        }
        val wct = WindowContainerTransaction()
@@ -1230,7 +1235,7 @@ class DesktopTasksController(
        } else {
            // Save current bounds so that task can be restored back to original bounds if necessary
            // and toggle to the stable bounds.
            desktopTilingDecorViewModel.removeTaskIfTiled(taskInfo.displayId, taskInfo.taskId)
            snapEventHandler.removeTaskIfTiled(taskInfo.displayId, taskInfo.taskId)
            taskRepository.saveBoundsBeforeMaximize(taskInfo.taskId, currentTaskBounds)
            destinationBounds.set(calculateMaximizeBounds(displayLayout, taskInfo))
        }
@@ -1356,7 +1361,6 @@ class DesktopTasksController(
        position: SnapPosition,
        resizeTrigger: ResizeTrigger,
        inputMethod: InputMethod,
        desktopWindowDecoration: DesktopModeWindowDecoration,
    ) {
        desktopModeEventLogger.logTaskResizingStarted(
            resizeTrigger,
@@ -1378,13 +1382,7 @@ class DesktopTasksController(
        )

        if (DesktopModeFlags.ENABLE_TILE_RESIZING.isTrue()) {
            val isTiled =
                desktopTilingDecorViewModel.snapToHalfScreen(
                    taskInfo,
                    desktopWindowDecoration,
                    position,
                    currentDragBounds,
                )
            val isTiled = snapEventHandler.snapToHalfScreen(taskInfo, currentDragBounds, position)
            if (isTiled) {
                taskbarDesktopTaskListener?.onTaskbarCornerRoundingUpdate(true)
            }
@@ -1421,7 +1419,6 @@ class DesktopTasksController(
        position: SnapPosition,
        resizeTrigger: ResizeTrigger,
        inputMethod: InputMethod,
        desktopModeWindowDecoration: DesktopModeWindowDecoration,
    ) {
        if (!isSnapResizingAllowed(taskInfo)) {
            Toast.makeText(
@@ -1440,7 +1437,6 @@ class DesktopTasksController(
            position,
            resizeTrigger,
            inputMethod,
            desktopModeWindowDecoration,
        )
    }

@@ -1452,7 +1448,6 @@ class DesktopTasksController(
        currentDragBounds: Rect,
        dragStartBounds: Rect,
        motionEvent: MotionEvent,
        desktopModeWindowDecoration: DesktopModeWindowDecoration,
    ) {
        releaseVisualIndicator()
        if (!isSnapResizingAllowed(taskInfo)) {
@@ -1500,7 +1495,6 @@ class DesktopTasksController(
                position,
                resizeTrigger,
                DesktopModeEventLogger.getInputMethodFromMotionEvent(motionEvent),
                desktopModeWindowDecoration,
            )
        }
    }
@@ -2171,7 +2165,7 @@ class DesktopTasksController(
            return wct
        }
        if (!wct.isEmpty) {
            desktopTilingDecorViewModel.removeTaskIfTiled(task.displayId, task.taskId)
            snapEventHandler.removeTaskIfTiled(task.displayId, task.taskId)
            return wct
        }
        return null
@@ -2267,7 +2261,7 @@ class DesktopTasksController(

        if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue()) {
            taskRepository.addClosingTask(task.displayId, task.taskId)
            desktopTilingDecorViewModel.removeTaskIfTiled(task.displayId, task.taskId)
            snapEventHandler.removeTaskIfTiled(task.displayId, task.taskId)
        }

        taskbarDesktopTaskListener?.onTaskbarCornerRoundingUpdate(
@@ -2732,7 +2726,7 @@ class DesktopTasksController(
        taskBounds: Rect,
    ) {
        if (taskInfo.windowingMode != WINDOWING_MODE_FREEFORM) return
        desktopTilingDecorViewModel.removeTaskIfTiled(taskInfo.displayId, taskInfo.taskId)
        snapEventHandler.removeTaskIfTiled(taskInfo.displayId, taskInfo.taskId)
        updateVisualIndicator(
            taskInfo,
            taskSurface,
@@ -2792,7 +2786,6 @@ class DesktopTasksController(
        validDragArea: Rect,
        dragStartBounds: Rect,
        motionEvent: MotionEvent,
        desktopModeWindowDecoration: DesktopModeWindowDecoration,
    ) {
        if (taskInfo.configuration.windowConfiguration.windowingMode != WINDOWING_MODE_FREEFORM) {
            return
@@ -2831,7 +2824,6 @@ class DesktopTasksController(
                    currentDragBounds,
                    dragStartBounds,
                    motionEvent,
                    desktopModeWindowDecoration,
                )
            }
            IndicatorType.TO_SPLIT_RIGHT_INDICATOR -> {
@@ -2846,7 +2838,6 @@ class DesktopTasksController(
                    currentDragBounds,
                    dragStartBounds,
                    motionEvent,
                    desktopModeWindowDecoration,
                )
            }
            IndicatorType.NO_INDICATOR,
@@ -3132,7 +3123,7 @@ class DesktopTasksController(
        logV("onUserChanged previousUserId=%d, newUserId=%d", userId, newUserId)
        userId = newUserId
        taskRepository = userRepositories.getProfile(userId)
        desktopTilingDecorViewModel.onUserChange()
        snapEventHandler.onUserChange()
    }

    /** Called when a task's info changes. */
+41 −9
Original line number Diff line number Diff line
@@ -149,6 +149,8 @@ import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost;
import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHostSupplier;
import com.android.wm.shell.windowdecor.extension.InsetsStateKt;
import com.android.wm.shell.windowdecor.extension.TaskInfoKt;
import com.android.wm.shell.windowdecor.tiling.DesktopTilingDecorViewModel;
import com.android.wm.shell.windowdecor.tiling.SnapEventHandler;
import com.android.wm.shell.windowdecor.viewholder.AppHeaderViewHolder;

import kotlin.Pair;
@@ -173,7 +175,7 @@ import java.util.function.Supplier;
 */

public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
        FocusTransitionListener {
        FocusTransitionListener, SnapEventHandler {
    private static final String TAG = "DesktopModeWindowDecorViewModel";

    private final DesktopModeWindowDecoration.Factory mDesktopModeWindowDecorFactory;
@@ -255,6 +257,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
    private final WindowDecorTaskResourceLoader mTaskResourceLoader;
    private final RecentsTransitionHandler mRecentsTransitionHandler;
    private final DesktopModeCompatPolicy mDesktopModeCompatPolicy;
    private final DesktopTilingDecorViewModel mDesktopTilingDecorViewModel;

    public DesktopModeWindowDecorViewModel(
            Context context,
@@ -292,7 +295,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
            DesktopModeUiEventLogger desktopModeUiEventLogger,
            WindowDecorTaskResourceLoader taskResourceLoader,
            RecentsTransitionHandler recentsTransitionHandler,
            DesktopModeCompatPolicy desktopModeCompatPolicy) {
            DesktopModeCompatPolicy desktopModeCompatPolicy,
            DesktopTilingDecorViewModel desktopTilingDecorViewModel) {
        this(
                context,
                shellExecutor,
@@ -335,7 +339,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
                desktopModeUiEventLogger,
                taskResourceLoader,
                recentsTransitionHandler,
                desktopModeCompatPolicy);
                desktopModeCompatPolicy,
                desktopTilingDecorViewModel);
    }

    @VisibleForTesting
@@ -381,7 +386,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
            DesktopModeUiEventLogger desktopModeUiEventLogger,
            WindowDecorTaskResourceLoader taskResourceLoader,
            RecentsTransitionHandler recentsTransitionHandler,
            DesktopModeCompatPolicy desktopModeCompatPolicy) {
            DesktopModeCompatPolicy desktopModeCompatPolicy,
            DesktopTilingDecorViewModel desktopTilingDecorViewModel) {
        mContext = context;
        mMainExecutor = shellExecutor;
        mMainHandler = mainHandler;
@@ -452,7 +458,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
        mTaskResourceLoader = taskResourceLoader;
        mRecentsTransitionHandler = recentsTransitionHandler;
        mDesktopModeCompatPolicy = desktopModeCompatPolicy;

        mDesktopTilingDecorViewModel = desktopTilingDecorViewModel;
        mDesktopTasksController.setSnapEventHandler(this);
        shellInit.addInitCallback(this::onInit, this);
    }

@@ -723,8 +730,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
                decoration.mTaskInfo,
                left ? SnapPosition.LEFT : SnapPosition.RIGHT,
                left ? ResizeTrigger.SNAP_LEFT_MENU : ResizeTrigger.SNAP_RIGHT_MENU,
                inputMethod,
                decoration);
                inputMethod);

        decoration.closeHandleMenu();
        decoration.closeMaximizeMenu();
@@ -885,6 +891,33 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
        return snapshotList;
    }

    @Override
    public boolean snapToHalfScreen(@NonNull RunningTaskInfo taskInfo,
            @NonNull Rect currentDragBounds, @NonNull SnapPosition position) {
        return mDesktopTilingDecorViewModel.snapToHalfScreen(taskInfo,
                mWindowDecorByTaskId.get(taskInfo.taskId), position, currentDragBounds);
    }

    @Override
    public void removeTaskIfTiled(int displayId, int taskId) {
        mDesktopTilingDecorViewModel.removeTaskIfTiled(displayId, taskId);
    }

    @Override
    public void onUserChange() {
        mDesktopTilingDecorViewModel.onUserChange();
    }

    @Override
    public void onOverviewAnimationStateChange(boolean running) {
        mDesktopTilingDecorViewModel.onOverviewAnimationStateChange(running);
    }

    @Override
    public boolean moveTaskToFrontIfTiled(@NonNull RunningTaskInfo taskInfo) {
        return mDesktopTilingDecorViewModel.moveTaskToFrontIfTiled(taskInfo);
    }

    private class DesktopModeTouchEventListener extends GestureDetector.SimpleOnGestureListener
            implements View.OnClickListener, View.OnTouchListener, View.OnLongClickListener,
            View.OnGenericMotionListener, DragDetector.MotionEventHandler {
@@ -1238,8 +1271,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
                            taskInfo, decoration.mTaskSurface,
                            new PointF(e.getRawX(dragPointerIdx), e.getRawY(dragPointerIdx)),
                            newTaskBounds, decoration.calculateValidDragArea(),
                            new Rect(mOnDragStartInitialBounds), e,
                            mWindowDecorByTaskId.get(taskInfo.taskId));
                            new Rect(mOnDragStartInitialBounds), e);
                    if (touchingButton) {
                        // We need the input event to not be consumed here to end the ripple
                        // effect on the touched button. We will reset drag state in the ensuing
+43 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.wm.shell.windowdecor.tiling

import android.app.ActivityManager.RunningTaskInfo
import android.graphics.Rect
import com.android.wm.shell.desktopmode.DesktopTasksController.SnapPosition

/** Interface for handling snap to half screen events. */
interface SnapEventHandler {
    /** Snaps an app to half the screen for tiling. */
    fun snapToHalfScreen(
        taskInfo: RunningTaskInfo,
        currentDragBounds: Rect,
        position: SnapPosition,
    ): Boolean

    /** Removes a task from tiling if it's tiled, for example on task exiting. */
    fun removeTaskIfTiled(displayId: Int, taskId: Int)

    /** Notifies the tiling handler of user switch. */
    fun onUserChange()

    /** Notifies the tiling handler of overview animation state change. */
    fun onOverviewAnimationStateChange(running: Boolean)

    /** If a task is tiled, delegate moving to front to tiling infrastructure. */
    fun moveTaskToFrontIfTiled(taskInfo: RunningTaskInfo): Boolean
}
+3 −17
Original line number Diff line number Diff line
@@ -151,8 +151,7 @@ import com.android.wm.shell.transition.Transitions
import com.android.wm.shell.transition.Transitions.ENABLE_SHELL_TRANSITIONS
import com.android.wm.shell.transition.Transitions.TransitionHandler
import com.android.wm.shell.windowdecor.DesktopModeWindowDecorViewModelTestsBase.Companion.HOME_LAUNCHER_PACKAGE_NAME
import com.android.wm.shell.windowdecor.DesktopModeWindowDecoration
import com.android.wm.shell.windowdecor.tiling.DesktopTilingDecorViewModel
import com.android.wm.shell.windowdecor.tiling.SnapEventHandler
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import java.util.Optional
@@ -234,6 +233,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @Mock lateinit var multiInstanceHelper: MultiInstanceHelper
    @Mock lateinit var desktopModeVisualIndicator: DesktopModeVisualIndicator
    @Mock lateinit var recentTasksController: RecentTasksController
    @Mock lateinit var snapEventHandler: SnapEventHandler
    @Mock private lateinit var mockInteractionJankMonitor: InteractionJankMonitor
    @Mock private lateinit var mockSurface: SurfaceControl
    @Mock private lateinit var taskbarDesktopTaskListener: TaskbarDesktopTaskListener
@@ -246,9 +246,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @Mock lateinit var repositoryInitializer: DesktopRepositoryInitializer
    @Mock private lateinit var mockToast: Toast
    private lateinit var mockitoSession: StaticMockitoSession
    @Mock private lateinit var desktopTilingDecorViewModel: DesktopTilingDecorViewModel
    @Mock private lateinit var bubbleController: BubbleController
    @Mock private lateinit var desktopWindowDecoration: DesktopModeWindowDecoration
    @Mock private lateinit var resources: Resources
    @Mock
    lateinit var desktopModeEnterExitTransitionListener: DesktopModeEntryExitTransitionListener
@@ -380,6 +378,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        recentsTransitionStateListener = captor.firstValue

        controller.taskbarDesktopTaskListener = taskbarDesktopTaskListener
        controller.setSnapEventHandler(snapEventHandler)

        assumeTrue(ENABLE_SHELL_TRANSITIONS)

@@ -423,7 +422,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            mockHandler,
            desktopModeEventLogger,
            desktopModeUiEventLogger,
            desktopTilingDecorViewModel,
            desktopWallpaperActivityTokenProvider,
            Optional.of(bubbleController),
            overviewToDesktopTransitionObserver,
@@ -4483,7 +4481,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            validDragArea = Rect(0, 50, 2000, 2000),
            dragStartBounds = Rect(),
            motionEvent,
            desktopWindowDecoration,
        )
        val rectAfterEnd = Rect(100, 50, 500, 1150)
        verify(transitions)
@@ -4521,7 +4518,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            validDragArea = Rect(0, 50, 2000, 2000),
            dragStartBounds = Rect(),
            motionEvent,
            desktopWindowDecoration,
        )

        verify(transitions)
@@ -4561,7 +4557,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            validDragArea = Rect(0, 50, 2000, 2000),
            dragStartBounds = Rect(),
            motionEvent,
            desktopWindowDecoration,
        )

        verify(transitions)
@@ -4602,7 +4597,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            validDragArea = Rect(0, 50, 2000, 2000),
            dragStartBounds = Rect(),
            motionEvent,
            desktopWindowDecoration,
        )

        // Assert the task exits desktop mode
@@ -4640,7 +4634,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            validDragArea = Rect(0, 50, 2000, 2000),
            dragStartBounds = Rect(),
            motionEvent,
            desktopWindowDecoration,
        )

        // Assert bounds set to stable bounds
@@ -4696,7 +4689,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            validDragArea = Rect(0, 50, 2000, 2000),
            dragStartBounds = Rect(),
            motionEvent,
            desktopWindowDecoration,
        )

        // Assert that task is NOT updated via WCT
@@ -5116,7 +5108,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            SnapPosition.LEFT,
            ResizeTrigger.SNAP_LEFT_MENU,
            InputMethod.TOUCH,
            desktopWindowDecoration,
        )
        // Assert bounds set to stable bounds
        val wct = getLatestToggleResizeDesktopTaskWct(currentDragBounds)
@@ -5162,7 +5153,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            SnapPosition.LEFT,
            ResizeTrigger.SNAP_LEFT_MENU,
            InputMethod.TOUCH,
            desktopWindowDecoration,
        )
        // Assert that task is NOT updated via WCT
        verify(toggleResizeDesktopTaskTransitionHandler, never()).startTransition(any(), any())
@@ -5206,7 +5196,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            currentDragBounds,
            preDragBounds,
            motionEvent,
            desktopWindowDecoration,
        )
        val wct = getLatestToggleResizeDesktopTaskWct(currentDragBounds)
        assertThat(findBoundsChange(wct, task)).isEqualTo(expectedBounds)
@@ -5236,7 +5225,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            currentDragBounds,
            preDragBounds,
            motionEvent,
            desktopWindowDecoration,
        )
        verify(mReturnToDragStartAnimator)
            .start(
@@ -5261,7 +5249,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            SnapPosition.LEFT,
            ResizeTrigger.SNAP_LEFT_MENU,
            InputMethod.MOUSE,
            desktopWindowDecoration,
        )

        // Assert that task is NOT updated via WCT
@@ -5288,7 +5275,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            SnapPosition.LEFT,
            ResizeTrigger.SNAP_LEFT_MENU,
            InputMethod.MOUSE,
            desktopWindowDecoration,
        )

        // Assert bounds set to half of the stable bounds
Loading