diff options
| author | 2023-02-09 10:50:29 -0800 | |
|---|---|---|
| committer | 2023-02-10 10:24:19 -0800 | |
| commit | 16534ddb08ccd40e8c823147ae52afc544506473 (patch) | |
| tree | 3842f5152e2aeb5b040f1a85fbf55c52d833cd01 | |
| parent | d648d08442f18ddb02a47018d7ebcdc0a6880486 (diff) | |
Remove shell transition animations when showDesktopApps is called
This is used when tapping on desktop in recents.
The current shell transitions do not look good in this case. We likely
need some new animation that works well here.
Setting the transition type to NONE right now which looks better than
with the TO_FRONT animation.
Bug: 267364407
Test: atest DesktopModeControllerTest DesktopTasksControllerTest
Change-Id: Ie945b19a7bca931169403e9642b5cbf2df5bda22
4 files changed, 27 insertions, 15 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java index a839a230ea6f..4016ae972ef2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java @@ -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; @@ -255,10 +256,13 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll // Bring apps to front, ignoring their visibility status to always ensure they are on top. WindowContainerTransaction wct = bringDesktopAppsToFront(true /* ignoreVisibility */); - if (Transitions.ENABLE_SHELL_TRANSITIONS) { - mTransitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */); - } else { - mShellTaskOrganizer.applyTransaction(wct); + if (!wct.isEmpty()) { + if (Transitions.ENABLE_SHELL_TRANSITIONS) { + // TODO(b/268662477): add animation for the transition + mTransitions.startTransition(TRANSIT_NONE, wct, null /* handler */); + } else { + mShellTaskOrganizer.applyTransaction(wct); + } } } 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 23033253eaf9..fce013837f01 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 @@ -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 @@ -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) } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java index 7997a7ed7f7f..43f8f7b074bf 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java @@ -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; @@ -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()); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt index f16beeed57a3..95e78a8b7bcc 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt @@ -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 @@ -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 @@ -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) @@ -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) @@ -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) @@ -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) } @@ -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) } @@ -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) @@ -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) } @@ -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()) } |