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

Commit 1449f0e7 authored by Toshiki Kikuchi's avatar Toshiki Kikuchi
Browse files

Start transition animation from the ongoing drag bounds

This CL lets toggleResizeDesktopTaskTransitionHandler to start a
transition animation from the ongoing drag bounds when the resize
happens by drag-to-maximize.

Flag: com.android.window.flags.enable_drag_to_maximize
Test: DesktopTasksControllerTest
Bug: 382024643
Change-Id: I96394837b2f83450efef3562dcede2d671d9f908
parent 00ff8969
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -886,7 +886,10 @@ class DesktopTasksController(
            destinationBounds.height(),
            displayController,
        )
        toggleResizeDesktopTaskTransitionHandler.startTransition(wct)
        toggleResizeDesktopTaskTransitionHandler.startTransition(
            wct,
            interaction.animationStartBounds,
        )
    }

    private fun dragToMaximizeDesktopTask(
@@ -917,6 +920,7 @@ class DesktopTasksController(
                direction = ToggleTaskSizeInteraction.Direction.MAXIMIZE,
                source = ToggleTaskSizeInteraction.Source.HEADER_DRAG_TO_TOP,
                inputMethod = DesktopModeEventLogger.getInputMethodFromMotionEvent(motionEvent),
                animationStartBounds = currentDragBounds,
            ),
        )
    }
+5 −1
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.wm.shell.desktopmode.common

import android.graphics.Rect
import com.android.internal.jank.Cuj
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ResizeTrigger
@@ -23,10 +24,13 @@ import com.android.wm.shell.desktopmode.common.ToggleTaskSizeInteraction.Ambiguo
import com.android.wm.shell.desktopmode.common.ToggleTaskSizeInteraction.Source

/** Represents a user interaction to toggle a desktop task's size from to maximize or vice versa. */
data class ToggleTaskSizeInteraction(
data class ToggleTaskSizeInteraction
@JvmOverloads
constructor(
    val direction: Direction,
    val source: Source,
    val inputMethod: InputMethod,
    val animationStartBounds: Rect? = null,
) {
    constructor(
        isMaximized: Boolean,
+3 −2
Original line number Diff line number Diff line
@@ -3033,20 +3033,21 @@ class DesktopTasksControllerTest : ShellTestCase() {
      .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_FULLSCREEN_INDICATOR)

    // Drag move the task to the top edge
    val currentDragBounds = Rect(100, 50, 500, 1000)
    spyController.onDragPositioningMove(task, mockSurface, 200f, Rect(100, 200, 500, 1000))
    spyController.onDragPositioningEnd(
      task,
      mockSurface,
      Point(100, 50), /* position */
      PointF(200f, 300f), /* inputCoordinate */
      Rect(100, 50, 500, 1000), /* currentDragBounds */
      currentDragBounds,
      Rect(0, 50, 2000, 2000) /* validDragArea */,
      Rect() /* dragStartBounds */,
      motionEvent,
      desktopWindowDecoration)

    // Assert bounds set to stable bounds
    val wct = getLatestToggleResizeDesktopTaskWct()
    val wct = getLatestToggleResizeDesktopTaskWct(currentDragBounds)
    assertThat(findBoundsChange(wct, task)).isEqualTo(STABLE_BOUNDS)
    // Assert event is properly logged
    verify(desktopModeEventLogger, times(1)).logTaskResizingStarted(