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

Commit 9aeb3a8e authored by Vania Desmonda's avatar Vania Desmonda Committed by Android (Google) Code Review
Browse files

Merge "Add logging for task resizing started and ended on tile handle movement." into main

parents a4f8cdf4 467aeefa
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -779,7 +779,8 @@ public abstract class WMShellModule {
            ShellTaskOrganizer shellTaskOrganizer,
            ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler,
            ReturnToDragStartAnimator returnToDragStartAnimator,
            @DynamicOverride DesktopRepository desktopRepository) {
            @DynamicOverride DesktopRepository desktopRepository,
            DesktopModeEventLogger desktopModeEventLogger) {
        return new DesktopTilingDecorViewModel(
                context,
                displayController,
@@ -789,7 +790,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