Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeEventLogger.kt +177 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.wm.shell.desktopmode import com.android.internal.annotations.VisibleForTesting import com.android.internal.protolog.ProtoLog import com.android.internal.util.FrameworkStatsLog import com.android.window.flags.Flags import com.android.wm.shell.EventLogTags import com.android.wm.shell.protolog.ShellProtoLogGroup Loading Loading @@ -79,7 +80,8 @@ class DesktopModeEventLogger { ) logTaskUpdate( FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_ADDED, sessionId, taskUpdate) sessionId, taskUpdate ) } /** Loading @@ -95,7 +97,8 @@ class DesktopModeEventLogger { ) logTaskUpdate( FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_REMOVED, sessionId, taskUpdate) sessionId, taskUpdate ) } /** Loading @@ -111,7 +114,46 @@ class DesktopModeEventLogger { ) logTaskUpdate( FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED, sessionId, taskUpdate) sessionId, taskUpdate ) } /** * Logs that a task resize event is starting with [taskSizeUpdate] within a * Desktop mode [sessionId]. */ fun logTaskResizingStarted(sessionId: Int, taskSizeUpdate: TaskSizeUpdate) { if (!Flags.enableResizingMetrics()) return ProtoLog.v( ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE, "DesktopModeLogger: Logging task resize is starting, session: %s taskId: %s", sessionId, taskSizeUpdate.instanceId ) logTaskSizeUpdated( FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__START_RESIZING_STAGE, sessionId, taskSizeUpdate ) } /** * Logs that a task resize event is ending with [taskSizeUpdate] within a * Desktop mode [sessionId]. */ fun logTaskResizingEnded(sessionId: Int, taskSizeUpdate: TaskSizeUpdate) { if (!Flags.enableResizingMetrics()) return ProtoLog.v( ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE, "DesktopModeLogger: Logging task resize is ending, session: %s taskId: %s", sessionId, taskSizeUpdate.instanceId ) logTaskSizeUpdated( FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__END_RESIZING_STAGE, sessionId, taskSizeUpdate ) } private fun logTaskUpdate(taskEvent: Int, sessionId: Int, taskUpdate: TaskUpdate) { Loading Loading @@ -162,6 +204,34 @@ class DesktopModeEventLogger { ) } private fun logTaskSizeUpdated( resizingStage: Int, sessionId: Int, taskSizeUpdate: TaskSizeUpdate ) { FrameworkStatsLog.write( DESKTOP_MODE_TASK_SIZE_UPDATED_ATOM_ID, /* resize_trigger */ taskSizeUpdate.resizeTrigger?.trigger ?: ResizeTrigger.UNKNOWN_RESIZE_TRIGGER.trigger, /* resizing_stage */ resizingStage, /* input_method */ taskSizeUpdate.inputMethod?.method ?: InputMethod.UNKNOWN_INPUT_METHOD.method, /* desktop_mode_session_id */ sessionId, /* instance_id */ taskSizeUpdate.instanceId, /* uid */ taskSizeUpdate.uid, /* task_height */ taskSizeUpdate.taskHeight, /* task_width */ taskSizeUpdate.taskWidth, /* display_area */ taskSizeUpdate.displayArea ) } companion object { /** * Describes a task position and dimensions. Loading @@ -188,6 +258,28 @@ class DesktopModeEventLogger { val visibleTaskCount: Int, ) /** * Describes a task size update (resizing, snapping or maximizing to * stable bounds). * * @property resizeTrigger the trigger for task resize * @property inputMethod the input method for resizing this task * @property instanceId instance id of the task * @property uid uid of the app associated with the task * @property taskHeight height of the task in dp * @property taskWidth width of the task in dp * @property displayArea the display size of the screen in dp */ data class TaskSizeUpdate( val resizeTrigger: ResizeTrigger? = null, val inputMethod: InputMethod? = null, val instanceId: Int, val uid: Int, val taskHeight: Int, val taskWidth: Int, val displayArea: Int, ) // Default value used when the task was not minimized. @VisibleForTesting const val UNSET_MINIMIZE_REASON = Loading Loading @@ -275,8 +367,88 @@ class DesktopModeEventLogger { SCREEN_OFF(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__EXIT_REASON__SCREEN_OFF) } /** * Enum ResizeTrigger mapped to the ResizeTrigger definition in * stats/atoms/desktopmode/desktopmode_extensions_atoms.proto */ enum class ResizeTrigger(val trigger: Int) { UNKNOWN_RESIZE_TRIGGER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER ), CORNER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__CORNER_RESIZE_TRIGGER ), EDGE( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__EDGE_RESIZE_TRIGGER ), TILING_DIVIDER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__TILING_DIVIDER_RESIZE_TRIGGER ), MAXIMIZE_BUTTON( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__MAXIMIZE_BUTTON_RESIZE_TRIGGER ), DOUBLE_TAP_APP_HEADER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__DOUBLE_TAP_APP_HEADER_RESIZE_TRIGGER ), DRAG_LEFT( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__DRAG_LEFT_RESIZE_TRIGGER ), DRAG_RIGHT( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__DRAG_RIGHT_RESIZE_TRIGGER ), SNAP_LEFT_MENU( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__SNAP_LEFT_MENU_RESIZE_TRIGGER ), SNAP_RIGHT_MENU( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__SNAP_RIGHT_MENU_RESIZE_TRIGGER ), } /** * Enum InputMethod mapped to the InputMethod definition in * stats/atoms/desktopmode/desktopmode_extensions_atoms.proto */ enum class InputMethod(val method: Int) { UNKNOWN_INPUT_METHOD( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD ), TOUCH( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__TOUCH_INPUT_METHOD ), STYLUS( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__STYLUS_INPUT_METHOD ), MOUSE( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__MOUSE_INPUT_METHOD ), TOUCHPAD( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__TOUCHPAD_INPUT_METHOD ), KEYBOARD( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__KEYBOARD_INPUT_METHOD ), } private const val DESKTOP_MODE_ATOM_ID = FrameworkStatsLog.DESKTOP_MODE_UI_CHANGED private const val DESKTOP_MODE_TASK_UPDATE_ATOM_ID = FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE private const val DESKTOP_MODE_TASK_SIZE_UPDATED_ATOM_ID = FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED } } libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeEventLoggerTest.kt +95 −2 Original line number Diff line number Diff line Loading @@ -16,15 +16,22 @@ package com.android.wm.shell.desktopmode import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.SetFlagsRule import com.android.dx.mockito.inline.extended.ExtendedMockito.verify import com.android.internal.util.FrameworkStatsLog import com.android.modules.utils.testing.ExtendedMockitoRule import com.android.window.flags.Flags import com.android.wm.shell.EventLogTags import com.android.wm.shell.ShellTestCase import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.EnterReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ExitReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.MinimizeReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ResizeTrigger import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskUpdate import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskSizeUpdate import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UNSET_MINIMIZE_REASON import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UNSET_UNMINIMIZE_REASON Loading @@ -41,11 +48,15 @@ class DesktopModeEventLoggerTest : ShellTestCase() { private val desktopModeEventLogger = DesktopModeEventLogger() @JvmField @Rule @Rule(order = 0) val extendedMockitoRule = ExtendedMockitoRule.Builder(this) .mockStatic(FrameworkStatsLog::class.java) .mockStatic(EventLogTags::class.java).build()!! @JvmField @Rule(order = 1) val setFlagsRule = SetFlagsRule() @Test fun logSessionEnter_enterReason() = runBlocking { desktopModeEventLogger.logSessionEnter(sessionId = SESSION_ID, EnterReason.UNKNOWN_ENTER) Loading Loading @@ -328,7 +339,65 @@ class DesktopModeEventLoggerTest : ShellTestCase() { } } companion object { @Test @EnableFlags(Flags.FLAG_ENABLE_RESIZING_METRICS) fun logTaskResizingStarted_logsTaskSizeUpdatedWithStartResizingStage() = runBlocking { desktopModeEventLogger.logTaskResizingStarted(sessionId = SESSION_ID, createTaskSizeUpdate()) verify { FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED), /* resize_trigger */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER), /* resizing_stage */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__START_RESIZING_STAGE), /* input_method */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD), /* desktop_mode_session_id */ eq(SESSION_ID), /* instance_id */ 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), /* display_area */ eq(TASK_SIZE_UPDATE.displayArea), ) } } @Test @EnableFlags(Flags.FLAG_ENABLE_RESIZING_METRICS) fun logTaskResizingEnded_logsTaskSizeUpdatedWithEndResizingStage() = runBlocking { desktopModeEventLogger.logTaskResizingEnded(sessionId = SESSION_ID, createTaskSizeUpdate()) verify { FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED), /* resize_trigger */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER), /* resizing_stage */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__END_RESIZING_STAGE), /* input_method */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD), /* desktop_mode_session_id */ eq(SESSION_ID), /* instance_id */ 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), /* display_area */ eq(TASK_SIZE_UPDATE.displayArea), ) } } private companion object { private const val SESSION_ID = 1 private const val TASK_ID = 1 private const val TASK_UID = 1 Loading @@ -337,12 +406,36 @@ class DesktopModeEventLoggerTest : ShellTestCase() { private const val TASK_HEIGHT = 100 private const val TASK_WIDTH = 100 private const val TASK_COUNT = 1 private const val DISPLAY_AREA = 1000 private val TASK_UPDATE = TaskUpdate( TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, TASK_X, TASK_Y, visibleTaskCount = TASK_COUNT, ) private val TASK_SIZE_UPDATE = TaskSizeUpdate( resizeTrigger = ResizeTrigger.UNKNOWN_RESIZE_TRIGGER, inputMethod = InputMethod.UNKNOWN_INPUT_METHOD, TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, DISPLAY_AREA, ) private fun createTaskSizeUpdate( resizeTrigger: ResizeTrigger = ResizeTrigger.UNKNOWN_RESIZE_TRIGGER, inputMethod: InputMethod = InputMethod.UNKNOWN_INPUT_METHOD, ) = TaskSizeUpdate( resizeTrigger, inputMethod, TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, DISPLAY_AREA, ) private fun createTaskUpdate( minimizeReason: MinimizeReason? = null, unminimizeReason: UnminimizeReason? = null, Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeEventLogger.kt +177 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.wm.shell.desktopmode import com.android.internal.annotations.VisibleForTesting import com.android.internal.protolog.ProtoLog import com.android.internal.util.FrameworkStatsLog import com.android.window.flags.Flags import com.android.wm.shell.EventLogTags import com.android.wm.shell.protolog.ShellProtoLogGroup Loading Loading @@ -79,7 +80,8 @@ class DesktopModeEventLogger { ) logTaskUpdate( FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_ADDED, sessionId, taskUpdate) sessionId, taskUpdate ) } /** Loading @@ -95,7 +97,8 @@ class DesktopModeEventLogger { ) logTaskUpdate( FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_REMOVED, sessionId, taskUpdate) sessionId, taskUpdate ) } /** Loading @@ -111,7 +114,46 @@ class DesktopModeEventLogger { ) logTaskUpdate( FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED, sessionId, taskUpdate) sessionId, taskUpdate ) } /** * Logs that a task resize event is starting with [taskSizeUpdate] within a * Desktop mode [sessionId]. */ fun logTaskResizingStarted(sessionId: Int, taskSizeUpdate: TaskSizeUpdate) { if (!Flags.enableResizingMetrics()) return ProtoLog.v( ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE, "DesktopModeLogger: Logging task resize is starting, session: %s taskId: %s", sessionId, taskSizeUpdate.instanceId ) logTaskSizeUpdated( FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__START_RESIZING_STAGE, sessionId, taskSizeUpdate ) } /** * Logs that a task resize event is ending with [taskSizeUpdate] within a * Desktop mode [sessionId]. */ fun logTaskResizingEnded(sessionId: Int, taskSizeUpdate: TaskSizeUpdate) { if (!Flags.enableResizingMetrics()) return ProtoLog.v( ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE, "DesktopModeLogger: Logging task resize is ending, session: %s taskId: %s", sessionId, taskSizeUpdate.instanceId ) logTaskSizeUpdated( FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__END_RESIZING_STAGE, sessionId, taskSizeUpdate ) } private fun logTaskUpdate(taskEvent: Int, sessionId: Int, taskUpdate: TaskUpdate) { Loading Loading @@ -162,6 +204,34 @@ class DesktopModeEventLogger { ) } private fun logTaskSizeUpdated( resizingStage: Int, sessionId: Int, taskSizeUpdate: TaskSizeUpdate ) { FrameworkStatsLog.write( DESKTOP_MODE_TASK_SIZE_UPDATED_ATOM_ID, /* resize_trigger */ taskSizeUpdate.resizeTrigger?.trigger ?: ResizeTrigger.UNKNOWN_RESIZE_TRIGGER.trigger, /* resizing_stage */ resizingStage, /* input_method */ taskSizeUpdate.inputMethod?.method ?: InputMethod.UNKNOWN_INPUT_METHOD.method, /* desktop_mode_session_id */ sessionId, /* instance_id */ taskSizeUpdate.instanceId, /* uid */ taskSizeUpdate.uid, /* task_height */ taskSizeUpdate.taskHeight, /* task_width */ taskSizeUpdate.taskWidth, /* display_area */ taskSizeUpdate.displayArea ) } companion object { /** * Describes a task position and dimensions. Loading @@ -188,6 +258,28 @@ class DesktopModeEventLogger { val visibleTaskCount: Int, ) /** * Describes a task size update (resizing, snapping or maximizing to * stable bounds). * * @property resizeTrigger the trigger for task resize * @property inputMethod the input method for resizing this task * @property instanceId instance id of the task * @property uid uid of the app associated with the task * @property taskHeight height of the task in dp * @property taskWidth width of the task in dp * @property displayArea the display size of the screen in dp */ data class TaskSizeUpdate( val resizeTrigger: ResizeTrigger? = null, val inputMethod: InputMethod? = null, val instanceId: Int, val uid: Int, val taskHeight: Int, val taskWidth: Int, val displayArea: Int, ) // Default value used when the task was not minimized. @VisibleForTesting const val UNSET_MINIMIZE_REASON = Loading Loading @@ -275,8 +367,88 @@ class DesktopModeEventLogger { SCREEN_OFF(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__EXIT_REASON__SCREEN_OFF) } /** * Enum ResizeTrigger mapped to the ResizeTrigger definition in * stats/atoms/desktopmode/desktopmode_extensions_atoms.proto */ enum class ResizeTrigger(val trigger: Int) { UNKNOWN_RESIZE_TRIGGER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER ), CORNER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__CORNER_RESIZE_TRIGGER ), EDGE( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__EDGE_RESIZE_TRIGGER ), TILING_DIVIDER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__TILING_DIVIDER_RESIZE_TRIGGER ), MAXIMIZE_BUTTON( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__MAXIMIZE_BUTTON_RESIZE_TRIGGER ), DOUBLE_TAP_APP_HEADER( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__DOUBLE_TAP_APP_HEADER_RESIZE_TRIGGER ), DRAG_LEFT( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__DRAG_LEFT_RESIZE_TRIGGER ), DRAG_RIGHT( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__DRAG_RIGHT_RESIZE_TRIGGER ), SNAP_LEFT_MENU( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__SNAP_LEFT_MENU_RESIZE_TRIGGER ), SNAP_RIGHT_MENU( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__SNAP_RIGHT_MENU_RESIZE_TRIGGER ), } /** * Enum InputMethod mapped to the InputMethod definition in * stats/atoms/desktopmode/desktopmode_extensions_atoms.proto */ enum class InputMethod(val method: Int) { UNKNOWN_INPUT_METHOD( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD ), TOUCH( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__TOUCH_INPUT_METHOD ), STYLUS( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__STYLUS_INPUT_METHOD ), MOUSE( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__MOUSE_INPUT_METHOD ), TOUCHPAD( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__TOUCHPAD_INPUT_METHOD ), KEYBOARD( FrameworkStatsLog .DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__KEYBOARD_INPUT_METHOD ), } private const val DESKTOP_MODE_ATOM_ID = FrameworkStatsLog.DESKTOP_MODE_UI_CHANGED private const val DESKTOP_MODE_TASK_UPDATE_ATOM_ID = FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE private const val DESKTOP_MODE_TASK_SIZE_UPDATED_ATOM_ID = FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED } }
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeEventLoggerTest.kt +95 −2 Original line number Diff line number Diff line Loading @@ -16,15 +16,22 @@ package com.android.wm.shell.desktopmode import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.SetFlagsRule import com.android.dx.mockito.inline.extended.ExtendedMockito.verify import com.android.internal.util.FrameworkStatsLog import com.android.modules.utils.testing.ExtendedMockitoRule import com.android.window.flags.Flags import com.android.wm.shell.EventLogTags import com.android.wm.shell.ShellTestCase import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.EnterReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ExitReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.MinimizeReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ResizeTrigger import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskUpdate import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskSizeUpdate import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UNSET_MINIMIZE_REASON import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UNSET_UNMINIMIZE_REASON Loading @@ -41,11 +48,15 @@ class DesktopModeEventLoggerTest : ShellTestCase() { private val desktopModeEventLogger = DesktopModeEventLogger() @JvmField @Rule @Rule(order = 0) val extendedMockitoRule = ExtendedMockitoRule.Builder(this) .mockStatic(FrameworkStatsLog::class.java) .mockStatic(EventLogTags::class.java).build()!! @JvmField @Rule(order = 1) val setFlagsRule = SetFlagsRule() @Test fun logSessionEnter_enterReason() = runBlocking { desktopModeEventLogger.logSessionEnter(sessionId = SESSION_ID, EnterReason.UNKNOWN_ENTER) Loading Loading @@ -328,7 +339,65 @@ class DesktopModeEventLoggerTest : ShellTestCase() { } } companion object { @Test @EnableFlags(Flags.FLAG_ENABLE_RESIZING_METRICS) fun logTaskResizingStarted_logsTaskSizeUpdatedWithStartResizingStage() = runBlocking { desktopModeEventLogger.logTaskResizingStarted(sessionId = SESSION_ID, createTaskSizeUpdate()) verify { FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED), /* resize_trigger */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER), /* resizing_stage */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__START_RESIZING_STAGE), /* input_method */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD), /* desktop_mode_session_id */ eq(SESSION_ID), /* instance_id */ 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), /* display_area */ eq(TASK_SIZE_UPDATE.displayArea), ) } } @Test @EnableFlags(Flags.FLAG_ENABLE_RESIZING_METRICS) fun logTaskResizingEnded_logsTaskSizeUpdatedWithEndResizingStage() = runBlocking { desktopModeEventLogger.logTaskResizingEnded(sessionId = SESSION_ID, createTaskSizeUpdate()) verify { FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED), /* resize_trigger */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER), /* resizing_stage */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZING_STAGE__END_RESIZING_STAGE), /* input_method */ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD), /* desktop_mode_session_id */ eq(SESSION_ID), /* instance_id */ 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), /* display_area */ eq(TASK_SIZE_UPDATE.displayArea), ) } } private companion object { private const val SESSION_ID = 1 private const val TASK_ID = 1 private const val TASK_UID = 1 Loading @@ -337,12 +406,36 @@ class DesktopModeEventLoggerTest : ShellTestCase() { private const val TASK_HEIGHT = 100 private const val TASK_WIDTH = 100 private const val TASK_COUNT = 1 private const val DISPLAY_AREA = 1000 private val TASK_UPDATE = TaskUpdate( TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, TASK_X, TASK_Y, visibleTaskCount = TASK_COUNT, ) private val TASK_SIZE_UPDATE = TaskSizeUpdate( resizeTrigger = ResizeTrigger.UNKNOWN_RESIZE_TRIGGER, inputMethod = InputMethod.UNKNOWN_INPUT_METHOD, TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, DISPLAY_AREA, ) private fun createTaskSizeUpdate( resizeTrigger: ResizeTrigger = ResizeTrigger.UNKNOWN_RESIZE_TRIGGER, inputMethod: InputMethod = InputMethod.UNKNOWN_INPUT_METHOD, ) = TaskSizeUpdate( resizeTrigger, inputMethod, TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, DISPLAY_AREA, ) private fun createTaskUpdate( minimizeReason: MinimizeReason? = null, unminimizeReason: UnminimizeReason? = null, Loading