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

Commit 9fb681ff authored by Vania Desmonda's avatar Vania Desmonda
Browse files

Fix task resizing metrics since they were getting stale task bounds and

on snapping, the resizing ended log is not captured since the tiling
flag is enabled.

Fixes: 379625387
Test: atest DesktopModeEventLogger
Flag: com.android.window.flags.enable_resizing_metrics
Change-Id: Iee9612ed9a853c5c6873fbcb0a2e783b0872f667
parent 441143d1
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -189,6 +189,8 @@ class DesktopModeEventLogger {
        resizeTrigger: ResizeTrigger,
        motionEvent: MotionEvent?,
        taskInfo: RunningTaskInfo,
        taskWidth: Int? = null,
        taskHeight: Int? = null,
        displayController: DisplayController? = null,
        displayLayoutSize: Size? = null,
    ) {
@@ -207,6 +209,8 @@ class DesktopModeEventLogger {
            resizeTrigger,
            motionEvent,
            taskInfo,
            taskWidth,
            taskHeight,
            displayController = displayController,
            displayLayoutSize = displayLayoutSize,
        )
@@ -230,8 +234,8 @@ class DesktopModeEventLogger {
        resizeTrigger: ResizeTrigger,
        motionEvent: MotionEvent?,
        taskInfo: RunningTaskInfo,
        taskHeight: Int? = null,
        taskWidth: Int? = null,
        taskHeight: Int? = null,
        displayController: DisplayController? = null,
        displayLayoutSize: Size? = null,
    ) {
@@ -250,8 +254,8 @@ class DesktopModeEventLogger {
            resizeTrigger,
            motionEvent,
            taskInfo,
            taskHeight,
            taskWidth,
            taskHeight,
            displayController,
            displayLayoutSize,
        )
@@ -273,8 +277,8 @@ class DesktopModeEventLogger {
        resizeTrigger: ResizeTrigger,
        motionEvent: MotionEvent?,
        taskInfo: RunningTaskInfo,
        taskHeight: Int? = null,
        taskWidth: Int? = null,
        taskHeight: Int? = null,
        displayController: DisplayController? = null,
        displayLayoutSize: Size? = null,
    ): TaskSizeUpdate {
+26 −14
Original line number Diff line number Diff line
@@ -792,14 +792,19 @@ class DesktopTasksController(
        resizeTrigger: ResizeTrigger,
        motionEvent: MotionEvent?,
    ) {
        val currentTaskBounds = taskInfo.configuration.windowConfiguration.bounds
        desktopModeEventLogger.logTaskResizingStarted(
            resizeTrigger, motionEvent, taskInfo, displayController
            resizeTrigger,
            motionEvent,
            taskInfo,
            currentTaskBounds.width(),
            currentTaskBounds.height(),
            displayController
        )

        val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) ?: return

        val stableBounds = Rect().apply { displayLayout.getStableBounds(this) }
        val currentTaskBounds = taskInfo.configuration.windowConfiguration.bounds
        val destinationBounds = Rect()

        val isMaximized = isTaskMaximized(taskInfo, stableBounds)
@@ -843,8 +848,8 @@ class DesktopTasksController(
        taskbarDesktopTaskListener?.onTaskbarCornerRoundingUpdate(doesAnyTaskRequireTaskbarRounding)
        val wct = WindowContainerTransaction().setBounds(taskInfo.token, destinationBounds)
        desktopModeEventLogger.logTaskResizingEnded(
            resizeTrigger, motionEvent, taskInfo, destinationBounds.height(),
            destinationBounds.width(), displayController
            resizeTrigger, motionEvent, taskInfo, destinationBounds.width(),
            destinationBounds.height(), displayController
        )
        toggleResizeDesktopTaskTransitionHandler.startTransition(wct)
    }
@@ -969,7 +974,22 @@ class DesktopTasksController(
        desktopWindowDecoration: DesktopModeWindowDecoration,
    ) {
        desktopModeEventLogger.logTaskResizingStarted(
            resizeTrigger, motionEvent, taskInfo, displayController
            resizeTrigger,
            motionEvent,
            taskInfo,
            currentDragBounds.width(),
            currentDragBounds.height(),
            displayController
        )

        val destinationBounds = getSnapBounds(taskInfo, position)
        desktopModeEventLogger.logTaskResizingEnded(
            resizeTrigger,
            motionEvent,
            taskInfo,
            destinationBounds.width(),
            destinationBounds.height(),
            displayController,
        )

        if (DesktopModeFlags.ENABLE_TILE_RESIZING.isTrue()) {
@@ -984,15 +1004,7 @@ class DesktopTasksController(
            }
            return
        }
        val destinationBounds = getSnapBounds(taskInfo, position)
        desktopModeEventLogger.logTaskResizingEnded(
            resizeTrigger,
            motionEvent,
            taskInfo,
            destinationBounds.height(),
            destinationBounds.width(),
            displayController,
        )

        if (destinationBounds == taskInfo.configuration.windowConfiguration.bounds) {
            // Handle the case where we attempt to snap resize when already snap resized: the task
            // position won't need to change but we want to animate the surface going back to the
+4 −3
Original line number Diff line number Diff line
@@ -460,7 +460,8 @@ class DragResizeInputListener implements AutoCloseable {
                                || ctrlType == CTRL_TYPE_RIGHT || ctrlType == CTRL_TYPE_LEFT)
                                ? ResizeTrigger.EDGE : ResizeTrigger.CORNER;
                        mDesktopModeEventLogger.logTaskResizingStarted(mResizeTrigger,
                                e, mTaskInfo, /* displayController= */ null,
                                e, mTaskInfo, mDragStartTaskBounds.width(),
                                mDragStartTaskBounds.height(), /* displayController= */ null,
                                /* displayLayoutSize= */ mDisplayLayoutSizeSupplier.get());
                        // Increase the input sink region to cover the whole screen; this is to
                        // prevent input and focus from going to other tasks during a drag resize.
@@ -512,8 +513,8 @@ class DragResizeInputListener implements AutoCloseable {
                        }

                        mDesktopModeEventLogger.logTaskResizingEnded(mResizeTrigger,
                                mLastMotionEventOnDown, mTaskInfo, taskBounds.height(),
                                taskBounds.width(),
                                mLastMotionEventOnDown, mTaskInfo, taskBounds.width(),
                                taskBounds.height(),
                                /* displayController= */ null,
                                /* displayLayoutSize= */ mDisplayLayoutSizeSupplier.get());
                    }
+6 −2
Original line number Diff line number Diff line
@@ -230,6 +230,8 @@ class DesktopTilingWindowDecoration(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            leftTiledTask.taskInfo,
            leftTiledTask.bounds.width(),
            leftTiledTask.bounds.height(),
            displayController,
        )

@@ -237,6 +239,8 @@ class DesktopTilingWindowDecoration(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            rightTiledTask.taskInfo,
            rightTiledTask.bounds.width(),
            rightTiledTask.bounds.height(),
            displayController,
        )
    }
@@ -301,8 +305,8 @@ class DesktopTilingWindowDecoration(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            leftTiledTask.taskInfo,
            leftTiledTask.newBounds.height(),
            leftTiledTask.newBounds.width(),
            leftTiledTask.newBounds.height(),
            displayController,
        )

@@ -310,8 +314,8 @@ class DesktopTilingWindowDecoration(
            ResizeTrigger.TILING_DIVIDER,
            motionEvent,
            rightTiledTask.taskInfo,
            rightTiledTask.newBounds.height(),
            rightTiledTask.newBounds.width(),
            rightTiledTask.newBounds.height(),
            displayController,
        )

+6 −5
Original line number Diff line number Diff line
@@ -499,7 +499,8 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
        val sessionId = startDesktopModeSession()

        desktopModeEventLogger.logTaskResizingStarted(ResizeTrigger.CORNER,
            null, createTaskInfo(), displayController)
            null, createTaskInfo(), TASK_SIZE_UPDATE.taskWidth,
            TASK_SIZE_UPDATE.taskHeight, displayController)

        verify {
            FrameworkStatsLog.write(
@@ -516,10 +517,10 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
                eq(TASK_SIZE_UPDATE.instanceId),
                /* uid */
                eq(TASK_SIZE_UPDATE.uid),
                /* task_height */
                eq(TASK_SIZE_UPDATE.taskHeight),
                /* task_width */
                eq(TASK_SIZE_UPDATE.taskWidth),
                /* task_height */
                eq(TASK_SIZE_UPDATE.taskHeight),
                /* display_area */
                eq(DISPLAY_AREA),
            )
@@ -559,10 +560,10 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
                eq(TASK_SIZE_UPDATE.instanceId),
                /* uid */
                eq(TASK_SIZE_UPDATE.uid),
                /* task_height */
                eq(TASK_SIZE_UPDATE.taskHeight),
                /* task_width */
                eq(TASK_SIZE_UPDATE.taskWidth),
                /* task_height */
                eq(TASK_SIZE_UPDATE.taskHeight),
                /* display_area */
                eq(DISPLAY_AREA),
            )
Loading