Merge "Remove shell transition animations when showDesktopApps is called" into tm-qpr-dev

This commit is contained in:
Ats Jenk
2023-02-10 21:58:10 +00:00
committed by Android (Google) Code Review
4 changed files with 27 additions and 15 deletions

View File

@@ -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_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.WindowManager.TRANSIT_CHANGE; 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_OPEN;
import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.view.WindowManager.TRANSIT_TO_FRONT;
@@ -256,12 +257,15 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
WindowContainerTransaction wct = new WindowContainerTransaction(); WindowContainerTransaction wct = new WindowContainerTransaction();
bringDesktopAppsToFront(wct); bringDesktopAppsToFront(wct);
if (!wct.isEmpty()) {
if (Transitions.ENABLE_SHELL_TRANSITIONS) { 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 { } else {
mShellTaskOrganizer.applyTransaction(wct); mShellTaskOrganizer.applyTransaction(wct);
} }
} }
}
/** Get number of tasks that are marked as visible */ /** Get number of tasks that are marked as visible */
int getVisibleTaskCount() { int getVisibleTaskCount() {

View File

@@ -27,6 +27,7 @@ import android.content.Context
import android.os.IBinder import android.os.IBinder
import android.view.SurfaceControl import android.view.SurfaceControl
import android.view.WindowManager.TRANSIT_CHANGE import android.view.WindowManager.TRANSIT_CHANGE
import android.view.WindowManager.TRANSIT_NONE
import android.view.WindowManager.TRANSIT_OPEN import android.view.WindowManager.TRANSIT_OPEN
import android.view.WindowManager.TRANSIT_TO_FRONT import android.view.WindowManager.TRANSIT_TO_FRONT
import android.window.TransitionInfo import android.window.TransitionInfo
@@ -89,7 +90,8 @@ class DesktopTasksController(
// Execute transaction if there are pending operations // Execute transaction if there are pending operations
if (!wct.isEmpty) { if (!wct.isEmpty) {
if (Transitions.ENABLE_SHELL_TRANSITIONS) { 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 { } else {
shellTaskOrganizer.applyTransaction(wct) shellTaskOrganizer.applyTransaction(wct)
} }

View File

@@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS; import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS;
import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_CLOSE; 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_OPEN;
import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REORDER; 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( final ArgumentCaptor<WindowContainerTransaction> arg = ArgumentCaptor.forClass(
WindowContainerTransaction.class); WindowContainerTransaction.class);
if (Transitions.ENABLE_SHELL_TRANSITIONS) { 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 { } else {
verify(mShellTaskOrganizer).applyTransaction(arg.capture()); verify(mShellTaskOrganizer).applyTransaction(arg.capture());
} }

View File

@@ -26,6 +26,8 @@ import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED
import android.os.Binder import android.os.Binder
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
import android.view.WindowManager 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_OPEN
import android.view.WindowManager.TRANSIT_TO_FRONT import android.view.WindowManager.TRANSIT_TO_FRONT
import android.window.TransitionRequestInfo import android.window.TransitionRequestInfo
@@ -55,6 +57,7 @@ import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.eq
import org.mockito.ArgumentMatchers.isNull import org.mockito.ArgumentMatchers.isNull
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito import org.mockito.Mockito
@@ -141,7 +144,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
controller.showDesktopApps() controller.showDesktopApps()
val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE)
assertThat(wct.hierarchyOps).hasSize(3) assertThat(wct.hierarchyOps).hasSize(3)
// Expect order to be from bottom: home, task1, task2 // Expect order to be from bottom: home, task1, task2
wct.assertReorderAt(index = 0, homeTask) wct.assertReorderAt(index = 0, homeTask)
@@ -159,7 +162,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
controller.showDesktopApps() controller.showDesktopApps()
val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE)
assertThat(wct.hierarchyOps).hasSize(3) assertThat(wct.hierarchyOps).hasSize(3)
// Expect order to be from bottom: home, task1, task2 // Expect order to be from bottom: home, task1, task2
wct.assertReorderAt(index = 0, homeTask) wct.assertReorderAt(index = 0, homeTask)
@@ -177,7 +180,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
controller.showDesktopApps() controller.showDesktopApps()
val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE)
assertThat(wct.hierarchyOps).hasSize(3) assertThat(wct.hierarchyOps).hasSize(3)
// Expect order to be from bottom: home, task1, task2 // Expect order to be from bottom: home, task1, task2
wct.assertReorderAt(index = 0, homeTask) wct.assertReorderAt(index = 0, homeTask)
@@ -191,7 +194,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
controller.showDesktopApps() controller.showDesktopApps()
val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_NONE)
assertThat(wct.hierarchyOps).hasSize(1) assertThat(wct.hierarchyOps).hasSize(1)
wct.assertReorderAt(index = 0, homeTask) wct.assertReorderAt(index = 0, homeTask)
} }
@@ -221,7 +224,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
fun moveToDesktop() { fun moveToDesktop() {
val task = setUpFullscreenTask() val task = setUpFullscreenTask()
controller.moveToDesktop(task) controller.moveToDesktop(task)
val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_CHANGE)
assertThat(wct.changes[task.token.asBinder()]?.windowingMode) assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
.isEqualTo(WINDOWING_MODE_FREEFORM) .isEqualTo(WINDOWING_MODE_FREEFORM)
} }
@@ -241,7 +244,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
controller.moveToDesktop(fullscreenTask) controller.moveToDesktop(fullscreenTask)
with(getLatestWct()) { with(getLatestWct(expectTransition = TRANSIT_CHANGE)) {
assertThat(hierarchyOps).hasSize(3) assertThat(hierarchyOps).hasSize(3)
assertReorderSequence(homeTask, freeformTask, fullscreenTask) assertReorderSequence(homeTask, freeformTask, fullscreenTask)
assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode) assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
@@ -253,7 +256,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
fun moveToFullscreen() { fun moveToFullscreen() {
val task = setUpFreeformTask() val task = setUpFreeformTask()
controller.moveToFullscreen(task) controller.moveToFullscreen(task)
val wct = getLatestWct() val wct = getLatestWct(expectTransition = TRANSIT_CHANGE)
assertThat(wct.changes[task.token.asBinder()]?.windowingMode) assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
.isEqualTo(WINDOWING_MODE_FULLSCREEN) .isEqualTo(WINDOWING_MODE_FULLSCREEN)
} }
@@ -415,10 +418,12 @@ class DesktopTasksControllerTest : ShellTestCase() {
desktopModeTaskRepository.updateVisibleFreeformTasks(task.taskId, visible = false) 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) val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
if (ENABLE_SHELL_TRANSITIONS) { if (ENABLE_SHELL_TRANSITIONS) {
verify(transitions).startTransition(anyInt(), arg.capture(), isNull()) verify(transitions).startTransition(eq(expectTransition), arg.capture(), isNull())
} else { } else {
verify(shellTaskOrganizer).applyTransaction(arg.capture()) verify(shellTaskOrganizer).applyTransaction(arg.capture())
} }