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

Commit 7e9f598c authored by Alina Zaidi's avatar Alina Zaidi Committed by Android (Google) Code Review
Browse files

Merge "Trigger logging when task size or position is changed." into main

parents 5cc9e2ab e4377a8e
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -228,7 +228,6 @@ class DesktopModeLoggerTransitionObserver(
     * Log the appropriate log event based on the new state of TasksInfos and previously cached
     * state and update it
     */
    // TODO(b/326231724): Trigger logging when task size or position is changed.
    private fun identifyLogEventAndUpdateState(
        transitionInfo: TransitionInfo,
        preTransitionVisibleFreeformTasks: SparseArray<TaskInfo>,
@@ -289,10 +288,17 @@ class DesktopModeLoggerTransitionObserver(
        preTransitionVisibleFreeformTasks: SparseArray<TaskInfo>,
        postTransitionVisibleFreeformTasks: SparseArray<TaskInfo>
    ) {
        // find new tasks that were added
        postTransitionVisibleFreeformTasks.forEach { taskId, taskInfo ->
            if (!preTransitionVisibleFreeformTasks.containsKey(taskId)) {
                desktopModeEventLogger.logTaskAdded(sessionId, buildTaskUpdateForTask(taskInfo))
            val currentTaskUpdate = buildTaskUpdateForTask(taskInfo)
            val previousTaskInfo = preTransitionVisibleFreeformTasks[taskId]
            when {
                // new tasks added
                previousTaskInfo == null ->
                    desktopModeEventLogger.logTaskAdded(sessionId, currentTaskUpdate)
                // old tasks that were resized or repositioned
                // TODO(b/347935387): Log changes only once they are stable.
                buildTaskUpdateForTask(previousTaskInfo) != currentTaskUpdate ->
                    desktopModeEventLogger.logTaskInfoChanged(sessionId, currentTaskUpdate)
            }
        }

+114 −16
Original line number Diff line number Diff line
@@ -86,9 +86,7 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
  @JvmField
  @Rule
  val extendedMockitoRule =
    ExtendedMockitoRule.Builder(this)
            .mockStatic(DesktopModeStatus::class.java)
            .build()!!
      ExtendedMockitoRule.Builder(this).mockStatic(DesktopModeStatus::class.java).build()!!

  private val testExecutor = mock<ShellExecutor>()
  private val mockShellInit = mock<ShellInit>()
@@ -503,6 +501,105 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
    verify(desktopModeEventLogger, never()).logSessionEnter(any(), any())
  }

  @Test
  fun sessionAlreadyStarted_taskPositionChanged_logsTaskUpdate() {
    val sessionId = 1
    // add an existing freeform task
    val taskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
    transitionObserver.addTaskInfosToCachedMap(taskInfo)
    transitionObserver.setLoggerSessionId(sessionId)

    // task position changed
    val newTaskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM, taskX = DEFAULT_TASK_X + 100)
    val transitionInfo =
        TransitionInfoBuilder(TRANSIT_CHANGE, 0)
            .addChange(createChange(TRANSIT_CHANGE, newTaskInfo))
            .build()
    callOnTransitionReady(transitionInfo)

    verify(desktopModeEventLogger, times(1))
        .logTaskInfoChanged(
            eq(sessionId), eq(DEFAULT_TASK_UPDATE.copy(taskX = DEFAULT_TASK_X + 100)))
    verifyZeroInteractions(desktopModeEventLogger)
  }

  @Test
  fun sessionAlreadyStarted_taskResized_logsTaskUpdate() {
    val sessionId = 1
    // add an existing freeform task
    val taskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
    transitionObserver.addTaskInfosToCachedMap(taskInfo)
    transitionObserver.setLoggerSessionId(sessionId)

    // task resized
    val newTaskInfo =
        createTaskInfo(
            WINDOWING_MODE_FREEFORM,
            taskWidth = DEFAULT_TASK_WIDTH + 100,
            taskHeight = DEFAULT_TASK_HEIGHT - 100)
    val transitionInfo =
        TransitionInfoBuilder(TRANSIT_CHANGE, 0)
            .addChange(createChange(TRANSIT_CHANGE, newTaskInfo))
            .build()
    callOnTransitionReady(transitionInfo)

    verify(desktopModeEventLogger, times(1))
        .logTaskInfoChanged(
            eq(sessionId),
            eq(
                DEFAULT_TASK_UPDATE.copy(
                    taskWidth = DEFAULT_TASK_WIDTH + 100, taskHeight = DEFAULT_TASK_HEIGHT - 100)))
    verifyZeroInteractions(desktopModeEventLogger)
  }

  @Test
  fun sessionAlreadyStarted_multipleTasksUpdated_logsTaskUpdateForCorrectTask() {
    val sessionId = 1
    // add 2 existing freeform task
    val taskInfo1 = createTaskInfo(WINDOWING_MODE_FREEFORM)
    val taskInfo2 = createTaskInfo(WINDOWING_MODE_FREEFORM, id = 2)
    transitionObserver.addTaskInfosToCachedMap(taskInfo1)
    transitionObserver.addTaskInfosToCachedMap(taskInfo2)
    transitionObserver.setLoggerSessionId(sessionId)

    // task 1 position update
    val newTaskInfo1 = createTaskInfo(WINDOWING_MODE_FREEFORM, taskX = DEFAULT_TASK_X + 100)
    val transitionInfo1 =
        TransitionInfoBuilder(TRANSIT_CHANGE, 0)
            .addChange(createChange(TRANSIT_CHANGE, newTaskInfo1))
            .build()
    callOnTransitionReady(transitionInfo1)

    verify(desktopModeEventLogger, times(1))
        .logTaskInfoChanged(
            eq(sessionId), eq(DEFAULT_TASK_UPDATE.copy(taskX = DEFAULT_TASK_X + 100)))
    verifyZeroInteractions(desktopModeEventLogger)

    // task 2 resize
    val newTaskInfo2 =
        createTaskInfo(
            WINDOWING_MODE_FREEFORM,
            id = 2,
            taskWidth = DEFAULT_TASK_WIDTH + 100,
            taskHeight = DEFAULT_TASK_HEIGHT - 100)
    val transitionInfo2 =
        TransitionInfoBuilder(TRANSIT_CHANGE, 0)
            .addChange(createChange(TRANSIT_CHANGE, newTaskInfo2))
            .build()

    callOnTransitionReady(transitionInfo2)

    verify(desktopModeEventLogger, times(1))
        .logTaskInfoChanged(
            eq(sessionId),
            eq(
                DEFAULT_TASK_UPDATE.copy(
                    instanceId = 2,
                    taskWidth = DEFAULT_TASK_WIDTH + 100,
                    taskHeight = DEFAULT_TASK_HEIGHT - 100)))
    verifyZeroInteractions(desktopModeEventLogger)
  }

  @Test
  fun sessionAlreadyStarted_freeformTaskRemoved_logsTaskRemoved() {
    val sessionId = 1
@@ -574,7 +671,8 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
        taskWidth: Int = DEFAULT_TASK_WIDTH,
        taskX: Int = DEFAULT_TASK_X,
        taskY: Int = DEFAULT_TASK_Y,
    ) = ActivityManager.RunningTaskInfo().apply {
    ) =
        ActivityManager.RunningTaskInfo().apply {
          taskId = id
          userId = uid
          configuration.windowConfiguration.apply {