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

Commit 9275e4a5 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

am: 3cf1af0a

Change-Id: Ia77a46774e545b4469f429306b1c86e0166bf943
parents 44ae4861 3cf1af0a
Loading
Loading
Loading
Loading
+13 −5
Original line number Original line 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
            // 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.
            // provided to startAll() once all animations on the animated properties complete.
            return (endActions) -> {
            return (endActions) -> {
                if (endActions != null) {
                final Runnable runAllEndActions = () -> {
                    mLayout.setEndActionForMultipleProperties(
                            () -> {
                    for (Runnable action : endActions) {
                    for (Runnable action : endActions) {
                        action.run();
                        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(
                            allAnimatedProperties.toArray(
                                    new DynamicAnimation.ViewProperty[0]));
                                    new DynamicAnimation.ViewProperty[0]));
                }
                }
+13 −0
Original line number Original line 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.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;


import android.os.SystemClock;
import android.os.SystemClock;
import android.testing.AndroidTestingRunner;
import android.testing.AndroidTestingRunner;
@@ -449,6 +450,18 @@ public class PhysicsAnimationLayoutTest extends PhysicsAnimationLayoutTestCase {
        Mockito.verify(allEnd, times(1)).run();
        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
     * Animation controller with configuration methods whose return values can be set by individual
     * tests.
     * tests.