Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java +8 −4 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_NONE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_TO_FRONT; Loading Loading @@ -256,12 +257,15 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll WindowContainerTransaction wct = new WindowContainerTransaction(); bringDesktopAppsToFront(wct); if (!wct.isEmpty()) { if (Transitions.ENABLE_SHELL_TRANSITIONS) { mTransitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */); // TODO(b/268662477): add animation for the transition mTransitions.startTransition(TRANSIT_NONE, wct, null /* handler */); } else { mShellTaskOrganizer.applyTransaction(wct); } } } /** Get number of tasks that are marked as visible */ int getVisibleTaskCount() { Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +3 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.Context import android.os.IBinder import android.view.SurfaceControl import android.view.WindowManager.TRANSIT_CHANGE import android.view.WindowManager.TRANSIT_NONE import android.view.WindowManager.TRANSIT_OPEN import android.view.WindowManager.TRANSIT_TO_FRONT import android.window.TransitionInfo Loading Loading @@ -89,7 +90,8 @@ class DesktopTasksController( // Execute transaction if there are pending operations if (!wct.isEmpty) { if (Transitions.ENABLE_SHELL_TRANSITIONS) { transitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */) // TODO(b/268662477): add animation for the transition transitions.startTransition(TRANSIT_NONE, wct, null /* handler */) } else { shellTaskOrganizer.applyTransaction(wct) } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManager.TRANSIT_NONE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REORDER; Loading Loading @@ -446,7 +447,7 @@ public class DesktopModeControllerTest extends ShellTestCase { final ArgumentCaptor<WindowContainerTransaction> arg = ArgumentCaptor.forClass( WindowContainerTransaction.class); if (Transitions.ENABLE_SHELL_TRANSITIONS) { verify(mTransitions).startTransition(eq(TRANSIT_TO_FRONT), arg.capture(), any()); verify(mTransitions).startTransition(eq(TRANSIT_NONE), arg.capture(), any()); } else { verify(mShellTaskOrganizer).applyTransaction(arg.capture()); } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +14 −9 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED import android.os.Binder import android.testing.AndroidTestingRunner import android.view.WindowManager import android.view.WindowManager.TRANSIT_CHANGE import android.view.WindowManager.TRANSIT_NONE import android.view.WindowManager.TRANSIT_OPEN import android.view.WindowManager.TRANSIT_TO_FRONT import android.window.TransitionRequestInfo Loading Loading @@ -55,6 +57,7 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.eq import org.mockito.ArgumentMatchers.isNull import org.mockito.Mock import org.mockito.Mockito Loading Loading @@ -141,7 +144,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(3) // Expect order to be from bottom: home, task1, task2 wct.assertReorderAt(index = 0, homeTask) Loading @@ -159,7 +162,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(3) // Expect order to be from bottom: home, task1, task2 wct.assertReorderAt(index = 0, homeTask) Loading @@ -177,7 +180,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(3) // Expect order to be from bottom: home, task1, task2 wct.assertReorderAt(index = 0, homeTask) Loading @@ -191,7 +194,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(1) wct.assertReorderAt(index = 0, homeTask) } Loading Loading @@ -221,7 +224,7 @@ class DesktopTasksControllerTest : ShellTestCase() { fun moveToDesktop() { val task = setUpFullscreenTask() controller.moveToDesktop(task) val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_CHANGE) assertThat(wct.changes[task.token.asBinder()]?.windowingMode) .isEqualTo(WINDOWING_MODE_FREEFORM) } Loading @@ -241,7 +244,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.moveToDesktop(fullscreenTask) with(getLatestWct()) { with(getLatestWct(expectTransition = TRANSIT_CHANGE)) { assertThat(hierarchyOps).hasSize(3) assertReorderSequence(homeTask, freeformTask, fullscreenTask) assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode) Loading @@ -253,7 +256,7 @@ class DesktopTasksControllerTest : ShellTestCase() { fun moveToFullscreen() { val task = setUpFreeformTask() controller.moveToFullscreen(task) val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_CHANGE) assertThat(wct.changes[task.token.asBinder()]?.windowingMode) .isEqualTo(WINDOWING_MODE_FULLSCREEN) } Loading Loading @@ -415,10 +418,12 @@ class DesktopTasksControllerTest : ShellTestCase() { desktopModeTaskRepository.updateVisibleFreeformTasks(task.taskId, visible = false) } private fun getLatestWct(): WindowContainerTransaction { private fun getLatestWct( @WindowManager.TransitionType expectTransition: Int = TRANSIT_OPEN ): WindowContainerTransaction { val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java) if (ENABLE_SHELL_TRANSITIONS) { verify(transitions).startTransition(anyInt(), arg.capture(), isNull()) verify(transitions).startTransition(eq(expectTransition), arg.capture(), isNull()) } else { verify(shellTaskOrganizer).applyTransaction(arg.capture()) } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java +8 −4 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_NONE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_TO_FRONT; Loading Loading @@ -256,12 +257,15 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll WindowContainerTransaction wct = new WindowContainerTransaction(); bringDesktopAppsToFront(wct); if (!wct.isEmpty()) { if (Transitions.ENABLE_SHELL_TRANSITIONS) { mTransitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */); // TODO(b/268662477): add animation for the transition mTransitions.startTransition(TRANSIT_NONE, wct, null /* handler */); } else { mShellTaskOrganizer.applyTransaction(wct); } } } /** Get number of tasks that are marked as visible */ int getVisibleTaskCount() { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +3 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.Context import android.os.IBinder import android.view.SurfaceControl import android.view.WindowManager.TRANSIT_CHANGE import android.view.WindowManager.TRANSIT_NONE import android.view.WindowManager.TRANSIT_OPEN import android.view.WindowManager.TRANSIT_TO_FRONT import android.window.TransitionInfo Loading Loading @@ -89,7 +90,8 @@ class DesktopTasksController( // Execute transaction if there are pending operations if (!wct.isEmpty) { if (Transitions.ENABLE_SHELL_TRANSITIONS) { transitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */) // TODO(b/268662477): add animation for the transition transitions.startTransition(TRANSIT_NONE, wct, null /* handler */) } else { shellTaskOrganizer.applyTransaction(wct) } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManager.TRANSIT_NONE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REORDER; Loading Loading @@ -446,7 +447,7 @@ public class DesktopModeControllerTest extends ShellTestCase { final ArgumentCaptor<WindowContainerTransaction> arg = ArgumentCaptor.forClass( WindowContainerTransaction.class); if (Transitions.ENABLE_SHELL_TRANSITIONS) { verify(mTransitions).startTransition(eq(TRANSIT_TO_FRONT), arg.capture(), any()); verify(mTransitions).startTransition(eq(TRANSIT_NONE), arg.capture(), any()); } else { verify(mShellTaskOrganizer).applyTransaction(arg.capture()); } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +14 −9 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED import android.os.Binder import android.testing.AndroidTestingRunner import android.view.WindowManager import android.view.WindowManager.TRANSIT_CHANGE import android.view.WindowManager.TRANSIT_NONE import android.view.WindowManager.TRANSIT_OPEN import android.view.WindowManager.TRANSIT_TO_FRONT import android.window.TransitionRequestInfo Loading Loading @@ -55,6 +57,7 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.eq import org.mockito.ArgumentMatchers.isNull import org.mockito.Mock import org.mockito.Mockito Loading Loading @@ -141,7 +144,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(3) // Expect order to be from bottom: home, task1, task2 wct.assertReorderAt(index = 0, homeTask) Loading @@ -159,7 +162,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(3) // Expect order to be from bottom: home, task1, task2 wct.assertReorderAt(index = 0, homeTask) Loading @@ -177,7 +180,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(3) // Expect order to be from bottom: home, task1, task2 wct.assertReorderAt(index = 0, homeTask) Loading @@ -191,7 +194,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.showDesktopApps() val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE) assertThat(wct.hierarchyOps).hasSize(1) wct.assertReorderAt(index = 0, homeTask) } Loading Loading @@ -221,7 +224,7 @@ class DesktopTasksControllerTest : ShellTestCase() { fun moveToDesktop() { val task = setUpFullscreenTask() controller.moveToDesktop(task) val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_CHANGE) assertThat(wct.changes[task.token.asBinder()]?.windowingMode) .isEqualTo(WINDOWING_MODE_FREEFORM) } Loading @@ -241,7 +244,7 @@ class DesktopTasksControllerTest : ShellTestCase() { controller.moveToDesktop(fullscreenTask) with(getLatestWct()) { with(getLatestWct(expectTransition = TRANSIT_CHANGE)) { assertThat(hierarchyOps).hasSize(3) assertReorderSequence(homeTask, freeformTask, fullscreenTask) assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode) Loading @@ -253,7 +256,7 @@ class DesktopTasksControllerTest : ShellTestCase() { fun moveToFullscreen() { val task = setUpFreeformTask() controller.moveToFullscreen(task) val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_CHANGE) assertThat(wct.changes[task.token.asBinder()]?.windowingMode) .isEqualTo(WINDOWING_MODE_FULLSCREEN) } Loading Loading @@ -415,10 +418,12 @@ class DesktopTasksControllerTest : ShellTestCase() { desktopModeTaskRepository.updateVisibleFreeformTasks(task.taskId, visible = false) } private fun getLatestWct(): WindowContainerTransaction { private fun getLatestWct( @WindowManager.TransitionType expectTransition: Int = TRANSIT_OPEN ): WindowContainerTransaction { val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java) if (ENABLE_SHELL_TRANSITIONS) { verify(transitions).startTransition(anyInt(), arg.capture(), isNull()) verify(transitions).startTransition(eq(expectTransition), arg.capture(), isNull()) } else { verify(shellTaskOrganizer).applyTransaction(arg.capture()) } Loading