Loading libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java +0 −5 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import static android.window.TransitionInfo.FLAG_TRANSLUCENT; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_NOT_RUNNING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED; import static com.android.wm.shell.shared.ShellSharedConstants.KEY_EXTRA_SHELL_CAN_HAND_OFF_ANIMATION; import static com.android.wm.shell.shared.split.SplitBounds.KEY_EXTRA_SPLIT_BOUNDS; import static com.android.wm.shell.transition.Transitions.TRANSIT_END_RECENTS_TRANSITION; Loading Loading @@ -1572,10 +1571,6 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, } } for (int i = 0; i < mStateListeners.size(); i++) { mStateListeners.get(i).onTransitionStateChanged(TRANSITION_STATE_STOP_REQUESTED); } // Notify the mixers of the pending finish for (int i = 0; i < mMixers.size(); ++i) { mMixers.get(i).handleFinishRecents(returningToApp, wct, t); Loading libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionStateListener.java +0 −8 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ public interface RecentsTransitionStateListener { TRANSITION_STATE_NOT_RUNNING, TRANSITION_STATE_REQUESTED, TRANSITION_STATE_ANIMATING, TRANSITION_STATE_STOP_REQUESTED, }) @Retention(RetentionPolicy.SOURCE) @interface RecentsTransitionState {} Loading @@ -36,7 +35,6 @@ public interface RecentsTransitionStateListener { int TRANSITION_STATE_NOT_RUNNING = 1; int TRANSITION_STATE_REQUESTED = 2; int TRANSITION_STATE_ANIMATING = 3; int TRANSITION_STATE_STOP_REQUESTED = 4; /** Notifies whether the recents transition state changes. */ default void onTransitionStateChanged(@RecentsTransitionState int state) { Loading @@ -52,18 +50,12 @@ public interface RecentsTransitionStateListener { return state >= TRANSITION_STATE_ANIMATING; } /** Returns whether the recents transition has been requested to stop and is finishing up. */ static boolean isFinishing(@RecentsTransitionState int state) { return state == TRANSITION_STATE_STOP_REQUESTED || state == TRANSITION_STATE_NOT_RUNNING; } /** Returns a string representation of the given state. */ static String stateToString(@RecentsTransitionState int state) { return switch (state) { case TRANSITION_STATE_NOT_RUNNING -> "TRANSITION_STATE_NOT_RUNNING"; case TRANSITION_STATE_REQUESTED -> "TRANSITION_STATE_REQUESTED"; case TRANSITION_STATE_ANIMATING -> "TRANSITION_STATE_ANIMATING"; case TRANSITION_STATE_STOP_REQUESTED -> "TRANSITION_STATE_STOP_REQUESTED"; default -> "UNKNOWN"; }; } Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +3 −13 Original line number Diff line number Diff line Loading @@ -2003,21 +2003,11 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, setIsRecentsTransitionRunningForTask(taskId, true); } return; case RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED: if (DesktopModeFlags.ENABLE_INPUT_LAYER_TRANSITION_FIX.isTrue()) { // No Recents transition running - clean up window decorations for (int taskId : mAnimatingTaskIds) { setIsRecentsTransitionRunningForTask(taskId, false); } } return; case RecentsTransitionStateListener.TRANSITION_STATE_NOT_RUNNING: if (!DesktopModeFlags.ENABLE_INPUT_LAYER_TRANSITION_FIX.isTrue()) { // No Recents transition running - clean up window decorations for (int taskId : mAnimatingTaskIds) { setIsRecentsTransitionRunningForTask(taskId, false); } } mAnimatingTaskIds.clear(); return; default: Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java +12 −21 Original line number Diff line number Diff line Loading @@ -28,14 +28,12 @@ import static com.android.wm.shell.Flags.FLAG_ENABLE_RECENTS_BOOKEND_TRANSITION; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_NOT_RUNNING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED; import static com.android.wm.shell.transition.Transitions.TRANSIT_END_RECENTS_TRANSITION; import static com.android.wm.shell.transition.Transitions.TRANSIT_START_RECENTS_TRANSITION; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; Loading Loading @@ -92,8 +90,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** Loading Loading @@ -223,7 +219,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { startRecentsTransition(/* synthetic= */ false); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_REQUESTED); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_REQUESTED); } @Test Loading @@ -237,7 +233,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { mock(Transitions.TransitionFinishCallback.class)); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_ANIMATING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_ANIMATING); } @Test Loading @@ -253,8 +249,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { false /* sendUserLeaveHint */, mock(IResultReceiver.class)); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertTrue(listener.didStateGetProcessed(TRANSITION_STATE_STOP_REQUESTED)); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading @@ -266,7 +261,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { mRecentsTransitionHandler.findController(transition).cancel("test"); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading @@ -277,7 +272,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { startRecentsTransition(/* synthetic= */ true); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_ANIMATING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_ANIMATING); } @Test Loading @@ -290,7 +285,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { false /* sendUserLeaveHint */, mock(IResultReceiver.class)); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading @@ -302,7 +297,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { mRecentsTransitionHandler.findController(transition).cancel("test"); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading Loading @@ -483,21 +478,17 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { } private static class TestTransitionStateListener implements RecentsTransitionStateListener { private final List<Integer> mProcessedStates = new ArrayList<>(TRANSITION_STATE_NOT_RUNNING); @RecentsTransitionState private int mState = TRANSITION_STATE_NOT_RUNNING; @Override public void onTransitionStateChanged(int state) { mProcessedStates.add(state); mState = state; } @RecentsTransitionState int getLastProcessedState() { return mProcessedStates.getLast(); } boolean didStateGetProcessed(int state) { return mProcessedStates.contains(state); int getState() { return mState; } } } libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +0 −16 Original line number Diff line number Diff line Loading @@ -1231,7 +1231,6 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX) @DisableFlags(Flags.FLAG_ENABLE_INPUT_LAYER_TRANSITION_FIX) fun testRecentsTransitionStateListener_nonRunningState_setsTransitionNotRunning() { val task = createTask(windowingMode = WINDOWING_MODE_FREEFORM) val decoration = setUpMockDecorationForTask(task) Loading @@ -1245,21 +1244,6 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest verify(decoration).setIsRecentsTransitionRunning(false) } @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX, Flags.FLAG_ENABLE_INPUT_LAYER_TRANSITION_FIX) fun testRecentsTransitionStateListener_nonRunningState_setsTransitionStopRequested() { val task = createTask(windowingMode = WINDOWING_MODE_FREEFORM) val decoration = setUpMockDecorationForTask(task) onTaskOpening(task, SurfaceControl()) desktopModeRecentsTransitionStateListener.onTransitionStateChanged( RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED) desktopModeRecentsTransitionStateListener.onTransitionStateChanged( RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED) verify(decoration).setIsRecentsTransitionRunning(false) } @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX) fun testRecentsTransitionStateListener_requestedAndAnimating_setsTransitionRunningOnce() { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java +0 −5 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import static android.window.TransitionInfo.FLAG_TRANSLUCENT; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_NOT_RUNNING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED; import static com.android.wm.shell.shared.ShellSharedConstants.KEY_EXTRA_SHELL_CAN_HAND_OFF_ANIMATION; import static com.android.wm.shell.shared.split.SplitBounds.KEY_EXTRA_SPLIT_BOUNDS; import static com.android.wm.shell.transition.Transitions.TRANSIT_END_RECENTS_TRANSITION; Loading Loading @@ -1572,10 +1571,6 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler, } } for (int i = 0; i < mStateListeners.size(); i++) { mStateListeners.get(i).onTransitionStateChanged(TRANSITION_STATE_STOP_REQUESTED); } // Notify the mixers of the pending finish for (int i = 0; i < mMixers.size(); ++i) { mMixers.get(i).handleFinishRecents(returningToApp, wct, t); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionStateListener.java +0 −8 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ public interface RecentsTransitionStateListener { TRANSITION_STATE_NOT_RUNNING, TRANSITION_STATE_REQUESTED, TRANSITION_STATE_ANIMATING, TRANSITION_STATE_STOP_REQUESTED, }) @Retention(RetentionPolicy.SOURCE) @interface RecentsTransitionState {} Loading @@ -36,7 +35,6 @@ public interface RecentsTransitionStateListener { int TRANSITION_STATE_NOT_RUNNING = 1; int TRANSITION_STATE_REQUESTED = 2; int TRANSITION_STATE_ANIMATING = 3; int TRANSITION_STATE_STOP_REQUESTED = 4; /** Notifies whether the recents transition state changes. */ default void onTransitionStateChanged(@RecentsTransitionState int state) { Loading @@ -52,18 +50,12 @@ public interface RecentsTransitionStateListener { return state >= TRANSITION_STATE_ANIMATING; } /** Returns whether the recents transition has been requested to stop and is finishing up. */ static boolean isFinishing(@RecentsTransitionState int state) { return state == TRANSITION_STATE_STOP_REQUESTED || state == TRANSITION_STATE_NOT_RUNNING; } /** Returns a string representation of the given state. */ static String stateToString(@RecentsTransitionState int state) { return switch (state) { case TRANSITION_STATE_NOT_RUNNING -> "TRANSITION_STATE_NOT_RUNNING"; case TRANSITION_STATE_REQUESTED -> "TRANSITION_STATE_REQUESTED"; case TRANSITION_STATE_ANIMATING -> "TRANSITION_STATE_ANIMATING"; case TRANSITION_STATE_STOP_REQUESTED -> "TRANSITION_STATE_STOP_REQUESTED"; default -> "UNKNOWN"; }; } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +3 −13 Original line number Diff line number Diff line Loading @@ -2003,21 +2003,11 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, setIsRecentsTransitionRunningForTask(taskId, true); } return; case RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED: if (DesktopModeFlags.ENABLE_INPUT_LAYER_TRANSITION_FIX.isTrue()) { // No Recents transition running - clean up window decorations for (int taskId : mAnimatingTaskIds) { setIsRecentsTransitionRunningForTask(taskId, false); } } return; case RecentsTransitionStateListener.TRANSITION_STATE_NOT_RUNNING: if (!DesktopModeFlags.ENABLE_INPUT_LAYER_TRANSITION_FIX.isTrue()) { // No Recents transition running - clean up window decorations for (int taskId : mAnimatingTaskIds) { setIsRecentsTransitionRunningForTask(taskId, false); } } mAnimatingTaskIds.clear(); return; default: Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentsTransitionHandlerTest.java +12 −21 Original line number Diff line number Diff line Loading @@ -28,14 +28,12 @@ import static com.android.wm.shell.Flags.FLAG_ENABLE_RECENTS_BOOKEND_TRANSITION; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_NOT_RUNNING; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED; import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED; import static com.android.wm.shell.transition.Transitions.TRANSIT_END_RECENTS_TRANSITION; import static com.android.wm.shell.transition.Transitions.TRANSIT_START_RECENTS_TRANSITION; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; Loading Loading @@ -92,8 +90,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** Loading Loading @@ -223,7 +219,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { startRecentsTransition(/* synthetic= */ false); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_REQUESTED); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_REQUESTED); } @Test Loading @@ -237,7 +233,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { mock(Transitions.TransitionFinishCallback.class)); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_ANIMATING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_ANIMATING); } @Test Loading @@ -253,8 +249,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { false /* sendUserLeaveHint */, mock(IResultReceiver.class)); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertTrue(listener.didStateGetProcessed(TRANSITION_STATE_STOP_REQUESTED)); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading @@ -266,7 +261,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { mRecentsTransitionHandler.findController(transition).cancel("test"); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading @@ -277,7 +272,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { startRecentsTransition(/* synthetic= */ true); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_ANIMATING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_ANIMATING); } @Test Loading @@ -290,7 +285,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { false /* sendUserLeaveHint */, mock(IResultReceiver.class)); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading @@ -302,7 +297,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { mRecentsTransitionHandler.findController(transition).cancel("test"); mMainExecutor.flushAll(); assertThat(listener.getLastProcessedState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); assertThat(listener.getState()).isEqualTo(TRANSITION_STATE_NOT_RUNNING); } @Test Loading Loading @@ -483,21 +478,17 @@ public class RecentsTransitionHandlerTest extends ShellTestCase { } private static class TestTransitionStateListener implements RecentsTransitionStateListener { private final List<Integer> mProcessedStates = new ArrayList<>(TRANSITION_STATE_NOT_RUNNING); @RecentsTransitionState private int mState = TRANSITION_STATE_NOT_RUNNING; @Override public void onTransitionStateChanged(int state) { mProcessedStates.add(state); mState = state; } @RecentsTransitionState int getLastProcessedState() { return mProcessedStates.getLast(); } boolean didStateGetProcessed(int state) { return mProcessedStates.contains(state); int getState() { return mState; } } }
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +0 −16 Original line number Diff line number Diff line Loading @@ -1231,7 +1231,6 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX) @DisableFlags(Flags.FLAG_ENABLE_INPUT_LAYER_TRANSITION_FIX) fun testRecentsTransitionStateListener_nonRunningState_setsTransitionNotRunning() { val task = createTask(windowingMode = WINDOWING_MODE_FREEFORM) val decoration = setUpMockDecorationForTask(task) Loading @@ -1245,21 +1244,6 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest verify(decoration).setIsRecentsTransitionRunning(false) } @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX, Flags.FLAG_ENABLE_INPUT_LAYER_TRANSITION_FIX) fun testRecentsTransitionStateListener_nonRunningState_setsTransitionStopRequested() { val task = createTask(windowingMode = WINDOWING_MODE_FREEFORM) val decoration = setUpMockDecorationForTask(task) onTaskOpening(task, SurfaceControl()) desktopModeRecentsTransitionStateListener.onTransitionStateChanged( RecentsTransitionStateListener.TRANSITION_STATE_REQUESTED) desktopModeRecentsTransitionStateListener.onTransitionStateChanged( RecentsTransitionStateListener.TRANSITION_STATE_STOP_REQUESTED) verify(decoration).setIsRecentsTransitionRunning(false) } @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX) fun testRecentsTransitionStateListener_requestedAndAnimating_setsTransitionRunningOnce() { Loading