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

Commit 6dd9b9fb authored by Graciela Wissen Putri's avatar Graciela Wissen Putri
Browse files

Remove log for desk root changes

Logger currently only filters for freeform changes and desk root changes
are freeform. Remove desk root change from logging so
desktop_mode_visible_tasks doesn't report desk root as a visible
freeform task.

Flag: com.android.window.flags.enable_multiple_desktops_backend
Fix: 422076046
Test: manual logging
      atest DesktopModeLoggerTransitionObserverTest
Change-Id: If5f4bca42774a7e867daed0942c896af32419976
parent 8c4f5b3f
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1482,10 +1482,11 @@ public abstract class WMShellModule {
            Transitions transitions,
            DesktopModeEventLogger desktopModeEventLogger,
            Optional<DesktopTasksLimiter> desktopTasksLimiter,
            DesktopState desktopState) {
            DesktopState desktopState,
            DesksOrganizer desksOrganizer) {
        return new DesktopModeLoggerTransitionObserver(
                shellInit, transitions, desktopModeEventLogger,
                desktopTasksLimiter, desktopState);
                desktopTasksLimiter, desktopState, desksOrganizer);
    }

    @WMSingleton
+16 −10
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import androidx.core.util.isEmpty
import androidx.core.util.isNotEmpty
import androidx.core.util.plus
import androidx.core.util.putAll
import androidx.core.util.size
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.EnterReason
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ExitReason
@@ -51,6 +52,7 @@ import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_ENTER
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_HANDLE_MENU_BUTTON
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
import com.android.wm.shell.shared.TransitionUtil
import com.android.wm.shell.shared.desktopmode.DesktopState
@@ -70,6 +72,7 @@ class DesktopModeLoggerTransitionObserver(
    private val desktopModeEventLogger: DesktopModeEventLogger,
    private val desktopTasksLimiter: Optional<DesktopTasksLimiter>,
    desktopState: DesktopState,
    private val desksOrganizer: DesksOrganizer,
) : Transitions.TransitionObserver {

    init {
@@ -176,7 +179,7 @@ class DesktopModeLoggerTransitionObserver(
            ProtoLog.v(
                WM_SHELL_DESKTOP_MODE,
                "DesktopModeLogger: processing tasks after task vanished %s",
                postTransitionFreeformTasks.size(),
                postTransitionFreeformTasks.size,
            )
            identifyLogEventAndUpdateState(
                transition = null,
@@ -210,6 +213,7 @@ class DesktopModeLoggerTransitionObserver(
        }

        // filter changes involving freeform tasks or tasks that were cached in previous state
        // and exclude desk task changes.
        val changesToFreeformWindows =
            info.changes
                .filter { it.taskInfo != null && it.requireTaskInfo().taskId != INVALID_TASK_ID }
@@ -217,6 +221,7 @@ class DesktopModeLoggerTransitionObserver(
                    it.requireTaskInfo().isFreeformWindow() ||
                        visibleFreeformTaskInfos.containsKey(it.requireTaskInfo().taskId)
                }
                .filter { !desksOrganizer.isDeskChange(it, it.requireTaskInfo().taskId) }

        val postTransitionFreeformTasks: SparseArray<TaskInfo> = SparseArray()
        // start off by adding all existing tasks
@@ -250,7 +255,7 @@ class DesktopModeLoggerTransitionObserver(
        ProtoLog.v(
            WM_SHELL_DESKTOP_MODE,
            "DesktopModeLogger: taskInfo map after processing changes %s",
            postTransitionFreeformTasks.size(),
            postTransitionFreeformTasks.size,
        )

        return postTransitionFreeformTasks
@@ -280,6 +285,7 @@ class DesktopModeLoggerTransitionObserver(
        postTransitionVisibleFreeformTasks: SparseArray<TaskInfo>,
        newFocusedFreeformTask: TaskInfo?,
    ) {
        // TODO(b/423560267): Consider logging for empty desks and multiple desks.
        if (
            postTransitionVisibleFreeformTasks.isEmpty() &&
                preTransitionVisibleFreeformTasks.isNotEmpty() &&
@@ -342,7 +348,7 @@ class DesktopModeLoggerTransitionObserver(
            val currentTaskUpdate =
                buildTaskUpdateForTask(
                    taskInfo,
                    postTransitionVisibleFreeformTasks.size(),
                    postTransitionVisibleFreeformTasks.size,
                    focusChangedReason = focusChangedReason,
                )
            val previousTaskInfo = preTransitionVisibleFreeformTasks[taskId]
@@ -358,11 +364,11 @@ class DesktopModeLoggerTransitionObserver(
                    Trace.setCounter(
                        Trace.TRACE_TAG_WINDOW_MANAGER,
                        VISIBLE_TASKS_COUNTER_NAME,
                        postTransitionVisibleFreeformTasks.size().toLong(),
                        postTransitionVisibleFreeformTasks.size.toLong(),
                    )
                    SystemProperties.set(
                        VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY,
                        postTransitionVisibleFreeformTasks.size().toString(),
                        postTransitionVisibleFreeformTasks.size.toString(),
                    )
                }
                focusChangedReason != null ->
@@ -371,7 +377,7 @@ class DesktopModeLoggerTransitionObserver(
                // TODO(b/347935387): Log changes only once they are stable.
                buildTaskUpdateForTask(
                    previousTaskInfo,
                    postTransitionVisibleFreeformTasks.size(),
                    postTransitionVisibleFreeformTasks.size,
                    focusChangedReason = focusChangedReason,
                ) != currentTaskUpdate ->
                    desktopModeEventLogger.logTaskInfoChanged(currentTaskUpdate)
@@ -387,18 +393,18 @@ class DesktopModeLoggerTransitionObserver(
                val taskUpdate =
                    buildTaskUpdateForTask(
                        taskInfo,
                        postTransitionVisibleFreeformTasks.size(),
                        postTransitionVisibleFreeformTasks.size,
                        minimizeReason,
                    )
                desktopModeEventLogger.logTaskRemoved(taskUpdate)
                Trace.setCounter(
                    Trace.TRACE_TAG_WINDOW_MANAGER,
                    VISIBLE_TASKS_COUNTER_NAME,
                    postTransitionVisibleFreeformTasks.size().toLong(),
                    postTransitionVisibleFreeformTasks.size.toLong(),
                )
                SystemProperties.set(
                    VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY,
                    postTransitionVisibleFreeformTasks.size().toString(),
                    postTransitionVisibleFreeformTasks.size.toString(),
                )
            }
        }
@@ -566,7 +572,7 @@ class DesktopModeLoggerTransitionObserver(
        @VisibleForTesting const val VISIBLE_TASKS_COUNTER_NAME = "desktop_mode_visible_tasks"
        @VisibleForTesting
        const val VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY =
            "debug.tracing." + VISIBLE_TASKS_COUNTER_NAME
            "debug.tracing.$VISIBLE_TASKS_COUNTER_NAME"
        const val VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY_DEFAULT_VALUE = "0"
    }
}
+16 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer
import com.android.wm.shell.shared.desktopmode.FakeDesktopState
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.TransitionInfoBuilder
@@ -106,6 +107,7 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
    private val transitions = mock<Transitions>()
    private val desktopTasksLimiter = mock<DesktopTasksLimiter>()
    private val desktopState = FakeDesktopState()
    private val desksOrganizer = mock<DesksOrganizer>()

    private lateinit var transitionObserver: DesktopModeLoggerTransitionObserver
    private lateinit var shellInit: ShellInit
@@ -124,6 +126,7 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
                desktopModeEventLogger,
                Optional.of(desktopTasksLimiter),
                desktopState,
                desksOrganizer,
            )
        val initRunnableCaptor = ArgumentCaptor.forClass(Runnable::class.java)
        verify(mockShellInit)
@@ -163,6 +166,19 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
        verify(desktopModeEventLogger, never()).logTaskAdded(any())
    }

    @Test
    fun transitOpen_rootDeskChange_doesNotLogTaskAdded() {
        val taskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
        val change = createChange(TRANSIT_OPEN, taskInfo)
        val transitionInfo = TransitionInfoBuilder(TRANSIT_OPEN, 0).addChange(change).build()
        `when`(desksOrganizer.isDeskChange(change, taskInfo.taskId)).thenReturn(true)

        callOnTransitionReady(transitionInfo)

        verify(desktopModeEventLogger, never()).logSessionEnter(any())
        verify(desktopModeEventLogger, never()).logTaskAdded(any())
    }

    @Test
    fun transitOpen_logTaskAddedAndEnterReasonAppFreeformIntent() {
        val change = createChange(TRANSIT_OPEN, createTaskInfo(WINDOWING_MODE_FREEFORM))