mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1249212 part 3 - Fix active duration calculation when iteration duration is infinity; r=boris
With the added tests in part 4 we crash without this change because we end up trying to multiply an infinite iteration duration by a zero iteration count which trips an assertion in StickyTimeDuration. Hence we fix this behavior before adding the tests.
This commit is contained in:
parent
bc7586045e
commit
be6b653854
@ -367,18 +367,19 @@ KeyframeEffectReadOnly::GetComputedTimingAt(
|
||||
}
|
||||
|
||||
StickyTimeDuration
|
||||
KeyframeEffectReadOnly::ActiveDuration(const StickyTimeDuration& aIterationDuration,
|
||||
double aIterationCount)
|
||||
KeyframeEffectReadOnly::ActiveDuration(
|
||||
const StickyTimeDuration& aIterationDuration,
|
||||
double aIterationCount)
|
||||
{
|
||||
if (IsInfinite(aIterationCount)) {
|
||||
// An animation that repeats forever has an infinite active duration
|
||||
// unless its iteration duration is zero, in which case it has a zero
|
||||
// active duration.
|
||||
const StickyTimeDuration zeroDuration;
|
||||
return aIterationDuration == zeroDuration ?
|
||||
zeroDuration :
|
||||
StickyTimeDuration::Forever();
|
||||
// If either the iteration duration or iteration count is zero,
|
||||
// Web Animations says that the active duration is zero. This is to
|
||||
// ensure that the result is defined when the other argument is Infinity.
|
||||
const StickyTimeDuration zeroDuration;
|
||||
if (aIterationDuration == zeroDuration ||
|
||||
aIterationCount == 0.0) {
|
||||
return zeroDuration;
|
||||
}
|
||||
|
||||
return aIterationDuration.MultDouble(aIterationCount);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user