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

Commit f5e1425f authored by Pragya Bajoria's avatar Pragya Bajoria
Browse files

Add logs to help with debugging for DesktopRepository and

DesktopTaskChangeListener.

Flag: EXEMPT (refactor)
Change-Id: Iea0df1c0dabfb9596663935e005edff88bf988cc
Test: atest DesktopRepositoryTest
Test: atest DesktopTaskChangeListenerTest
Bug: 332682201
parent 6dd107ab
Loading
Loading
Loading
Loading
+30 −4
Original line number Diff line number Diff line
@@ -208,6 +208,7 @@ class DesktopRepository(

    /** Adds the given desk under the given display. */
    fun addDesk(displayId: Int, deskId: Int) {
        logD("addDesk for displayId=%d and deskId=%d", displayId, deskId)
        desktopData.createDesk(displayId, deskId)
    }

@@ -224,6 +225,7 @@ class DesktopRepository(

    /** Sets the given desk as the active one in the given display. */
    fun setActiveDesk(displayId: Int, deskId: Int) {
        logD("setActiveDesk for displayId=%d and deskId=%d", displayId, deskId)
        desktopData.setActiveDesk(displayId = displayId, deskId = deskId)
    }

@@ -246,6 +248,7 @@ class DesktopRepository(
     * TODO: b/389960283 - add explicit [deskId] argument.
     */
    fun addTask(displayId: Int, taskId: Int, isVisible: Boolean) {
        logD("addTask for displayId=%d, taskId=%d, isVisible=%b", displayId, taskId, isVisible)
        val activeDesk =
            checkNotNull(desktopData.getDefaultDesk(displayId)) {
                "Expected desk in display: $displayId"
@@ -254,6 +257,13 @@ class DesktopRepository(
    }

    fun addTaskToDesk(displayId: Int, deskId: Int, taskId: Int, isVisible: Boolean) {
        logD(
            "addTaskToDesk for displayId=%d, deskId=%d, taskId=%d, isVisible=%b",
            displayId,
            deskId,
            taskId,
            isVisible,
        )
        addOrMoveTaskToTopOfDesk(displayId = displayId, deskId = deskId, taskId = taskId)
        addActiveTaskToDesk(displayId = displayId, deskId = deskId, taskId = taskId)
        updateTaskInDesk(
@@ -265,6 +275,12 @@ class DesktopRepository(
    }

    private fun addActiveTaskToDesk(displayId: Int, deskId: Int, taskId: Int) {
        logD(
            "addActiveTaskToDesk for displayId=%d, deskId=%d, taskId=%d",
            displayId,
            deskId,
            taskId,
        )
        val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" }

        // Removes task if it is active on another desk excluding this desk.
@@ -279,6 +295,7 @@ class DesktopRepository(
    /** Removes task from active task list of desks excluding the [excludedDeskId]. */
    @VisibleForTesting
    fun removeActiveTask(taskId: Int, excludedDeskId: Int? = null) {
        logD("removeActiveTask for taskId=%d, excludedDeskId=%d", taskId, excludedDeskId)
        val affectedDisplays = mutableSetOf<Int>()
        desktopData
            .desksSequence()
@@ -303,6 +320,7 @@ class DesktopRepository(
        taskId: Int,
        notifyListeners: Boolean = true,
    ): Boolean {
        logD("removeActiveTaskFromDesk for deskId=%d, taskId=%d", deskId, taskId)
        val desk = desktopData.getDesk(deskId) ?: return false
        if (desk.activeTasks.remove(taskId)) {
            logD("Removed active task=%d from deskId=%d", taskId, desk.deskId)
@@ -456,7 +474,7 @@ class DesktopRepository(

    /** Removes task from visible tasks of all desks except [excludedDeskId]. */
    private fun removeVisibleTask(taskId: Int, excludedDeskId: Int? = null) {
        desktopData.forAllDesks { displayId, desk ->
        desktopData.forAllDesks { _, desk ->
            if (desk.deskId != excludedDeskId) {
                removeVisibleTaskFromDesk(deskId = desk.deskId, taskId = taskId)
            }
@@ -718,6 +736,12 @@ class DesktopRepository(
     * Unminimizes the task if it is minimized.
     */
    private fun addOrMoveTaskToTopOfDesk(displayId: Int, deskId: Int, taskId: Int) {
        logD(
            "addOrMoveTaskToTopOfDesk displayId=%d, deskId=%d, taskId=%d",
            displayId,
            deskId,
            taskId,
        )
        val desk = desktopData.getDesk(deskId) ?: error("Could not find desk: $deskId")
        logD("addOrMoveTaskToTopOfDesk: display=%d deskId=%d taskId=%d", displayId, deskId, taskId)
        desktopData.forAllDesks { _, desk1 -> desk1.freeformTasksInZOrder.remove(taskId) }
@@ -738,6 +762,7 @@ class DesktopRepository(
     *   desk id instead of using this function and defaulting to the active one.
     */
    fun minimizeTask(displayId: Int, taskId: Int) {
        logD("minimizeTask displayId=%d, taskId=%d", displayId, taskId)
        if (displayId == INVALID_DISPLAY) {
            // When a task vanishes it doesn't have a displayId. Find the display of the task and
            // mark it as minimized.
@@ -756,7 +781,7 @@ class DesktopRepository(
    /** Minimizes the task in its desk. */
    @VisibleForTesting
    fun minimizeTaskInDesk(displayId: Int, deskId: Int, taskId: Int) {
        logD("Minimize Task: displayId=%d deskId=%d, task=%d", displayId, deskId, taskId)
        logD("MinimizeTaskInDesk: displayId=%d deskId=%d, task=%d", displayId, deskId, taskId)
        desktopData.getDesk(deskId)?.minimizedTasks?.add(taskId)
            ?: logD("Minimize task: No active desk found for task: taskId=%d", taskId)
        updateTaskInDesk(displayId, deskId, taskId, isVisible = false)
@@ -776,7 +801,7 @@ class DesktopRepository(
    }

    private fun unminimizeTaskFromDesk(deskId: Int, taskId: Int) {
        logD("Unminimize Task: deskId=%d, taskId=%d", deskId, taskId)
        logD("Unminimize Task from desk: deskId=%d, taskId=%d", deskId, taskId)
        if (desktopData.getDesk(deskId)?.minimizedTasks?.remove(taskId) != true) {
            logW("Unminimize Task: deskId=%d, taskId=%d, no task data", deskId, taskId)
        }
@@ -847,6 +872,7 @@ class DesktopRepository(

    /** Removes the given desk and returns the active tasks in that desk. */
    fun removeDesk(deskId: Int): Set<Int> {
        logD("removeDesk %d", deskId)
        val desk =
            desktopData.getDesk(deskId)
                ?: return emptySet<Int>().also {
+20 −0
Original line number Diff line number Diff line
@@ -19,13 +19,16 @@ package com.android.wm.shell.desktopmode
import android.app.ActivityManager.RunningTaskInfo
import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
import android.window.DesktopModeFlags
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.freeform.TaskChangeListener
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE

/** Manages tasks handling specific to Android Desktop Mode. */
class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUserRepositories) :
    TaskChangeListener {

    override fun onTaskOpening(taskInfo: RunningTaskInfo) {
        logD("onTaskOpening for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId)
        val desktopRepository: DesktopRepository =
            desktopUserRepositories.getProfile(taskInfo.userId)
        if (!isFreeformTask(taskInfo) && desktopRepository.isActiveTask(taskInfo.taskId)) {
@@ -38,6 +41,7 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser
    }

    override fun onTaskChanging(taskInfo: RunningTaskInfo) {
        logD("onTaskChanging for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId)
        val desktopRepository: DesktopRepository =
            desktopUserRepositories.getProfile(taskInfo.userId)
        if (!desktopRepository.isActiveTask(taskInfo.taskId)) return
@@ -67,9 +71,15 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser
    // of race conditions and possible duplications with [onTaskChanging].
    override fun onNonTransitionTaskChanging(taskInfo: RunningTaskInfo) {
        // TODO: b/367268953 - Propagate usages from FreeformTaskListener to this method.
        logD(
            "onNonTransitionTaskChanging for taskId=%d, displayId=%d",
            taskInfo.taskId,
            taskInfo.displayId,
        )
    }

    override fun onTaskMovingToFront(taskInfo: RunningTaskInfo) {
        logD("onTaskMovingToFront for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId)
        val desktopRepository: DesktopRepository =
            desktopUserRepositories.getProfile(taskInfo.userId)
        if (!desktopRepository.isActiveTask(taskInfo.taskId)) return
@@ -80,10 +90,12 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser
    }

    override fun onTaskMovingToBack(taskInfo: RunningTaskInfo) {
        logD("onTaskMovingToBack for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId)
        // TODO: b/367268953 - Connect this with DesktopRepository.
    }

    override fun onTaskClosing(taskInfo: RunningTaskInfo) {
        logD("onTaskClosing for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId)
        val desktopRepository: DesktopRepository =
            desktopUserRepositories.getProfile(taskInfo.userId)
        if (!desktopRepository.isActiveTask(taskInfo.taskId)) return
@@ -104,4 +116,12 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser

    private fun isFreeformTask(taskInfo: RunningTaskInfo): Boolean =
        taskInfo.windowingMode == WINDOWING_MODE_FREEFORM

    private fun logD(msg: String, vararg arguments: Any?) {
        ProtoLog.d(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
    }

    companion object {
        private const val TAG = "DesktopTaskChangeListener"
    }
}