Vector<AnimatedPropertyType> SVGElement::animatedPropertyTypesForAttribute(const QualifiedName& attributeName) { auto types = localAttributeToPropertyMap().types(attributeName); if (!types.isEmpty()) return types; { auto& map = attributeNameToAnimatedPropertyTypeMap(); auto it = map.find(attributeName.impl()); if (it != map.end()) { types.append(it->value); return types; } } { auto& map = cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap(); auto it = map.find(attributeName.impl()); if (it != map.end()) { types.append(it->value); return types; } } return types; }
CSSSelector::CSSSelector(const QualifiedName& tagQName, bool tagIsForNamespaceRule) : m_relation(DescendantSpace) , m_match(Tag) , m_pseudoType(0) , m_parsedNth(false) , m_isLastInSelectorList(false) , m_isLastInTagHistory(true) , m_hasRareData(false) , m_hasNameWithCase(false) , m_isForPage(false) , m_tagIsForNamespaceRule(tagIsForNamespaceRule) , m_caseInsensitiveAttributeValueMatching(false) #if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED , m_destructorHasBeenCalled(false) #endif { const AtomicString& tagLocalName = tagQName.localName(); const AtomicString tagLocalNameASCIILowercase = tagLocalName.convertToASCIILowercase(); if (tagLocalName == tagLocalNameASCIILowercase) { m_data.m_tagQName = tagQName.impl(); m_data.m_tagQName->ref(); } else { m_data.m_nameWithCase = adoptRef(new NameWithCase(tagQName, tagLocalNameASCIILowercase)).leakRef(); m_hasNameWithCase = true; } }
bool SVGElement::isAnimatableCSSProperty(const QualifiedName& attributeName) { return attributeNameToAnimatedPropertyTypeMap().contains(attributeName.impl()) || cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap().contains(attributeName.impl()); }