зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1354501 - Factor out calculations for interval start/end times. r=birtles
MozReview-Commit-ID: H9iXX9VLXLr --HG-- extra : rebase_source : 736d304858cd0a2c5953f9986dd161ebd21c8099
This commit is contained in:
Родитель
3e4ea2fa47
Коммит
1c47aa1edf
|
@ -486,6 +486,41 @@ protected:
|
||||||
return GetCurrentTimeForHoldTime(Nullable<TimeDuration>());
|
return GetCurrentTimeForHoldTime(Nullable<TimeDuration>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Earlier side of the elapsed time range reported in CSS Animations and CSS
|
||||||
|
// Transitions events.
|
||||||
|
//
|
||||||
|
// https://drafts.csswg.org/css-animations-2/#interval-start
|
||||||
|
// https://drafts.csswg.org/css-transitions-2/#interval-start
|
||||||
|
StickyTimeDuration
|
||||||
|
IntervalStartTime(const StickyTimeDuration& aActiveDuration) const
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(AsCSSTransition() || AsCSSAnimation(),
|
||||||
|
"Should be called for CSS animations or transitions");
|
||||||
|
static constexpr StickyTimeDuration zeroDuration = StickyTimeDuration();
|
||||||
|
return std::max(
|
||||||
|
std::min(StickyTimeDuration(-mEffect->SpecifiedTiming().Delay()),
|
||||||
|
aActiveDuration),
|
||||||
|
zeroDuration);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Later side of the elapsed time range reported in CSS Animations and CSS
|
||||||
|
// Transitions events.
|
||||||
|
//
|
||||||
|
// https://drafts.csswg.org/css-animations-2/#interval-end
|
||||||
|
// https://drafts.csswg.org/css-transitions-2/#interval-end
|
||||||
|
StickyTimeDuration
|
||||||
|
IntervalEndTime(const StickyTimeDuration& aActiveDuration) const
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(AsCSSTransition() || AsCSSAnimation(),
|
||||||
|
"Should be called for CSS animations or transitions");
|
||||||
|
|
||||||
|
static constexpr StickyTimeDuration zeroDuration = StickyTimeDuration();
|
||||||
|
return std::max(
|
||||||
|
std::min((EffectEnd() - mEffect->SpecifiedTiming().Delay()),
|
||||||
|
aActiveDuration),
|
||||||
|
zeroDuration);
|
||||||
|
}
|
||||||
|
|
||||||
nsIDocument* GetRenderedDocument() const;
|
nsIDocument* GetRenderedDocument() const;
|
||||||
|
|
||||||
RefPtr<AnimationTimeline> mTimeline;
|
RefPtr<AnimationTimeline> mTimeline;
|
||||||
|
|
|
@ -193,7 +193,6 @@ CSSAnimation::QueueEvents(const StickyTimeDuration& aActiveTime)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr StickyTimeDuration zeroDuration = StickyTimeDuration();
|
|
||||||
uint64_t currentIteration = 0;
|
uint64_t currentIteration = 0;
|
||||||
ComputedTiming::AnimationPhase currentPhase;
|
ComputedTiming::AnimationPhase currentPhase;
|
||||||
StickyTimeDuration intervalStartTime;
|
StickyTimeDuration intervalStartTime;
|
||||||
|
@ -211,14 +210,8 @@ CSSAnimation::QueueEvents(const StickyTimeDuration& aActiveTime)
|
||||||
currentIteration == mPreviousIteration) {
|
currentIteration == mPreviousIteration) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
intervalStartTime =
|
intervalStartTime = IntervalStartTime(computedTiming.mActiveDuration);
|
||||||
std::max(std::min(StickyTimeDuration(-mEffect->SpecifiedTiming().Delay()),
|
intervalEndTime = IntervalEndTime(computedTiming.mActiveDuration);
|
||||||
computedTiming.mActiveDuration),
|
|
||||||
zeroDuration);
|
|
||||||
intervalEndTime =
|
|
||||||
std::max(std::min((EffectEnd() - mEffect->SpecifiedTiming().Delay()),
|
|
||||||
computedTiming.mActiveDuration),
|
|
||||||
zeroDuration);
|
|
||||||
|
|
||||||
uint64_t iterationBoundary = mPreviousIteration > currentIteration
|
uint64_t iterationBoundary = mPreviousIteration > currentIteration
|
||||||
? currentIteration + 1
|
? currentIteration + 1
|
||||||
|
|
|
@ -206,12 +206,8 @@ CSSTransition::QueueEvents(const StickyTimeDuration& aActiveTime)
|
||||||
ComputedTiming computedTiming = mEffect->GetComputedTiming();
|
ComputedTiming computedTiming = mEffect->GetComputedTiming();
|
||||||
|
|
||||||
currentPhase = static_cast<TransitionPhase>(computedTiming.mPhase);
|
currentPhase = static_cast<TransitionPhase>(computedTiming.mPhase);
|
||||||
intervalStartTime =
|
intervalStartTime = IntervalStartTime(computedTiming.mActiveDuration);
|
||||||
std::max(std::min(StickyTimeDuration(-mEffect->SpecifiedTiming().Delay()),
|
intervalEndTime = IntervalEndTime(computedTiming.mActiveDuration);
|
||||||
computedTiming.mActiveDuration), zeroDuration);
|
|
||||||
intervalEndTime =
|
|
||||||
std::max(std::min((EffectEnd() - mEffect->SpecifiedTiming().Delay()),
|
|
||||||
computedTiming.mActiveDuration), zeroDuration);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TimeStamps to use for ordering the events when they are dispatched. We
|
// TimeStamps to use for ordering the events when they are dispatched. We
|
||||||
|
|
Загрузка…
Ссылка в новой задаче