Exemplo n.º 1
0
void SVGSMILElement::setAttributeName(const QualifiedName& attributeName) {
  unscheduleIfScheduled();
  if (m_targetElement)
    clearAnimatedType();
  m_attributeName = attributeName;
  schedule();
}
SVGSMILElement::~SVGSMILElement()
{
#if !ENABLE(OILPAN)
    clearResourceAndEventBaseReferences();
    smilEndEventSender().cancelEvent(this);
    smilBeginEventSender().cancelEvent(this);
    smilRepeatEventSender().cancelEvent(this);
    smilRepeatNEventSender().cancelEvent(this);
    clearConditions();

    unscheduleIfScheduled();
#endif
}
void SVGSMILElement::setTargetElement(SVGElement* target)
{
    unscheduleIfScheduled();

    if (m_targetElement) {
        // Clear values that may depend on the previous target.
        clearAnimatedType();
        disconnectSyncBaseConditions();
    }

    // If the animation state is not Inactive, always reset to a clear state before leaving the old target element.
    if (m_activeState != Inactive)
        endedActiveInterval();

    m_targetElement = target;
    schedule();
}
void SVGAnimationElement::checkInvalidCSSAttributeType()
{
    bool hasInvalidCSSAttributeType = targetElement() && hasValidAttributeName() && attributeType() == AttributeTypeCSS && !isTargetAttributeCSSProperty(targetElement(), attributeName());

    if (hasInvalidCSSAttributeType != m_hasInvalidCSSAttributeType) {
        if (hasInvalidCSSAttributeType)
            unscheduleIfScheduled();

        m_hasInvalidCSSAttributeType = hasInvalidCSSAttributeType;

        if (!hasInvalidCSSAttributeType)
            schedule();
    }

    // Clear values that may depend on the previous target.
    if (targetElement())
        clearAnimatedType();
}