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

Commit 3f5a283b authored by Gustav Sennton's avatar Gustav Sennton
Browse files

Add logging to DragToDesktop mergeAnimation

To avoid getting stuck during the DragToDesktop transition we might need
to finish the transition early if we receive merge-requests from other
transitions.
With this CL we add logs to see what transitions are requesting merges
into DragToDesktop.

Bug: 397138738
Flag: NONE adding logging
Test: N/A
Change-Id: I9e4e1fea2b1dff5af0fcdd0ee1c3a710a654858e
parent e2e8e87f
Loading
Loading
Loading
Loading
+21 −9
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKT
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP
import com.android.wm.shell.protolog.ShellProtoLogGroup
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
import com.android.wm.shell.shared.TransitionUtil
import com.android.wm.shell.shared.animation.PhysicsAnimator
import com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT
@@ -120,10 +121,7 @@ sealed class DragToDesktopTransitionHandler(
        dragToDesktopAnimator: MoveToDesktopAnimator,
    ) {
        if (inProgress) {
            ProtoLog.v(
                ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
                "DragToDesktop: Drag to desktop transition already in progress.",
            )
            logV("Drag to desktop transition already in progress.")
            return
        }

@@ -537,12 +535,14 @@ sealed class DragToDesktopTransitionHandler(
            state.cancelState == CancelState.CANCEL_SPLIT_LEFT ||
                state.cancelState == CancelState.CANCEL_SPLIT_RIGHT
        ) {
            logV("mergeAnimation: cancel through split")
            clearState()
            return
        }
        // In case of bubble animation, finish the initial desktop drag animation, but keep the
        // current animation running and have bubbles take over
        if (info.type == TRANSIT_CONVERT_TO_BUBBLE) {
            logV("mergeAnimation: convert-to-bubble")
            state.startTransitionFinishCb?.onTransitionFinished(/* wct= */ null)
            clearState()
            return
@@ -562,6 +562,7 @@ sealed class DragToDesktopTransitionHandler(
            state.startTransitionFinishCb
                ?: error("Start transition expected to be waiting for merge but wasn't")
        if (isEndTransition) {
            logV("mergeAnimation: end-transition, target=$mergeTarget")
            setupEndDragToDesktop(
                info,
                startTransaction = startT,
@@ -572,7 +573,10 @@ sealed class DragToDesktopTransitionHandler(
            LatencyTracker.getInstance(context)
                .onActionEnd(LatencyTracker.ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG)
            animateEndDragToDesktop(startTransaction = startT, startTransitionFinishCb)
        } else if (isCancelTransition) {
            return
        }
        if (isCancelTransition) {
            logV("mergeAnimation: cancel-transition, target=$mergeTarget")
            LatencyTracker.getInstance(context)
                .onActionCancel(LatencyTracker.ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG)
            info.changes.forEach { change ->
@@ -583,7 +587,9 @@ sealed class DragToDesktopTransitionHandler(
            finishCallback.onTransitionFinished(/* wct= */ null)
            startTransitionFinishCb.onTransitionFinished(/* wct= */ null)
            clearState()
            return
        }
        logW("unhandled merge transition: transitionInfo=$info")
    }

    protected open fun setupEndDragToDesktop(
@@ -724,10 +730,7 @@ sealed class DragToDesktopTransitionHandler(
            return
        }
        if (state.startTransitionToken == transition) {
            ProtoLog.v(
                ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
                "DragToDesktop: onTransitionConsumed() start transition aborted",
            )
            logV("onTransitionConsumed() start transition aborted")
            state.startAborted = true
            // The start-transition (DRAG_HOLD) is aborted, cancel its jank interaction.
            interactionJankMonitor.cancel(CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_HOLD)
@@ -950,7 +953,16 @@ sealed class DragToDesktopTransitionHandler(
        CANCEL_BUBBLE_RIGHT,
    }

    private fun logV(msg: String, vararg arguments: Any?) {
        ProtoLog.v(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
    }

    private fun logW(msg: String, vararg arguments: Any?) {
        ProtoLog.w(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
    }

    companion object {
        private const val TAG = "DragToDesktopTransitionHandler"
        /** The duration of the animation to commit or cancel the drag-to-desktop gesture. */
        @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
        const val DRAG_TO_DESKTOP_FINISH_ANIM_DURATION_MS = 336L