SMILTime SVGSMILElement::dur() const { if (m_cachedDur != invalidCachedTime) return m_cachedDur; const AtomicString& value = fastGetAttribute(SVGNames::durAttr); SMILTime clockValue = parseClockValue(value); return m_cachedDur = clockValue <= 0 ? SMILTime::unresolved() : clockValue; }
void SVGSMILElement::parseBeginOrEnd(const String& parseString, BeginOrEnd beginOrEnd) { Vector<SMILTimeWithOrigin>& timeList = beginOrEnd == Begin ? m_beginTimes : m_endTimes; if (beginOrEnd == End) m_hasEndEventConditions = false; HashSet<double> existing; for (unsigned n = 0; n < timeList.size(); ++n) existing.add(timeList[n].time().value()); Vector<String> splitString; parseString.split(';', splitString); for (unsigned n = 0; n < splitString.size(); ++n) { SMILTime value = parseClockValue(splitString[n]); if (value.isUnresolved()) parseCondition(splitString[n], beginOrEnd); else if (!existing.contains(value.value())) timeList.append(SMILTimeWithOrigin(value, SMILTimeWithOrigin::ParserOrigin)); } sortTimeList(timeList); }