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

Commit 697f72ad authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I6811b7b1,I738c0dac into main

* changes:
  Log App Handle drag metrics
  Log Handle Menu metrics
parents 0919585e d1311726
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -703,6 +703,7 @@ public abstract class WMShellModule {
            InputManager inputManager,
            FocusTransitionObserver focusTransitionObserver,
            DesktopModeEventLogger desktopModeEventLogger,
            DesktopModeUiEventLogger desktopModeUiEventLogger,
            DesktopTilingDecorViewModel desktopTilingDecorViewModel) {
        return new DesktopTasksController(
                context,
@@ -733,6 +734,7 @@ public abstract class WMShellModule {
                interactionJankMonitor,
                mainHandler,
                desktopModeEventLogger,
                desktopModeUiEventLogger,
                desktopTilingDecorViewModel);
    }

+13 −1
Original line number Diff line number Diff line
@@ -106,7 +106,19 @@ class DesktopModeUiEventLogger(
        @UiEvent(doc = "Double tap on window header to maximize it in desktop windowing mode")
        DESKTOP_WINDOW_HEADER_DOUBLE_TAP_TO_MAXIMIZE(1724),
        @UiEvent(doc = "Tap on the window Handle to open the Handle Menu")
        DESKTOP_WINDOW_APP_HANDLE_TAP(1998);
        DESKTOP_WINDOW_APP_HANDLE_TAP(1998),
        @UiEvent(doc = "Tap on the desktop mode option under app handle menu")
        DESKTOP_WINDOW_APP_HANDLE_MENU_TAP_TO_DESKTOP_MODE(1999),
        @UiEvent(doc = "Tap on the split screen option under app handle menu")
        DESKTOP_WINDOW_APP_HANDLE_MENU_TAP_TO_SPLIT_SCREEN(2000),
        @UiEvent(doc = "Tap on the full screen option under app handle menu")
        DESKTOP_WINDOW_APP_HANDLE_MENU_TAP_TO_FULL_SCREEN(2001),
        @UiEvent(doc = "When user successfully drags the app handle to desktop mode")
        DESKTOP_WINDOW_APP_HANDLE_DRAG_TO_DESKTOP_MODE(2002),
        @UiEvent(doc = "When user successfully drags the app handle to split screen")
        DESKTOP_WINDOW_APP_HANDLE_DRAG_TO_SPLIT_SCREEN(2003),
        @UiEvent(doc = "When user successfully drags the app handle to full screen")
        DESKTOP_WINDOW_APP_HANDLE_DRAG_TO_FULL_SCREEN(2004);

        override fun getId(): Int = mId
    }
+18 −0
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ import java.util.concurrent.Executor
import java.util.function.Consumer
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ResizeTrigger
import com.android.wm.shell.desktopmode.DesktopModeUiEventLogger.DesktopUiEventEnum
import com.android.wm.shell.desktopmode.DragToDesktopTransitionHandler.Companion.DRAG_TO_DESKTOP_FINISH_ANIM_DURATION_MS
import com.android.wm.shell.desktopmode.EnterDesktopTaskTransitionHandler.FREEFORM_ANIMATION_DURATION
import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler.FULLSCREEN_ANIMATION_DURATION
@@ -166,6 +167,7 @@ class DesktopTasksController(
    private val interactionJankMonitor: InteractionJankMonitor,
    @ShellMainThread private val handler: Handler,
    private val desktopModeEventLogger: DesktopModeEventLogger,
    private val desktopModeUiEventLogger: DesktopModeUiEventLogger,
    private val desktopTilingDecorViewModel: DesktopTilingDecorViewModel,
) :
    RemoteCallable<DesktopTasksController>,
@@ -2188,16 +2190,32 @@ class DesktopTasksController(
                // Start a new jank interaction for the drag release to desktop window animation.
                interactionJankMonitor.begin(taskSurface, context, handler,
                    CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_RELEASE, "to_desktop")
                desktopModeUiEventLogger.log(
                    taskInfo,
                    DesktopUiEventEnum.DESKTOP_WINDOW_APP_HANDLE_DRAG_TO_DESKTOP_MODE
                )
                finalizeDragToDesktop(taskInfo)
            }
            IndicatorType.NO_INDICATOR,
            IndicatorType.TO_FULLSCREEN_INDICATOR -> {
                desktopModeUiEventLogger.log(
                    taskInfo,
                    DesktopUiEventEnum.DESKTOP_WINDOW_APP_HANDLE_DRAG_TO_FULL_SCREEN
                )
                cancelDragToDesktop(taskInfo)
            }
            IndicatorType.TO_SPLIT_LEFT_INDICATOR -> {
                desktopModeUiEventLogger.log(
                    taskInfo,
                    DesktopUiEventEnum.DESKTOP_WINDOW_APP_HANDLE_DRAG_TO_SPLIT_SCREEN
                )
                requestSplit(taskInfo, leftOrTop = true)
            }
            IndicatorType.TO_SPLIT_RIGHT_INDICATOR -> {
                desktopModeUiEventLogger.log(
                    taskInfo,
                    DesktopUiEventEnum.DESKTOP_WINDOW_APP_HANDLE_DRAG_TO_SPLIT_SCREEN
                )
                requestSplit(taskInfo, leftOrTop = false)
            }
        }
+9 −0
Original line number Diff line number Diff line
@@ -644,6 +644,11 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
        decoration.addCaptionInset(wct);
        mDesktopTasksController.moveTaskToDesktop(taskId, wct, source);
        decoration.closeHandleMenu();

        if (source == DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON) {
            mDesktopModeUiEventLogger.log(decoration.mTaskInfo,
                    DesktopUiEventEnum.DESKTOP_WINDOW_APP_HANDLE_MENU_TAP_TO_DESKTOP_MODE);
        }
    }

    private void onToFullscreen(int taskId) {
@@ -659,6 +664,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
            mDesktopTasksController.moveToFullscreen(taskId,
                    DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON);
        }
        mDesktopModeUiEventLogger.log(decoration.mTaskInfo,
                DesktopUiEventEnum.DESKTOP_WINDOW_APP_HANDLE_MENU_TAP_TO_FULL_SCREEN);
    }

    private void onToSplitScreen(int taskId) {
@@ -671,6 +678,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
        // we shouldn't receive input for it any longer.
        decoration.disposeStatusBarInputLayer();
        mDesktopTasksController.requestSplit(decoration.mTaskInfo, false /* leftOrTop */);
        mDesktopModeUiEventLogger.log(decoration.mTaskInfo,
                DesktopUiEventEnum.DESKTOP_WINDOW_APP_HANDLE_MENU_TAP_TO_SPLIT_SCREEN);
    }

    private void onNewWindow(int taskId) {
+2 −0
Original line number Diff line number Diff line
@@ -220,6 +220,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
  @Mock private lateinit var freeformTaskTransitionStarter: FreeformTaskTransitionStarter
  @Mock private lateinit var mockHandler: Handler
  @Mock private lateinit var desktopModeEventLogger: DesktopModeEventLogger
  @Mock private lateinit var desktopModeUiEventLogger: DesktopModeUiEventLogger
  @Mock lateinit var persistentRepository: DesktopPersistentRepository
  @Mock lateinit var motionEvent: MotionEvent
  @Mock lateinit var repositoryInitializer: DesktopRepositoryInitializer
@@ -346,6 +347,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
        mockInteractionJankMonitor,
        mockHandler,
        desktopModeEventLogger,
        desktopModeUiEventLogger,
        desktopTilingDecorViewModel,
      )
  }