From 676aaab6c732f11c2c92c05ee50698f275293974 Mon Sep 17 00:00:00 2001 From: Ats Jenk Date: Thu, 1 Jun 2023 17:22:59 -0700 Subject: [PATCH] Update listeners of stashed state after add When a VisibleTasksListener is added to DesktopModeTaskRepository, send an update with the current stashed value. This is in addition to the update on visibility. Launcher will start using the visibility listener for updating its state. Remove the TODO for it. Test: atest DesktopModeTaskRepositoryTest Bug: 280490493 Change-Id: I9d6638a73283f5121599384b80ea84f671bb884b --- .../shell/desktopmode/DesktopModeTaskRepository.kt | 2 ++ .../wm/shell/desktopmode/DesktopTasksController.kt | 13 +++++++++---- .../desktopmode/DesktopModeTaskRepositoryTest.kt | 12 ++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt index 402bb96dc0c07..a966cf960d8e3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt @@ -86,8 +86,10 @@ class DesktopModeTaskRepository { visibleTasksListeners[visibleTasksListener] = executor displayData.keyIterator().forEach { displayId -> val visibleTasks = getVisibleTaskCount(displayId) + val stashed = isStashed(displayId) executor.execute { visibleTasksListener.onVisibilityChanged(displayId, visibleTasks > 0) + visibleTasksListener.onStashedChanged(displayId, stashed) } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index 37cbbcd1853a6..56d2f2f28aeb9 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -742,16 +742,21 @@ class DesktopTasksController( private val listener: VisibleTasksListener = object : VisibleTasksListener { override fun onVisibilityChanged(displayId: Int, visible: Boolean) { - // TODO(b/261234402): move visibility from sysui state to listener + KtProtoLog.v( + WM_SHELL_DESKTOP_MODE, + "IDesktopModeImpl: onVisibilityChanged display=%d visible=%b", + displayId, + visible + ) remoteListener.call { l -> l.onVisibilityChanged(displayId, visible) } } override fun onStashedChanged(displayId: Int, stashed: Boolean) { KtProtoLog.v( WM_SHELL_DESKTOP_MODE, - "IDesktopModeImpl: onStashedChanged stashed=%b display=%d", - stashed, - displayId + "IDesktopModeImpl: onStashedChanged display=%d stashed=%b", + displayId, + stashed ) remoteListener.call { l -> l.onStashedChanged(displayId, stashed) } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt index 17c0463309d71..3fe78efdf2b1b 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt @@ -128,6 +128,18 @@ class DesktopModeTaskRepositoryTest : ShellTestCase() { assertThat(listener.visibleChangesOnDefaultDisplay).isEqualTo(1) } + @Test + fun addListener_notifiesStashed() { + repo.setStashed(DEFAULT_DISPLAY, true) + val listener = TestVisibilityListener() + val executor = TestShellExecutor() + repo.addVisibleTasksListener(listener, executor) + executor.flushAll() + + assertThat(listener.stashedOnDefaultDisplay).isTrue() + assertThat(listener.stashedChangesOnDefaultDisplay).isEqualTo(1) + } + @Test fun addListener_tasksOnDifferentDisplay_doesNotNotify() { repo.updateVisibleFreeformTasks(SECOND_DISPLAY, taskId = 1, visible = true)