| Index: third_party/WebKit/Source/core/animation/AnimationEffect.cpp
|
| diff --git a/third_party/WebKit/Source/core/animation/AnimationEffect.cpp b/third_party/WebKit/Source/core/animation/AnimationEffect.cpp
|
| index 6d30f7753e341f8866eaee79525aa89bef7ec55c..23543000b163cab0c424437174f0ee4f9ac653d8 100644
|
| --- a/third_party/WebKit/Source/core/animation/AnimationEffect.cpp
|
| +++ b/third_party/WebKit/Source/core/animation/AnimationEffect.cpp
|
| @@ -158,7 +158,16 @@ void AnimationEffect::updateInheritedTime(double inheritedTime, TimingUpdateReas
|
| const double iterationTime = calculateIterationTime(iterationDuration, repeatedDuration(), scaledActiveTime, startOffset, m_timing);
|
|
|
| currentIteration = calculateCurrentIteration(iterationDuration, iterationTime, scaledActiveTime, m_timing);
|
| - timeFraction = calculateTransformedTime(currentIteration, iterationDuration, iterationTime, m_timing) / iterationDuration;
|
| + const double transformedTime = calculateTransformedTime(currentIteration, iterationDuration, iterationTime, m_timing);
|
| +
|
| + // The infinite iterationDuration case here is a workaround because
|
| + // the specified behaviour does not handle infinite durations well.
|
| + // There is an open issue against the spec to fix this:
|
| + // https://github.com/w3c/web-animations/issues/142
|
| + if (!std::isfinite(iterationDuration))
|
| + timeFraction = fmod(m_timing.iterationStart, 1.0);
|
| + else
|
| + timeFraction = transformedTime / iterationDuration;
|
|
|
| if (!isNull(iterationTime)) {
|
| timeToNextIteration = (iterationDuration - iterationTime) / std::abs(m_timing.playbackRate);
|
|
|