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.
|
* 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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 */));
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user