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

Commit 3cf1af0a authored by Joshua Tsuji's avatar Joshua Tsuji Committed by android-build-merger
Browse files

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

am: 113f8529

Change-Id: Ice738473b651987481a86aea7d41ba9640c1e309
parents 202b4f2e 113f8529
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.