diff --git a/dom/animation/KeyframeEffect.cpp b/dom/animation/KeyframeEffect.cpp index 1062d67184f6..25e1c42dcc49 100644 --- a/dom/animation/KeyframeEffect.cpp +++ b/dom/animation/KeyframeEffect.cpp @@ -652,13 +652,33 @@ KeyframeEffectReadOnly::~KeyframeEffectReadOnly() { } +template +/* static */ already_AddRefed +KeyframeEffectReadOnly::ConstructKeyframeEffect( + const GlobalObject& aGlobal, + const Nullable& aTarget, + JS::Handle aFrames, + const OptionsType& aOptions, + ErrorResult& aRv) +{ + TimingParams timingParams = + TimingParams::FromOptionsUnion(aOptions, aTarget, aRv); + if (aRv.Failed()) { + return nullptr; + } + + return ConstructKeyframeEffect( + aGlobal, aTarget, aFrames, timingParams, aRv); +} + template /* static */ already_AddRefed -KeyframeEffectReadOnly::ConstructKeyframeEffect(const GlobalObject& aGlobal, - const Nullable& aTarget, - JS::Handle aFrames, - const TimingParams& aTiming, - ErrorResult& aRv) +KeyframeEffectReadOnly::ConstructKeyframeEffect( + const GlobalObject& aGlobal, + const Nullable& aTarget, + JS::Handle aFrames, + const TimingParams& aTiming, + ErrorResult& aRv) { if (aTarget.IsNull()) { // We don't support null targets yet. @@ -699,24 +719,6 @@ KeyframeEffectReadOnly::ConstructKeyframeEffect(const GlobalObject& aGlobal, return effect.forget(); } -// Explicit instantiations to avoid linker errors. - -template -already_AddRefed -KeyframeEffectReadOnly::ConstructKeyframeEffect<>(const GlobalObject& aGlobal, - const Nullable& aTarget, - JS::Handle aFrames, - const TimingParams& aTiming, - ErrorResult& aRv); - -template -already_AddRefed -KeyframeEffectReadOnly::ConstructKeyframeEffect<>(const GlobalObject& aGlobal, - const Nullable& aTarget, - JS::Handle aFrames, - const TimingParams& aTiming, - ErrorResult& aRv); - void KeyframeEffectReadOnly::ResetIsRunningOnCompositor() { @@ -1754,6 +1756,19 @@ KeyframeEffectReadOnly::BuildAnimationPropertyList( } } +/* static */ already_AddRefed +KeyframeEffectReadOnly::Constructor( + const GlobalObject& aGlobal, + const Nullable& aTarget, + JS::Handle aFrames, + const UnrestrictedDoubleOrKeyframeEffectOptions& aOptions, + ErrorResult& aRv) +{ + return ConstructKeyframeEffect(aGlobal, aTarget, + aFrames, aOptions, + aRv); +} + void KeyframeEffectReadOnly::GetTarget( Nullable& aRv) const @@ -2212,6 +2227,30 @@ KeyframeEffect::WrapObject(JSContext* aCx, return KeyframeEffectBinding::Wrap(aCx, this, aGivenProto); } +/* static */ already_AddRefed +KeyframeEffect::Constructor( + const GlobalObject& aGlobal, + const Nullable& aTarget, + JS::Handle aFrames, + const UnrestrictedDoubleOrKeyframeEffectOptions& aOptions, + ErrorResult& aRv) +{ + return ConstructKeyframeEffect(aGlobal, aTarget, aFrames, + aOptions, aRv); +} + +/* static */ already_AddRefed +KeyframeEffect::Constructor( + const GlobalObject& aGlobal, + const Nullable& aTarget, + JS::Handle aFrames, + const TimingParams& aTiming, + ErrorResult& aRv) +{ + return ConstructKeyframeEffect(aGlobal, aTarget, aFrames, + aTiming, aRv); +} + void KeyframeEffect::NotifySpecifiedTimingUpdated() { nsIDocument* doc = nullptr; diff --git a/dom/animation/KeyframeEffect.h b/dom/animation/KeyframeEffect.h index 7f44bf1c1850..a5b963f2dfc8 100644 --- a/dom/animation/KeyframeEffect.h +++ b/dom/animation/KeyframeEffect.h @@ -202,16 +202,7 @@ public: const Nullable& aTarget, JS::Handle aFrames, const UnrestrictedDoubleOrKeyframeEffectOptions& aOptions, - ErrorResult& aRv) - { - TimingParams timingParams = - TimingParams::FromOptionsUnion(aOptions, aTarget, aRv); - if (aRv.Failed()) { - return nullptr; - } - return ConstructKeyframeEffect( - aGlobal, aTarget, aFrames, timingParams, aRv); - } + ErrorResult& aRv); void GetTarget(Nullable& aRv) const; void GetFrames(JSContext*& aCx, @@ -354,7 +345,14 @@ protected: virtual ~KeyframeEffectReadOnly(); - template + template + static already_AddRefed + ConstructKeyframeEffect(const GlobalObject& aGlobal, + const Nullable& aTarget, + JS::Handle aFrames, + const OptionsType& aOptions, + ErrorResult& aRv); + template static already_AddRefed ConstructKeyframeEffect(const GlobalObject& aGlobal, const Nullable& aTarget, @@ -433,29 +431,16 @@ public: const Nullable& aTarget, JS::Handle aFrames, const UnrestrictedDoubleOrKeyframeEffectOptions& aOptions, - ErrorResult& aRv) - { - TimingParams timingParams = - TimingParams::FromOptionsUnion(aOptions, aTarget, aRv); - if (aRv.Failed()) { - return nullptr; - } - return ConstructKeyframeEffect( - aGlobal, aTarget, aFrames, timingParams, aRv); - } + ErrorResult& aRv); - // More generalized version for Animatable.animate. + // More generalized version of Constructor for Animatable.animate. // Not exposed to content. static already_AddRefed - inline Constructor(const GlobalObject& aGlobal, - const Nullable& aTarget, - JS::Handle aFrames, - const TimingParams& aTiming, - ErrorResult& aRv) - { - return ConstructKeyframeEffect(aGlobal, aTarget, aFrames, - aTiming, aRv); - } + Constructor(const GlobalObject& aGlobal, + const Nullable& aTarget, + JS::Handle aFrames, + const TimingParams& aTiming, + ErrorResult& aRv); void NotifySpecifiedTimingUpdated();