diff options
| author | 2024-01-15 11:25:41 +0800 | |
|---|---|---|
| committer | 2024-01-16 11:42:33 +0800 | |
| commit | b02e204fe4cc90d3d6a2658fa8a388710c8a3e15 (patch) | |
| tree | 541c8d95c135cd4bc0d0a341ec7f7b14344158d9 | |
| parent | 7450a3d935c4d49da37c3a806fc1f79a9f4a4338 (diff) | |
fix(WindowMagnificationAnimationController): fix the timing issue
To guarantee that we are proceeding the following actions before all animation operations are completed, we would like to add `waitForIdleSync` after the enabling/disabling magnification method call, and reset Mock object after that if needed.
Bug: 319365368
Flag: N/A
Test: atest WindowMagnificationAniamtionControllerTest
Change-Id: I9f04cb25624472905710cd37cc4f0b0f7201716a
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java index 2afb3a15b4be..d86d12303140 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java @@ -640,11 +640,10 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase { @Test public void deleteWindowMagnification_enabling_expectedValuesAndInvokeCallback() throws RemoteException { - enableWindowMagnificationAndWaitAnimating(mWaitPartialAnimationDuration, mAnimationCallback); - Mockito.reset(mSpyController); + resetMockObjects(); getInstrumentation().runOnMainSync(() -> { mWindowMagnificationAnimationController.deleteWindowMagnification( mAnimationCallback2); @@ -658,6 +657,11 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase { mValueAnimator.end(); }); + // wait for animation returns + waitForIdleSync(); + + // {@link ValueAnimator.AnimatorUpdateListener#onAnimationUpdate(ValueAnimator)} will only + // be triggered once in {@link ValueAnimator#end()} verify(mSpyController).enableWindowMagnificationInternal( mScaleCaptor.capture(), mCenterXCaptor.capture(), mCenterYCaptor.capture(), @@ -717,7 +721,11 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase { deleteWindowMagnificationAndWaitAnimating(mWaitPartialAnimationDuration, mAnimationCallback); - deleteWindowMagnificationAndWaitAnimating(0, null); + // Verifying that WindowMagnificationController#deleteWindowMagnification is never called + // in previous steps + verify(mSpyController, never()).deleteWindowMagnification(); + + deleteWindowMagnificationWithoutAnimation(); verify(mSpyController).deleteWindowMagnification(); verifyFinalSpec(Float.NaN, Float.NaN, Float.NaN); @@ -810,6 +818,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase { mWindowMagnificationAnimationController.enableWindowMagnification( targetScale, targetCenterX, targetCenterY, null); }); + // wait for animation returns + waitForIdleSync(); } private void enableWindowMagnificationAndWaitAnimating(long duration, @@ -829,12 +839,16 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase { targetScale, targetCenterX, targetCenterY, callback); advanceTimeBy(duration); }); + // wait for animation returns + waitForIdleSync(); } private void deleteWindowMagnificationWithoutAnimation() { getInstrumentation().runOnMainSync(() -> { mWindowMagnificationAnimationController.deleteWindowMagnification(null); }); + // wait for animation returns + waitForIdleSync(); } private void deleteWindowMagnificationAndWaitAnimating(long duration, @@ -843,6 +857,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase { mWindowMagnificationAnimationController.deleteWindowMagnification(callback); advanceTimeBy(duration); }); + // wait for animation returns + waitForIdleSync(); } private void verifyStartValue(ArgumentCaptor<Float> captor, float startValue) { |