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

Commit e4377a8e authored by Alina Zaidi's avatar Alina Zaidi
Browse files

Trigger logging when task size or position is changed.

Bug: 326231724
Flag: EXEMPT not a major change
Test: Tested locally, added unit tests
Change-Id: Iecd62443e9a0d8f8765457f6a648b8560ba918f2
parent 8d239edc
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 {