Node::InsertionNotificationRequest SVGSMILElement::insertedInto(ContainerNode* rootParent) { SVGElement::insertedInto(rootParent); if (!rootParent->inDocument()) return InsertionDone; Deprecation::countDeprecation(document(), UseCounter::SVGSMILElementInDocument); setAttributeName(constructQualifiedName(this, fastGetAttribute(SVGNames::attributeNameAttr))); SVGSVGElement* owner = ownerSVGElement(); if (!owner) return InsertionDone; m_timeContainer = owner->timeContainer(); ASSERT(m_timeContainer); m_timeContainer->setDocumentOrderIndexesDirty(); // "If no attribute is present, the default begin value (an offset-value of 0) must be evaluated." if (!fastHasAttribute(SVGNames::beginAttr)) m_beginTimes.append(SMILTimeWithOrigin()); if (m_isWaitingForFirstInterval) resolveFirstInterval(); if (m_timeContainer) m_timeContainer->notifyIntervalsChanged(); buildPendingResource(); return InsertionDone; }
Node::InsertionNotificationRequest SVGSMILElement::insertedInto(ContainerNode& rootParent) { SVGElement::insertedInto(rootParent); if (!rootParent.inDocument()) return InsertionDone; // Verify we are not in <use> instance tree. ASSERT(!isInShadowTree()); setAttributeName(constructQualifiedName(this, fastGetAttribute(SVGNames::attributeNameAttr))); SVGSVGElement* owner = ownerSVGElement(); if (!owner) return InsertionDone; m_timeContainer = owner->timeContainer(); ASSERT(m_timeContainer); m_timeContainer->setDocumentOrderIndexesDirty(); // "If no attribute is present, the default begin value (an offset-value of 0) must be evaluated." if (!fastHasAttribute(SVGNames::beginAttr)) m_beginTimes.append(SMILTimeWithOrigin()); if (m_isWaitingForFirstInterval) resolveFirstInterval(); if (m_timeContainer) m_timeContainer->notifyIntervalsChanged(); return InsertionShouldCallDidNotifySubtreeInsertions; }
void SVGSMILElement::reset() { clearAnimatedType(); m_activeState = Inactive; m_isWaitingForFirstInterval = true; m_interval.begin = SMILTime::unresolved(); m_interval.end = SMILTime::unresolved(); m_previousIntervalBegin = SMILTime::unresolved(); m_lastPercent = 0; m_lastRepeat = 0; m_nextProgressTime = 0; resolveFirstInterval(); }
SVGSMILElement::SVGSMILElement(const QualifiedName& tagName, Document& doc) : SVGElement(tagName, doc) , SVGTests(this) , m_attributeName(anyQName()) , m_targetElement(nullptr) , m_syncBaseConditionsConnected(false) , m_hasEndEventConditions(false) , m_isWaitingForFirstInterval(true) , m_interval(SMILInterval(SMILTime::unresolved(), SMILTime::unresolved())) , m_previousIntervalBegin(SMILTime::unresolved()) , m_activeState(Inactive) , m_lastPercent(0) , m_lastRepeat(0) , m_nextProgressTime(0) , m_documentOrderIndex(0) , m_cachedDur(invalidCachedTime) , m_cachedRepeatDur(invalidCachedTime) , m_cachedRepeatCount(invalidCachedTime) , m_cachedMin(invalidCachedTime) , m_cachedMax(invalidCachedTime) { resolveFirstInterval(); }