namespace WebCore {
class Element;
+class Dictionary;
class Animation FINAL : public TimedItem {
enum Priority { DefaultPriority, TransitionPriority };
static PassRefPtr<Animation> create(PassRefPtr<Element>, PassRefPtr<AnimationEffect>, const Timing&, Priority = DefaultPriority, PassOwnPtr<EventDelegate> = nullptr);
+ // Web Animations API Bindings constructors.
+ static PassRefPtr<Animation> create(Element*, Vector<Dictionary> keyframeDictionaryVector, Dictionary timingInput);
+ static PassRefPtr<Animation> create(Element*, Vector<Dictionary> keyframeDictionaryVector, double timingInput);
+ static PassRefPtr<Animation> create(Element*, Vector<Dictionary> keyframeDictionaryVector);
+
+ // FIXME: Move all of these setter methods out of Animation,
+ // possibly into a new class (TimingInput?).
+ static void setStartDelay(Timing&, double startDelay);
+ static void setEndDelay(Timing&, double endDelay);
+ static void setFillMode(Timing&, String fillMode);
+ static void setIterationStart(Timing&, double iterationStart);
+ static void setIterationCount(Timing&, double iterationCount);
+ static void setIterationDuration(Timing&, double iterationDuration);
+ static void setPlaybackRate(Timing&, double playbackRate);
+ static void setPlaybackDirection(Timing&, String direction);
+ static void setTimingFunction(Timing&, String timingFunctionString);
+
virtual bool isAnimation() const OVERRIDE { return true; }
const AnimationEffect::CompositableValueList* compositableValues() const
virtual bool updateChildrenAndEffects() const OVERRIDE;
virtual void didAttach() OVERRIDE;
virtual void willDetach() OVERRIDE;
- virtual double calculateTimeToEffectChange(double inheritedTime, double timeToNextIteration) const OVERRIDE;
+ virtual double calculateTimeToEffectChange(bool forwards, double inheritedTime, double timeToNextIteration) const OVERRIDE;
private:
+ static void populateTiming(Timing&, Dictionary);
+ // createUnsafe should only be directly called from tests.
+ static PassRefPtr<Animation> createUnsafe(Element*, Vector<Dictionary> keyframeDictionaryVector, Dictionary timingInput);
+ static PassRefPtr<Animation> createUnsafe(Element*, Vector<Dictionary> keyframeDictionaryVector, double timingInput);
+ static PassRefPtr<Animation> createUnsafe(Element*, Vector<Dictionary> keyframeDictionaryVector);
+
Animation(PassRefPtr<Element>, PassRefPtr<AnimationEffect>, const Timing&, Priority, PassOwnPtr<EventDelegate>);
RefPtr<Element> m_target;
Vector<int> m_compositorAnimationIds;
friend class CSSAnimations;
+ friend class AnimationAnimationTest;
};
DEFINE_TYPE_CASTS(Animation, TimedItem, timedItem, timedItem->isAnimation(), timedItem.isAnimation());