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

Commit 467aeefa authored by Vania Desmonda's avatar Vania Desmonda
Browse files

Add logging for task resizing started and ended on tile handle movement.

Test: atest DesktopTilingWindowDecorationTest
Flag: com.android.window.flags.enable_tile_resizing
Fixes: 376835776
Change-Id: I92e4d0b88ad3a64685db691f6a3d56c77d72781d
parent 892faa99
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -778,7 +778,8 @@ public abstract class WMShellModule {
            ShellTaskOrganizer shellTaskOrganizer,
            ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler,
            ReturnToDragStartAnimator returnToDragStartAnimator,
            @DynamicOverride DesktopRepository desktopRepository) {
            @DynamicOverride DesktopRepository desktopRepository,
            DesktopModeEventLogger desktopModeEventLogger) {
        return new DesktopTilingDecorViewModel(
                context,
                displayController,
@@ -788,7 +789,8 @@ public abstract class WMShellModule {
                shellTaskOrganizer,
                toggleResizeDesktopTaskTransitionHandler,
                returnToDragStartAnimator,
                desktopRepository
                desktopRepository,
                desktopModeEventLogger
        );
    }

+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.common.DisplayChangeController
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.SyncTransactionQueue
import com.android.wm.shell.desktopmode.DesktopModeEventLogger
import com.android.wm.shell.desktopmode.DesktopRepository
import com.android.wm.shell.desktopmode.DesktopTasksController
import com.android.wm.shell.desktopmode.ReturnToDragStartAnimator
@@ -48,6 +49,7 @@ class DesktopTilingDecorViewModel(
    private val toggleResizeDesktopTaskTransitionHandler: ToggleResizeDesktopTaskTransitionHandler,
    private val returnToDragStartAnimator: ReturnToDragStartAnimator,
    private val taskRepository: DesktopRepository,
    private val desktopModeEventLogger: DesktopModeEventLogger,
) : DisplayChangeController.OnDisplayChangingListener {
    @VisibleForTesting
    var tilingTransitionHandlerByDisplayId = SparseArray<DesktopTilingWindowDecoration>()
@@ -80,6 +82,7 @@ class DesktopTilingDecorViewModel(
                            toggleResizeDesktopTaskTransitionHandler,
                            returnToDragStartAnimator,
                            taskRepository,
                            desktopModeEventLogger,
                        )
                    tilingTransitionHandlerByDisplayId.put(displayId, newHandler)
                    newHandler
+6 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.graphics.Rect
import android.graphics.Region
import android.os.Binder
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.RoundedCorner
import android.view.SurfaceControl
import android.view.SurfaceControlViewHost
@@ -39,6 +40,7 @@ import android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER
import android.view.WindowlessWindowManager
import com.android.wm.shell.R
import com.android.wm.shell.common.SyncTransactionQueue
import com.android.wm.shell.desktopmode.DesktopModeEventLogger
import java.util.function.Supplier

/**
@@ -141,8 +143,9 @@ class DesktopTilingDividerWindowManager(
        t.setRelativeLayer(leash, relativeLeash, 1)
    }

    override fun onDividerMoveStart(pos: Int) {
    override fun onDividerMoveStart(pos: Int, motionEvent: MotionEvent) {
        setSlippery(false)
        transitionHandler.onDividerHandleDragStart(motionEvent)
    }

    /**
@@ -161,13 +164,13 @@ class DesktopTilingDividerWindowManager(
     * Notifies the transition handler of tiling operations ending, which might result in resizing
     * WindowContainerTransactions if the sizes of the tiled tasks changed.
     */
    override fun onDividerMovedEnd(pos: Int) {
    override fun onDividerMovedEnd(pos: Int, motionEvent: MotionEvent) {
        setSlippery(true)
        val t = transactionSupplier.get()
        t.setPosition(leash, pos.toFloat() - maxRoundedCornerRadius, dividerBounds.top.toFloat())
        val dividerWidth = dividerBounds.width()
        dividerBounds.set(pos, dividerBounds.top, pos + dividerWidth, dividerBounds.bottom)
        transitionHandler.onDividerHandleDragEnd(dividerBounds, t)
        transitionHandler.onDividerHandleDragEnd(dividerBounds, t, motionEvent)
    }

    private fun getWindowManagerParams(): WindowManager.LayoutParams {
+46 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.graphics.Rect
import android.os.IBinder
import android.os.UserHandle
import android.util.Slog
import android.view.MotionEvent
import android.view.SurfaceControl
import android.view.SurfaceControl.Transaction
import android.view.WindowManager.TRANSIT_CHANGE
@@ -44,6 +45,8 @@ import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.DisplayLayout
import com.android.wm.shell.common.SyncTransactionQueue
import com.android.wm.shell.desktopmode.DesktopModeEventLogger
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ResizeTrigger
import com.android.wm.shell.desktopmode.DesktopRepository
import com.android.wm.shell.desktopmode.DesktopTasksController.SnapPosition
import com.android.wm.shell.desktopmode.ReturnToDragStartAnimator
@@ -70,6 +73,7 @@ class DesktopTilingWindowDecoration(
    private val toggleResizeDesktopTaskTransitionHandler: ToggleResizeDesktopTaskTransitionHandler,
    private val returnToDragStartAnimator: ReturnToDragStartAnimator,
    private val taskRepository: DesktopRepository,
    private val desktopModeEventLogger: DesktopModeEventLogger,
    private val transactionSupplier: Supplier<Transaction> = Supplier { Transaction() },
) :
    Transitions.TransitionHandler,
@@ -218,6 +222,25 @@ class DesktopTilingWindowDecoration(
        return tilingManager
    }

    fun onDividerHandleDragStart(motionEvent: MotionEvent) {
        val leftTiledTask = leftTaskResizingHelper ?: return
        val rightTiledTask = rightTaskResizingHelper ?: return

        desktopModeEventLogger.logTaskResizingStarted(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            leftTiledTask.taskInfo,
            displayController
        )

        desktopModeEventLogger.logTaskResizingStarted(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            rightTiledTask.taskInfo,
            displayController
        )
    }

    fun onDividerHandleMoved(dividerBounds: Rect, t: SurfaceControl.Transaction): Boolean {
        val leftTiledTask = leftTaskResizingHelper ?: return false
        val rightTiledTask = rightTaskResizingHelper ?: return false
@@ -266,10 +289,32 @@ class DesktopTilingWindowDecoration(
        return true
    }

    fun onDividerHandleDragEnd(dividerBounds: Rect, t: SurfaceControl.Transaction) {
    fun onDividerHandleDragEnd(
        dividerBounds: Rect,
        t: SurfaceControl.Transaction,
        motionEvent: MotionEvent,
    ) {
        val leftTiledTask = leftTaskResizingHelper ?: return
        val rightTiledTask = rightTaskResizingHelper ?: return

        desktopModeEventLogger.logTaskResizingEnded(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            leftTiledTask.taskInfo,
            leftTiledTask.newBounds.height(),
            leftTiledTask.newBounds.width(),
            displayController
        )

        desktopModeEventLogger.logTaskResizingEnded(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            rightTiledTask.taskInfo,
            rightTiledTask.newBounds.height(),
            rightTiledTask.newBounds.width(),
            displayController
        )

        if (leftTiledTask.newBounds == leftTiledTask.bounds) {
            leftTiledTask.hideVeil()
            rightTiledTask.hideVeil()
+4 −2
Original line number Diff line number Diff line
@@ -15,14 +15,16 @@
 */
package com.android.wm.shell.windowdecor.tiling

import android.view.MotionEvent

/** Divider move callback to whichever entity that handles the moving logic. */
interface DividerMoveCallback {
    /** Called on the divider move start gesture. */
    fun onDividerMoveStart(pos: Int)
    fun onDividerMoveStart(pos: Int, motionEvent: MotionEvent)

    /** Called on the divider moved by dragging it. */
    fun onDividerMove(pos: Int): Boolean

    /** Called on divider move gesture end. */
    fun onDividerMovedEnd(pos: Int)
    fun onDividerMovedEnd(pos: Int, motionEvent: MotionEvent)
}
Loading