Merge "WindowInsetsAnimation: Synchronously dispatch window insets animation callbacks" into rvc-dev
This commit is contained in:
@@ -40,8 +40,10 @@ public interface InsetsAnimationControlCallbacks {
|
||||
|
||||
/**
|
||||
* 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.
|
||||
|
||||
@@ -156,7 +156,7 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll
|
||||
mPendingFraction = sanitize(fraction);
|
||||
mPendingInsets = sanitize(insets);
|
||||
mPendingAlpha = sanitize(alpha);
|
||||
mController.scheduleApplyChangeInsets();
|
||||
mController.scheduleApplyChangeInsets(this);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
||||
@@ -54,7 +54,7 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scheduleApplyChangeInsets() {
|
||||
public void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner) {
|
||||
mControl.applyChangeInsets(mState);
|
||||
}
|
||||
|
||||
|
||||
@@ -1076,8 +1076,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
|
||||
|
||||
@VisibleForTesting
|
||||
@Override
|
||||
public void scheduleApplyChangeInsets() {
|
||||
if (mStartingAnimation) {
|
||||
public void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner) {
|
||||
if (mStartingAnimation || runner.getAnimationType() == ANIMATION_TYPE_USER) {
|
||||
mAnimCallback.run();
|
||||
mAnimCallbackScheduled = false;
|
||||
return;
|
||||
|
||||
@@ -229,7 +229,7 @@ public class InsetsAnimationControlImplTest {
|
||||
doAnswer(invocation -> {
|
||||
mController.applyChangeInsets(mInsetsState);
|
||||
return null;
|
||||
}).when(mMockController).scheduleApplyChangeInsets();
|
||||
}).when(mMockController).scheduleApplyChangeInsets(any());
|
||||
mController.finish(true /* shown */);
|
||||
assertEquals(Insets.of(0, 100, 100, 0), mController.getCurrentInsets());
|
||||
verify(mMockController).notifyFinished(eq(mController), eq(true /* shown */));
|
||||
|
||||
@@ -398,7 +398,7 @@ class InsetsPolicy {
|
||||
|
||||
/** Called on SurfaceAnimationThread without global WM lock held. */
|
||||
@Override
|
||||
public void scheduleApplyChangeInsets() {
|
||||
public void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner) {
|
||||
InsetsState state = getState();
|
||||
if (mAnimationControl.applyChangeInsets(state)) {
|
||||
mAnimationControl.finish(mAnimatingShown);
|
||||
|
||||
Reference in New Issue
Block a user