Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +3 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,9 @@ class DesktopRepository( fun setActiveDesk(displayId: Int, deskId: Int) { logD("setActiveDesk for displayId=%d and deskId=%d", displayId, deskId) val oldActiveDeskId = desktopData.getActiveDesk(displayId)?.deskId ?: INVALID_DESK_ID if (deskId == INVALID_DESK_ID || deskId == oldActiveDeskId) { return } desktopData.setActiveDesk(displayId = displayId, deskId = deskId) deskChangeListeners.forEach { (listener, executor) -> executor.execute { Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt +25 −5 Original line number Diff line number Diff line Loading @@ -2093,6 +2093,25 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { assertThat(lastActivationChange.newActive).isEqualTo(2) } @Test @EnableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun setDeskActive_alreadyActive_doesNotUpdateListenerTwice() { val listener = TestDeskChangeListener() val executor = TestShellExecutor() repo.addDeskChangeListener(listener, executor) repo.addDesk(displayId = 1, deskId = 1) repo.setActiveDesk(displayId = 1, deskId = 1) repo.setActiveDesk(displayId = 1, deskId = 1) executor.flushAll() assertThat(listener.activationChanges.size).isEqualTo(1) val lastActivationChange = assertNotNull(listener.lastActivationChange) assertThat(lastActivationChange.displayId).isEqualTo(1) assertThat(lastActivationChange.oldActive).isEqualTo(-1) assertThat(lastActivationChange.newActive).isEqualTo(1) } @Test @EnableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun setDeskInactive_updatesListener() { Loading Loading @@ -2142,8 +2161,9 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { var lastRemoval: LastRemoval? = null private set var lastActivationChange: LastActivationChange? = null private set val activationChanges = mutableListOf<ActivationChange>() val lastActivationChange: ActivationChange? get() = activationChanges.lastOrNull() var lastCanCreateDesks: Boolean? = null private set Loading @@ -2161,8 +2181,8 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { newActiveDeskId: Int, oldActiveDeskId: Int, ) { lastActivationChange = LastActivationChange( activationChanges += ActivationChange( displayId = displayId, oldActive = oldActiveDeskId, newActive = newActiveDeskId, Loading @@ -2177,7 +2197,7 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { data class LastRemoval(val displayId: Int, val deskId: Int) data class LastActivationChange(val displayId: Int, val oldActive: Int, val newActive: Int) data class ActivationChange(val displayId: Int, val oldActive: Int, val newActive: Int) } class TestListener : DesktopRepository.ActiveTasksListener { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +3 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,9 @@ class DesktopRepository( fun setActiveDesk(displayId: Int, deskId: Int) { logD("setActiveDesk for displayId=%d and deskId=%d", displayId, deskId) val oldActiveDeskId = desktopData.getActiveDesk(displayId)?.deskId ?: INVALID_DESK_ID if (deskId == INVALID_DESK_ID || deskId == oldActiveDeskId) { return } desktopData.setActiveDesk(displayId = displayId, deskId = deskId) deskChangeListeners.forEach { (listener, executor) -> executor.execute { Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt +25 −5 Original line number Diff line number Diff line Loading @@ -2093,6 +2093,25 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { assertThat(lastActivationChange.newActive).isEqualTo(2) } @Test @EnableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun setDeskActive_alreadyActive_doesNotUpdateListenerTwice() { val listener = TestDeskChangeListener() val executor = TestShellExecutor() repo.addDeskChangeListener(listener, executor) repo.addDesk(displayId = 1, deskId = 1) repo.setActiveDesk(displayId = 1, deskId = 1) repo.setActiveDesk(displayId = 1, deskId = 1) executor.flushAll() assertThat(listener.activationChanges.size).isEqualTo(1) val lastActivationChange = assertNotNull(listener.lastActivationChange) assertThat(lastActivationChange.displayId).isEqualTo(1) assertThat(lastActivationChange.oldActive).isEqualTo(-1) assertThat(lastActivationChange.newActive).isEqualTo(1) } @Test @EnableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun setDeskInactive_updatesListener() { Loading Loading @@ -2142,8 +2161,9 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { var lastRemoval: LastRemoval? = null private set var lastActivationChange: LastActivationChange? = null private set val activationChanges = mutableListOf<ActivationChange>() val lastActivationChange: ActivationChange? get() = activationChanges.lastOrNull() var lastCanCreateDesks: Boolean? = null private set Loading @@ -2161,8 +2181,8 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { newActiveDeskId: Int, oldActiveDeskId: Int, ) { lastActivationChange = LastActivationChange( activationChanges += ActivationChange( displayId = displayId, oldActive = oldActiveDeskId, newActive = newActiveDeskId, Loading @@ -2177,7 +2197,7 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() { data class LastRemoval(val displayId: Int, val deskId: Int) data class LastActivationChange(val displayId: Int, val oldActive: Int, val newActive: Int) data class ActivationChange(val displayId: Int, val oldActive: Int, val newActive: Int) } class TestListener : DesktopRepository.ActiveTasksListener { Loading