Bug 1456394 - Factor out TimingParams::FromEffectTiming; r=hiro

Factoring out this method makes the code a little easier to read, particularly
when in the next patch in this series we add
a TimingParams::MergeOptionalEffectTiming method.

MozReview-Commit-ID: 5AU6IfN2grZ

--HG--
extra : rebase_source : f90614c7dd03413b4ce05d62d3ac73f0ba0e7dc3
This commit is contained in:
Brian Birtles 2018-05-07 12:34:47 +09:00
parent 79bd9b3a55
commit 4ab18a6435
2 changed files with 47 additions and 29 deletions

View File

@ -44,6 +44,7 @@ TimingParams::FromOptionsType(const OptionsType& aOptions,
ErrorResult& aRv)
{
TimingParams result;
if (aOptions.IsUnrestrictedDouble()) {
double durationInMs = aOptions.GetAsUnrestrictedDouble();
if (durationInMs >= 0) {
@ -53,38 +54,11 @@ TimingParams::FromOptionsType(const OptionsType& aOptions,
aRv.Throw(NS_ERROR_DOM_TYPE_ERR);
return result;
}
result.Update();
} else {
const dom::EffectTiming& timing = GetTimingProperties(aOptions);
Maybe<StickyTimeDuration> duration =
TimingParams::ParseDuration(timing.mDuration, aRv);
if (aRv.Failed()) {
return result;
}
TimingParams::ValidateIterationStart(timing.mIterationStart, aRv);
if (aRv.Failed()) {
return result;
}
TimingParams::ValidateIterations(timing.mIterations, aRv);
if (aRv.Failed()) {
return result;
}
Maybe<ComputedTimingFunction> easing =
TimingParams::ParseEasing(timing.mEasing, aDocument, aRv);
if (aRv.Failed()) {
return result;
}
result.mDuration = duration;
result.mDelay = TimeDuration::FromMilliseconds(timing.mDelay);
result.mEndDelay = TimeDuration::FromMilliseconds(timing.mEndDelay);
result.mIterations = timing.mIterations;
result.mIterationStart = timing.mIterationStart;
result.mDirection = timing.mDirection;
result.mFill = timing.mFill;
result.mFunction = easing;
result = FromEffectTiming(timing, aDocument, aRv);
}
result.Update();
return result;
}
@ -107,6 +81,46 @@ TimingParams::FromOptionsUnion(
return FromOptionsType(aOptions, aDocument, aRv);
}
/* static */ TimingParams
TimingParams::FromEffectTiming(const dom::EffectTiming& aEffectTiming,
nsIDocument* aDocument,
ErrorResult& aRv)
{
TimingParams result;
Maybe<StickyTimeDuration> duration =
TimingParams::ParseDuration(aEffectTiming.mDuration, aRv);
if (aRv.Failed()) {
return result;
}
TimingParams::ValidateIterationStart(aEffectTiming.mIterationStart, aRv);
if (aRv.Failed()) {
return result;
}
TimingParams::ValidateIterations(aEffectTiming.mIterations, aRv);
if (aRv.Failed()) {
return result;
}
Maybe<ComputedTimingFunction> easing =
TimingParams::ParseEasing(aEffectTiming.mEasing, aDocument, aRv);
if (aRv.Failed()) {
return result;
}
result.mDuration = duration;
result.mDelay = TimeDuration::FromMilliseconds(aEffectTiming.mDelay);
result.mEndDelay = TimeDuration::FromMilliseconds(aEffectTiming.mEndDelay);
result.mIterations = aEffectTiming.mIterations;
result.mIterationStart = aEffectTiming.mIterationStart;
result.mDirection = aEffectTiming.mDirection;
result.mFill = aEffectTiming.mFill;
result.mFunction = easing;
result.Update();
return result;
}
/* static */ Maybe<ComputedTimingFunction>
TimingParams::ParseEasing(const nsAString& aEasing,
nsIDocument* aDocument,

View File

@ -75,6 +75,10 @@ struct TimingParams
static TimingParams FromOptionsUnion(
const dom::UnrestrictedDoubleOrKeyframeAnimationOptions& aOptions,
nsIDocument* aDocument, ErrorResult& aRv);
static TimingParams FromEffectTiming(
const dom::EffectTiming& aEffectTiming,
nsIDocument* aDocument,
ErrorResult& aRv);
// Range-checks and validates an UnrestrictedDoubleOrString or
// OwningUnrestrictedDoubleOrString object and converts to a