Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 113f8529 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Run end actions immediately if there are no children to animate." into qt-dev

parents 6e975493 d54e8e04
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -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) -> {
                if (endActions != null) {
                    mLayout.setEndActionForMultipleProperties(
                            () -> {
                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(
                            runAllEndActions,
                            allAnimatedProperties.toArray(
                                    new DynamicAnimation.ViewProperty[0]));
                }
+13 −0
Original line number Diff line number Diff line
@@ -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.