From 73a525b6468f13c03b23ce595c5bbc3174f2a3ab Mon Sep 17 00:00:00 2001 From: Shan Huang Date: Fri, 17 Jun 2022 17:57:48 -0700 Subject: [PATCH] Sync BackAnimationControllerTest on master to the version on tm-dev. The file has diverged quite a bit and is causing merge headaches for ag/18961750. The updated version is copied verbatim from ToT tm-dev libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java. Test: atest BackAnimationControllerTest Bug: 236431156 Change-Id: Ia6fdbef2236c0f49ff66b5e9d48de0db0599f8db --- .../back/BackAnimationControllerTest.java | 106 ++++++++---------- 1 file changed, 44 insertions(+), 62 deletions(-) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java index 4bcf37a8513c3..fcfcbfa091db1 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java @@ -77,7 +77,6 @@ import org.mockito.MockitoAnnotations; public class BackAnimationControllerTest { private static final String ANIMATION_ENABLED = "1"; - private final TestShellExecutor mShellExecutor = new TestShellExecutor(); @Rule @@ -184,7 +183,8 @@ public class BackAnimationControllerTest { // b/207481538, we check that the surface is not moved for now, we can re-enable this once // we implement the animation verify(mTransaction, never()).setScale(eq(screenshotSurface), anyInt(), anyInt()); - verify(mTransaction, never()).setPosition(animationTarget.leash, 100, 100); + verify(mTransaction, never()).setPosition( + animationTarget.leash, 100, 100); verify(mTransaction, atLeastOnce()).apply(); } @@ -218,11 +218,8 @@ public class BackAnimationControllerTest { // Check that back start and progress is dispatched when first move. doMotionEvent(MotionEvent.ACTION_MOVE, 100); verify(mIOnBackInvokedCallback).onBackStarted(); - - // Check that back progress is dispatched. - doMotionEvent(MotionEvent.ACTION_MOVE, 100); ArgumentCaptor backEventCaptor = ArgumentCaptor.forClass(BackEvent.class); - verify(mIOnBackInvokedCallback, atLeastOnce()).onBackProgressed(backEventCaptor.capture()); + verify(mIOnBackInvokedCallback).onBackProgressed(backEventCaptor.capture()); assertEquals(animationTarget, backEventCaptor.getValue().getDepartingAnimationTarget()); // Check that back invocation is dispatched. @@ -231,62 +228,6 @@ public class BackAnimationControllerTest { verify(mIOnBackInvokedCallback).onBackInvoked(); } - @Test - public void ignoresGesture_transitionInProgress() throws RemoteException { - mController.setBackToLauncherCallback(mIOnBackInvokedCallback); - RemoteAnimationTarget animationTarget = createAnimationTarget(); - createNavigationInfo(animationTarget, null, null, - BackNavigationInfo.TYPE_RETURN_TO_HOME, null); - - triggerBackGesture(); - // Check that back invocation is dispatched. - verify(mIOnBackInvokedCallback).onBackInvoked(); - - reset(mIOnBackInvokedCallback); - // Verify that we prevent animation from restarting if another gestures happens before - // the previous transition is finished. - mController.onMotionEvent( - MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0), - MotionEvent.ACTION_DOWN, - BackEvent.EDGE_LEFT); - verifyNoMoreInteractions(mIOnBackInvokedCallback); - - // Verify that we start accepting gestures again once transition finishes. - mController.onBackToLauncherAnimationFinished(); - mController.onMotionEvent( - MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0), - MotionEvent.ACTION_DOWN, - BackEvent.EDGE_LEFT); - mController.onMotionEvent( - MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE, 100, 100, 0), - MotionEvent.ACTION_MOVE, - BackEvent.EDGE_LEFT); - verify(mIOnBackInvokedCallback).onBackStarted(); - } - - @Test - public void acceptsGesture_transitionTimeout() throws RemoteException { - mController.setBackToLauncherCallback(mIOnBackInvokedCallback); - RemoteAnimationTarget animationTarget = createAnimationTarget(); - createNavigationInfo(animationTarget, null, null, - BackNavigationInfo.TYPE_RETURN_TO_HOME, null); - - triggerBackGesture(); - reset(mIOnBackInvokedCallback); - - // Simulate transition timeout. - mShellExecutor.flushAll(); - mController.onMotionEvent( - MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0), - MotionEvent.ACTION_DOWN, - BackEvent.EDGE_LEFT); - mController.onMotionEvent( - MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE, 100, 100, 0), - MotionEvent.ACTION_MOVE, - BackEvent.EDGE_LEFT); - verify(mIOnBackInvokedCallback).onBackStarted(); - } - @Test public void animationDisabledFromSettings() throws RemoteException { // Toggle the setting off @@ -314,6 +255,47 @@ public class BackAnimationControllerTest { verify(mIOnBackInvokedCallback, never()).onBackInvoked(); } + @Test + public void ignoresGesture_transitionInProgress() throws RemoteException { + mController.setBackToLauncherCallback(mIOnBackInvokedCallback); + RemoteAnimationTarget animationTarget = createAnimationTarget(); + createNavigationInfo(animationTarget, null, null, + BackNavigationInfo.TYPE_RETURN_TO_HOME, null); + + triggerBackGesture(); + // Check that back invocation is dispatched. + verify(mIOnBackInvokedCallback).onBackInvoked(); + + reset(mIOnBackInvokedCallback); + // Verify that we prevent animation from restarting if another gestures happens before + // the previous transition is finished. + doMotionEvent(MotionEvent.ACTION_DOWN, 0); + verifyNoMoreInteractions(mIOnBackInvokedCallback); + + // Verify that we start accepting gestures again once transition finishes. + mController.onBackToLauncherAnimationFinished(); + doMotionEvent(MotionEvent.ACTION_DOWN, 0); + doMotionEvent(MotionEvent.ACTION_MOVE, 100); + verify(mIOnBackInvokedCallback).onBackStarted(); + } + + @Test + public void acceptsGesture_transitionTimeout() throws RemoteException { + mController.setBackToLauncherCallback(mIOnBackInvokedCallback); + RemoteAnimationTarget animationTarget = createAnimationTarget(); + createNavigationInfo(animationTarget, null, null, + BackNavigationInfo.TYPE_RETURN_TO_HOME, null); + + triggerBackGesture(); + reset(mIOnBackInvokedCallback); + + // Simulate transition timeout. + mShellExecutor.flushAll(); + doMotionEvent(MotionEvent.ACTION_DOWN, 0); + doMotionEvent(MotionEvent.ACTION_MOVE, 100); + verify(mIOnBackInvokedCallback).onBackStarted(); + } + private void doMotionEvent(int actionDown, int coordinate) { mController.onMotionEvent( MotionEvent.obtain(0, mEventTime, actionDown, coordinate, coordinate, 0),