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

am: 113f85298b

Change-Id: Ice738473b651987481a86aea7d41ba9640c1e309
This commit is contained in:
Joshua Tsuji
2019-04-05 20:23:02 -07:00
committed by android-build-merger
2 changed files with 26 additions and 5 deletions

View File

@@ -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]));
}

View File

@@ -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.