Merge "WindowInsetsAnimation: Synchronously dispatch window insets animation callbacks" into rvc-dev

This commit is contained in:
Adrian Roos
2020-04-02 13:41:46 +00:00
committed by Android (Google) Code Review
6 changed files with 9 additions and 7 deletions

View File

@@ -40,8 +40,10 @@ public interface InsetsAnimationControlCallbacks {
/** /**
* Schedule the apply by posting the animation callback. * Schedule the apply by posting the animation callback.
*
* @param runner The runner that requested applying insets
*/ */
void scheduleApplyChangeInsets(); void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner);
/** /**
* Finish the final steps after the animation. * Finish the final steps after the animation.

View File

@@ -156,7 +156,7 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll
mPendingFraction = sanitize(fraction); mPendingFraction = sanitize(fraction);
mPendingInsets = sanitize(insets); mPendingInsets = sanitize(insets);
mPendingAlpha = sanitize(alpha); mPendingAlpha = sanitize(alpha);
mController.scheduleApplyChangeInsets(); mController.scheduleApplyChangeInsets(this);
} }
@VisibleForTesting @VisibleForTesting

View File

@@ -54,7 +54,7 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro
} }
@Override @Override
public void scheduleApplyChangeInsets() { public void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner) {
mControl.applyChangeInsets(mState); mControl.applyChangeInsets(mState);
} }

View File

@@ -1076,8 +1076,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
@VisibleForTesting @VisibleForTesting
@Override @Override
public void scheduleApplyChangeInsets() { public void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner) {
if (mStartingAnimation) { if (mStartingAnimation || runner.getAnimationType() == ANIMATION_TYPE_USER) {
mAnimCallback.run(); mAnimCallback.run();
mAnimCallbackScheduled = false; mAnimCallbackScheduled = false;
return; return;

View File

@@ -229,7 +229,7 @@ public class InsetsAnimationControlImplTest {
doAnswer(invocation -> { doAnswer(invocation -> {
mController.applyChangeInsets(mInsetsState); mController.applyChangeInsets(mInsetsState);
return null; return null;
}).when(mMockController).scheduleApplyChangeInsets(); }).when(mMockController).scheduleApplyChangeInsets(any());
mController.finish(true /* shown */); mController.finish(true /* shown */);
assertEquals(Insets.of(0, 100, 100, 0), mController.getCurrentInsets()); assertEquals(Insets.of(0, 100, 100, 0), mController.getCurrentInsets());
verify(mMockController).notifyFinished(eq(mController), eq(true /* shown */)); verify(mMockController).notifyFinished(eq(mController), eq(true /* shown */));

View File

@@ -398,7 +398,7 @@ class InsetsPolicy {
/** Called on SurfaceAnimationThread without global WM lock held. */ /** Called on SurfaceAnimationThread without global WM lock held. */
@Override @Override
public void scheduleApplyChangeInsets() { public void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner) {
InsetsState state = getState(); InsetsState state = getState();
if (mAnimationControl.applyChangeInsets(state)) { if (mAnimationControl.applyChangeInsets(state)) {
mAnimationControl.finish(mAnimatingShown); mAnimationControl.finish(mAnimatingShown);