diff options
| author | 2024-11-14 21:59:21 +0000 | |
|---|---|---|
| committer | 2024-11-22 13:55:17 -0800 | |
| commit | a066472ff6a447b78465f75a8c3047a4fa2917cd (patch) | |
| tree | 11487e41792c868835ed4efeb13d7ee4bb5d1cc6 | |
| parent | effb976b326529c1d3b1f702402544004f96be70 (diff) | |
Add DESKTOP_MODE_UNMAXIMIZE_WINDOW instrumentation.
Bug: 340195273
Test: Check perfetto trace
Flag: EXEMPT add instrumentation
Change-Id: Icefcdbf332041d3048ede54ca464137acf3cc64f
6 files changed, 45 insertions, 14 deletions
diff --git a/core/java/com/android/internal/jank/Cuj.java b/core/java/com/android/internal/jank/Cuj.java index 1204ef3f48fc..fc415377f1ee 100644 --- a/core/java/com/android/internal/jank/Cuj.java +++ b/core/java/com/android/internal/jank/Cuj.java @@ -235,8 +235,19 @@ public class Cuj { */ public static final int CUJ_DESKTOP_MODE_SNAP_RESIZE = 118; + /** + * Track unmaximize window interaction in desktop mode. + * + * <p> Tracking starts when the maximize button or option is clicked {@link + * com.android.wm.shell.windowdecor.DesktopModeWindowDecorViewModel#onClick} + * and finishes when the animation finishes {@link + * com.android.wm.shell.windowdecor.ToggleResizeDesktopTaskTransitionHandler#startAnimation} + * </p> + */ + public static final int CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW = 119; + // When adding a CUJ, update this and make sure to also update CUJ_TO_STATSD_INTERACTION_TYPE. - @VisibleForTesting static final int LAST_CUJ = CUJ_DESKTOP_MODE_SNAP_RESIZE; + @VisibleForTesting static final int LAST_CUJ = CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW; /** @hide */ @IntDef({ @@ -346,7 +357,8 @@ public class Cuj { CUJ_LAUNCHER_KEYBOARD_QUICK_SWITCH_APP_LAUNCH, CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_RELEASE, CUJ_DESKTOP_MODE_EXIT_MODE_ON_LAST_WINDOW_CLOSE, - CUJ_DESKTOP_MODE_SNAP_RESIZE + CUJ_DESKTOP_MODE_SNAP_RESIZE, + CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW }) @Retention(RetentionPolicy.SOURCE) public @interface CujType {} @@ -467,6 +479,7 @@ public class Cuj { CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_RELEASE] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_RELEASE; CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_DESKTOP_MODE_EXIT_MODE_ON_LAST_WINDOW_CLOSE] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__DESKTOP_MODE_EXIT_MODE_ON_LAST_WINDOW_CLOSE; CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_DESKTOP_MODE_SNAP_RESIZE] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__DESKTOP_MODE_SNAP_RESIZE; + CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__DESKTOP_MODE_UNMAXIMIZE_WINDOW; } private Cuj() { @@ -699,6 +712,8 @@ public class Cuj { return "DESKTOP_MODE_EXIT_MODE_ON_LAST_WINDOW_CLOSE"; case CUJ_DESKTOP_MODE_SNAP_RESIZE: return "DESKTOP_MODE_SNAP_RESIZE"; + case CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW: + return "DESKTOP_MODE_UNMAXIMIZE_WINDOW"; } return "UNKNOWN"; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index 3e3dd74ae4b4..8bc597e07c52 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -822,6 +822,8 @@ class DesktopTasksController( taskInfo: RunningTaskInfo, resizeTrigger: ResizeTrigger, inputMethod: InputMethod, + maximizeCujRecorder: (() -> Unit)? = null, + unmaximizeCujRecorder: (() -> Unit)? = null, ) { val currentTaskBounds = taskInfo.configuration.windowConfiguration.bounds desktopModeEventLogger.logTaskResizingStarted( @@ -843,6 +845,7 @@ class DesktopTasksController( // helpful to eliminate the current task from logic to calculate taskbar corner rounding. val willMaximize = !isMaximized if (isMaximized) { + unmaximizeCujRecorder?.invoke() // The desktop task is at the maximized width and/or height of the stable bounds. // If the task's pre-maximize stable bounds were saved, toggle the task to those bounds. // Otherwise, toggle to the default bounds. @@ -858,6 +861,7 @@ class DesktopTasksController( } } } else { + maximizeCujRecorder?.invoke() // Save current bounds so that task can be restored back to original bounds if necessary // and toggle to the stable bounds. desktopTilingDecorViewModel.removeTaskIfTiled(taskInfo.displayId, taskInfo.taskId) @@ -914,7 +918,7 @@ class DesktopTasksController( toggleDesktopTaskSize( taskInfo, ResizeTrigger.DRAG_TO_TOP_RESIZE_TRIGGER, - DesktopModeEventLogger.getInputMethodFromMotionEvent(motionEvent) + DesktopModeEventLogger.getInputMethodFromMotionEvent(motionEvent), ) } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt index 941115083717..6df3302f47a5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt @@ -119,6 +119,7 @@ class ToggleResizeDesktopTaskTransitionHandler( initialBounds = null boundsAnimator = null interactionJankMonitor.end(Cuj.CUJ_DESKTOP_MODE_MAXIMIZE_WINDOW) + interactionJankMonitor.end(Cuj.CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW) interactionJankMonitor.end(Cuj.CUJ_DESKTOP_MODE_SNAP_RESIZE) } ) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index 1913e93ae64e..4497e35e82f1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -580,11 +580,18 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, if (decoration == null) { return; } - mInteractionJankMonitor.begin( - decoration.mTaskSurface, mContext, mMainHandler, - Cuj.CUJ_DESKTOP_MODE_MAXIMIZE_WINDOW, source); mDesktopTasksController.toggleDesktopTaskSize(decoration.mTaskInfo, resizeTrigger, - DesktopModeEventLogger.getInputMethodFromMotionEvent(motionEvent)); + DesktopModeEventLogger.getInputMethodFromMotionEvent(motionEvent), () -> { + mInteractionJankMonitor.begin( + decoration.mTaskSurface, mContext, mMainHandler, + Cuj.CUJ_DESKTOP_MODE_MAXIMIZE_WINDOW, source); + return null; + }, () -> { + mInteractionJankMonitor.begin( + decoration.mTaskSurface, mContext, mMainHandler, + Cuj.CUJ_DESKTOP_MODE_UNMAXIMIZE_WINDOW, source); + return null; + }); decoration.closeHandleMenu(); decoration.closeMaximizeMenu(); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt index 887bdc259f54..eb81d59c7a5f 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt @@ -266,7 +266,7 @@ class DesktopModeKeyGestureHandlerTest : ShellTestCase() { verify(desktopTasksController).toggleDesktopTaskSize( task, ResizeTrigger.MAXIMIZE_MENU, - DesktopModeEventLogger.Companion.InputMethod.KEYBOARD + DesktopModeEventLogger.Companion.InputMethod.KEYBOARD, ) } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt index b873162e6fe3..83dbb7ccbd4e 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt @@ -397,9 +397,11 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest maxOrRestoreListenerCaptor.value.invoke() verify(mockDesktopTasksController).toggleDesktopTaskSize( - decor.mTaskInfo, - ResizeTrigger.MAXIMIZE_MENU, - InputMethod.UNKNOWN_INPUT_METHOD + eq(decor.mTaskInfo), + eq(ResizeTrigger.MAXIMIZE_MENU), + eq(InputMethod.UNKNOWN_INPUT_METHOD), + any(), + any() ) } @@ -1034,9 +1036,11 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest verify(mockDesktopTasksController) .toggleDesktopTaskSize( - decor.mTaskInfo, - ResizeTrigger.MAXIMIZE_BUTTON, - InputMethod.UNKNOWN_INPUT_METHOD + eq(decor.mTaskInfo), + eq(ResizeTrigger.MAXIMIZE_BUTTON), + eq(InputMethod.UNKNOWN_INPUT_METHOD), + any(), + any(), ) } |