diff options
2 files changed, 26 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayout.java b/packages/SystemUI/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayout.java index 0f659c338ce8..460652612593 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayout.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayout.java @@ -202,13 +202,21 @@ public class PhysicsAnimationLayout extends FrameLayout { // add a multiple property end listener to the layout that will call the end action // provided to startAll() once all animations on the animated properties complete. return (endActions) -> { + final Runnable runAllEndActions = () -> { + for (Runnable action : endActions) { + action.run(); + } + }; + + // If there aren't any children to animate, just run the end actions. + if (mLayout.getChildCount() == 0) { + runAllEndActions.run(); + return; + } + if (endActions != null) { mLayout.setEndActionForMultipleProperties( - () -> { - for (Runnable action : endActions) { - action.run(); - } - }, + runAllEndActions, allAnimatedProperties.toArray( new DynamicAnimation.ViewProperty[0])); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayoutTest.java index 38a90f7a52d2..eef6ddcf6d6b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/animation/PhysicsAnimationLayoutTest.java @@ -25,6 +25,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import android.os.SystemClock; import android.testing.AndroidTestingRunner; @@ -449,6 +450,18 @@ public class PhysicsAnimationLayoutTest extends PhysicsAnimationLayoutTestCase { Mockito.verify(allEnd, times(1)).run(); } + @Test + public void testAnimationsForChildrenFromIndex_noChildren() { + mLayout.setController(mTestableController); + + final Runnable after = Mockito.mock(Runnable.class); + mTestableController + .animationsForChildrenFromIndex(0, (index, animation) -> { }) + .startAll(after); + + verify(after, Mockito.times(1)).run(); + } + /** * Animation controller with configuration methods whose return values can be set by individual * tests. |