Index: Source/core/animation/Animation.cpp |
diff --git a/Source/core/animation/Animation.cpp b/Source/core/animation/Animation.cpp |
index f77e9f63c8fd9f64bb8adc920520b279b3f28b65..daed5ae49dc418da5889fa6802eb99d5c64f1d7c 100644 |
--- a/Source/core/animation/Animation.cpp |
+++ b/Source/core/animation/Animation.cpp |
@@ -56,184 +56,17 @@ static bool checkDocumentAndRenderer(Element* element) |
if (!element->inActiveDocument()) |
return false; |
element->document().updateStyleIfNeeded(); |
esprehn
2014/02/28 00:57:16
Animation::create is called from CSSAnimations::ma
alancutter (OOO until 2018)
2014/03/03 05:09:45
This particular check only occurs when an Animatio
|
- if (!element->renderer()) |
- return false; |
- return true; |
-} |
- |
-PassRefPtr<Animation> Animation::create(Element* element, Vector<Dictionary> keyframeDictionaryVector, Dictionary timingInput) |
-{ |
- ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
- |
- // FIXME: This test will not be neccessary once resolution of keyframe values occurs at |
- // animation application time. |
- if (!checkDocumentAndRenderer(element)) |
- return nullptr; |
- |
- return createUnsafe(element, keyframeDictionaryVector, timingInput); |
+ return element->renderer(); |
} |
-PassRefPtr<Animation> Animation::create(Element* element, Vector<Dictionary> keyframeDictionaryVector, double timingInput) |
+PassRefPtrWillBeRawPtr<AnimationEffect> Animation::convertEffectInput(Element* element, Vector<Dictionary> keyframeDictionaryVector, bool unsafe) |
{ |
- ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
- |
- // FIXME: This test will not be neccessary once resolution of keyframe values occurs at |
- // animation application time. |
- if (!checkDocumentAndRenderer(element)) |
- return nullptr; |
- |
- return createUnsafe(element, keyframeDictionaryVector, timingInput); |
-} |
- |
-PassRefPtr<Animation> Animation::create(Element* element, Vector<Dictionary> keyframeDictionaryVector) |
-{ |
- ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
- |
// FIXME: This test will not be neccessary once resolution of keyframe values occurs at |
// animation application time. |
- if (!checkDocumentAndRenderer(element)) |
+ if (!unsafe && !checkDocumentAndRenderer(element)) |
return nullptr; |
- return createUnsafe(element, keyframeDictionaryVector); |
-} |
- |
-void Animation::setStartDelay(Timing& timing, double startDelay) |
-{ |
- if (std::isfinite(startDelay)) |
- timing.startDelay = startDelay; |
- else |
- timing.startDelay = 0; |
-} |
- |
-void Animation::setEndDelay(Timing& timing, double endDelay) |
-{ |
- if (std::isfinite(endDelay)) |
- timing.endDelay = endDelay; |
- else |
- timing.endDelay = 0; |
-} |
- |
-void Animation::setFillMode(Timing& timing, String fillMode) |
-{ |
- if (fillMode == "none") { |
- timing.fillMode = Timing::FillModeNone; |
- } else if (fillMode == "backwards") { |
- timing.fillMode = Timing::FillModeBackwards; |
- } else if (fillMode == "both") { |
- timing.fillMode = Timing::FillModeBoth; |
- } else if (fillMode == "forwards") { |
- timing.fillMode = Timing::FillModeForwards; |
- } else { |
- timing.fillMode = Timing::FillModeAuto; |
- } |
-} |
- |
-void Animation::setIterationStart(Timing& timing, double iterationStart) |
-{ |
- if (!std::isnan(iterationStart) && !std::isinf(iterationStart)) |
- timing.iterationStart = std::max<double>(iterationStart, 0); |
- else |
- timing.iterationStart = 0; |
-} |
- |
-void Animation::setIterationCount(Timing& timing, double iterationCount) |
-{ |
- if (!std::isnan(iterationCount)) |
- timing.iterationCount = std::max<double>(iterationCount, 0); |
- else |
- timing.iterationCount = 1; |
-} |
- |
-void Animation::setIterationDuration(Timing& timing, double iterationDuration) |
-{ |
- if (!std::isnan(iterationDuration) && iterationDuration >= 0) |
- timing.iterationDuration = iterationDuration; |
- else |
- timing.iterationDuration = std::numeric_limits<double>::quiet_NaN(); |
-} |
- |
-void Animation::setPlaybackRate(Timing& timing, double playbackRate) |
-{ |
- if (!std::isnan(playbackRate) && !std::isinf(playbackRate)) |
- timing.playbackRate = playbackRate; |
- else |
- timing.playbackRate = 1; |
-} |
- |
-void Animation::setPlaybackDirection(Timing& timing, String direction) |
-{ |
- if (direction == "reverse") { |
- timing.direction = Timing::PlaybackDirectionReverse; |
- } else if (direction == "alternate") { |
- timing.direction = Timing::PlaybackDirectionAlternate; |
- } else if (direction == "alternate-reverse") { |
- timing.direction = Timing::PlaybackDirectionAlternateReverse; |
- } else { |
- timing.direction = Timing::PlaybackDirectionNormal; |
- } |
-} |
- |
-void Animation::setTimingFunction(Timing& timing, String timingFunctionString) |
-{ |
- RefPtrWillBeRawPtr<CSSValue> timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue(timingFunctionString); |
- if (timingFunctionValue) { |
- RefPtr<TimingFunction> timingFunction = CSSToStyleMap::animationTimingFunction(timingFunctionValue.get(), false); |
- if (timingFunction) { |
- timing.timingFunction = timingFunction; |
- return; |
- } |
- } |
- timing.timingFunction = LinearTimingFunction::create(); |
-} |
- |
-void Animation::populateTiming(Timing& timing, Dictionary timingInputDictionary) |
-{ |
- // FIXME: This method needs to be refactored to handle invalid |
- // null, NaN, Infinity values better. |
- // See: http://www.w3.org/TR/WebIDL/#es-double |
- double startDelay = 0; |
- timingInputDictionary.get("delay", startDelay); |
- setStartDelay(timing, startDelay); |
- |
- double endDelay = 0; |
- timingInputDictionary.get("endDelay", endDelay); |
- setEndDelay(timing, endDelay); |
- |
- String fillMode; |
- timingInputDictionary.get("fill", fillMode); |
- setFillMode(timing, fillMode); |
- |
- double iterationStart = 0; |
- timingInputDictionary.get("iterationStart", iterationStart); |
- setIterationStart(timing, iterationStart); |
- |
- double iterationCount = 1; |
- timingInputDictionary.get("iterations", iterationCount); |
- setIterationCount(timing, iterationCount); |
- |
- v8::Local<v8::Value> iterationDurationValue; |
- if (timingInputDictionary.get("duration", iterationDurationValue)) { |
- double iterationDuration = iterationDurationValue->NumberValue(); |
- setIterationDuration(timing, iterationDuration); |
- } |
- |
- double playbackRate = 1; |
- timingInputDictionary.get("playbackRate", playbackRate); |
- setPlaybackRate(timing, playbackRate); |
- |
- String direction; |
- timingInputDictionary.get("direction", direction); |
- setPlaybackDirection(timing, direction); |
- |
- String timingFunctionString; |
- timingInputDictionary.get("easing", timingFunctionString); |
- setTimingFunction(timing, timingFunctionString); |
- |
- timing.assertValid(); |
-} |
- |
-static PassRefPtrWillBeRawPtr<KeyframeEffectModel> createKeyframeEffectModel(Element* element, Vector<Dictionary> keyframeDictionaryVector) |
-{ |
+ // FIXME: Move this code into KeyframeEffectModel, it will be used by the IDL constructor for that class. |
KeyframeEffectModel::KeyframeVector keyframes; |
Vector<RefPtr<MutableStylePropertySet> > propertySetVector; |
@@ -284,37 +117,7 @@ static PassRefPtrWillBeRawPtr<KeyframeEffectModel> createKeyframeEffectModel(Ele |
} |
// FIXME: Replace this with code that just parses, when that code is available. |
- RefPtrWillBeRawPtr<KeyframeEffectModel> effect = StyleResolver::createKeyframeEffectModel(*element, propertySetVector, keyframes); |
- return effect; |
-} |
- |
-PassRefPtr<Animation> Animation::createUnsafe(Element* element, Vector<Dictionary> keyframeDictionaryVector, Dictionary timingInput) |
-{ |
- RefPtrWillBeRawPtr<KeyframeEffectModel> effect = createKeyframeEffectModel(element, keyframeDictionaryVector); |
- |
- Timing timing; |
- populateTiming(timing, timingInput); |
- |
- return create(element, effect, timing); |
-} |
- |
-PassRefPtr<Animation> Animation::createUnsafe(Element* element, Vector<Dictionary> keyframeDictionaryVector, double timingInput) |
-{ |
- RefPtrWillBeRawPtr<KeyframeEffectModel> effect = createKeyframeEffectModel(element, keyframeDictionaryVector); |
- |
- Timing timing; |
- if (!std::isnan(timingInput)) |
- timing.iterationDuration = std::max<double>(timingInput, 0); |
- |
- return create(element, effect, timing); |
-} |
- |
-PassRefPtr<Animation> Animation::createUnsafe(Element* element, Vector<Dictionary> keyframeDictionaryVector) |
-{ |
- RefPtrWillBeRawPtr<KeyframeEffectModel> effect = createKeyframeEffectModel(element, keyframeDictionaryVector); |
- Timing timing; |
- |
- return create(element, effect, timing); |
+ return StyleResolver::createKeyframeEffectModel(*element, propertySetVector, keyframes); |
} |
Animation::Animation(PassRefPtr<Element> target, PassRefPtrWillBeRawPtr<AnimationEffect> effect, const Timing& timing, Priority priority, PassOwnPtr<EventDelegate> eventDelegate) |