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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user