Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt +10 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Region import android.util.ArrayMap import android.util.ArraySet import android.util.SparseArray import android.view.Display.INVALID_DISPLAY import androidx.core.util.forEach import androidx.core.util.keyIterator import androidx.core.util.valueIterator Loading Loading @@ -226,6 +227,14 @@ class DesktopModeTaskRepository { displayData[otherDisplayId].visibleTasks.size) } } } else if (displayId == INVALID_DISPLAY) { // Task has vanished. Check which display to remove the task from. displayData.forEach { displayId, data -> if (data.visibleTasks.remove(taskId)) { notifyVisibleTaskListeners(displayId, data.visibleTasks.size) } } return } val prevCount = getVisibleTaskCount(displayId) Loading @@ -236,6 +245,7 @@ class DesktopModeTaskRepository { } val newCount = getVisibleTaskCount(displayId) // Check if count changed if (prevCount != newCount) { KtProtoLog.d( WM_SHELL_DESKTOP_MODE, Loading @@ -244,10 +254,6 @@ class DesktopModeTaskRepository { visible, displayId ) } // Check if count changed if (prevCount != newCount) { KtProtoLog.d( WM_SHELL_DESKTOP_MODE, "DesktopTaskRepo: visibleTaskCount has changed from %d to %d", Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt +22 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.desktopmode import android.testing.AndroidTestingRunner import android.view.Display.DEFAULT_DISPLAY import android.view.Display.INVALID_DISPLAY import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase import com.android.wm.shell.TestShellExecutor Loading Loading @@ -237,6 +238,27 @@ class DesktopModeTaskRepositoryTest : ShellTestCase() { assertThat(listener.visibleChangesOnDefaultDisplay).isEqualTo(4) } /** * When a task vanishes, the displayId of the task is set to INVALID_DISPLAY. * This tests that task is removed from the last parent display when it vanishes. */ @Test fun updateVisibleFreeformTasks_removeVisibleTasksRemovesTaskWithInvalidDisplay() { val listener = TestVisibilityListener() val executor = TestShellExecutor() repo.addVisibleTasksListener(listener, executor) repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 1, visible = true) repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 2, visible = true) executor.flushAll() assertThat(listener.visibleTasksCountOnDefaultDisplay).isEqualTo(2) repo.updateVisibleFreeformTasks(INVALID_DISPLAY, taskId = 1, visible = false) executor.flushAll() assertThat(listener.visibleChangesOnDefaultDisplay).isEqualTo(3) assertThat(listener.visibleTasksCountOnDefaultDisplay).isEqualTo(1) } @Test fun getVisibleTaskCount() { // No tasks, count is 0 Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt +10 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Region import android.util.ArrayMap import android.util.ArraySet import android.util.SparseArray import android.view.Display.INVALID_DISPLAY import androidx.core.util.forEach import androidx.core.util.keyIterator import androidx.core.util.valueIterator Loading Loading @@ -226,6 +227,14 @@ class DesktopModeTaskRepository { displayData[otherDisplayId].visibleTasks.size) } } } else if (displayId == INVALID_DISPLAY) { // Task has vanished. Check which display to remove the task from. displayData.forEach { displayId, data -> if (data.visibleTasks.remove(taskId)) { notifyVisibleTaskListeners(displayId, data.visibleTasks.size) } } return } val prevCount = getVisibleTaskCount(displayId) Loading @@ -236,6 +245,7 @@ class DesktopModeTaskRepository { } val newCount = getVisibleTaskCount(displayId) // Check if count changed if (prevCount != newCount) { KtProtoLog.d( WM_SHELL_DESKTOP_MODE, Loading @@ -244,10 +254,6 @@ class DesktopModeTaskRepository { visible, displayId ) } // Check if count changed if (prevCount != newCount) { KtProtoLog.d( WM_SHELL_DESKTOP_MODE, "DesktopTaskRepo: visibleTaskCount has changed from %d to %d", Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt +22 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.desktopmode import android.testing.AndroidTestingRunner import android.view.Display.DEFAULT_DISPLAY import android.view.Display.INVALID_DISPLAY import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase import com.android.wm.shell.TestShellExecutor Loading Loading @@ -237,6 +238,27 @@ class DesktopModeTaskRepositoryTest : ShellTestCase() { assertThat(listener.visibleChangesOnDefaultDisplay).isEqualTo(4) } /** * When a task vanishes, the displayId of the task is set to INVALID_DISPLAY. * This tests that task is removed from the last parent display when it vanishes. */ @Test fun updateVisibleFreeformTasks_removeVisibleTasksRemovesTaskWithInvalidDisplay() { val listener = TestVisibilityListener() val executor = TestShellExecutor() repo.addVisibleTasksListener(listener, executor) repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 1, visible = true) repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 2, visible = true) executor.flushAll() assertThat(listener.visibleTasksCountOnDefaultDisplay).isEqualTo(2) repo.updateVisibleFreeformTasks(INVALID_DISPLAY, taskId = 1, visible = false) executor.flushAll() assertThat(listener.visibleChangesOnDefaultDisplay).isEqualTo(3) assertThat(listener.visibleTasksCountOnDefaultDisplay).isEqualTo(1) } @Test fun getVisibleTaskCount() { // No tasks, count is 0 Loading