| Index: Source/core/css/SelectorChecker.h
|
| diff --git a/Source/core/css/SelectorChecker.h b/Source/core/css/SelectorChecker.h
|
| index 563f00d6143fe2adc9b292d1499c418f203b72fb..9c12d8aa1a593049cae840ee5f1fcf5f353e5bad 100644
|
| --- a/Source/core/css/SelectorChecker.h
|
| +++ b/Source/core/css/SelectorChecker.h
|
| @@ -106,11 +106,12 @@ public:
|
|
|
| Mode mode() const { return m_mode; }
|
|
|
| - static bool tagMatches(const Element&, const QualifiedName&);
|
| + static bool tagMatches(const Element&, const CSSSelector&);
|
| static bool isCommonPseudoClassSelector(const CSSSelector&);
|
| static bool matchesFocusPseudoClass(const Element&);
|
| static bool matchesSpatialNavigationFocusPseudoClass(const Element&);
|
| static bool matchesListBoxPseudoClass(const Element&);
|
| + static bool localNameMatchesLower(const AtomicString& elementName, const AtomicString& camelCasedType);
|
|
|
| enum LinkMatchMask { MatchLink = 1, MatchVisited = 2, MatchAll = MatchLink | MatchVisited };
|
| static unsigned determineLinkMatchType(const CSSSelector&);
|
| @@ -151,13 +152,18 @@ inline bool SelectorChecker::isCommonPseudoClassSelector(const CSSSelector& sele
|
| || pseudoType == CSSSelector::PseudoFocus;
|
| }
|
|
|
| -inline bool SelectorChecker::tagMatches(const Element& element, const QualifiedName& tagQName)
|
| +inline bool SelectorChecker::tagMatches(const Element& element, const CSSSelector& selector)
|
| {
|
| + const QualifiedName& tagQName = selector.tagQName();
|
| if (tagQName == anyQName())
|
| return true;
|
| const AtomicString& localName = tagQName.localName();
|
| - if (localName != starAtom && localName != element.localName())
|
| - return false;
|
| + if (localName != starAtom && localName != element.localName()) {
|
| + if (!selector.tagIsCamelCase())
|
| + return false;
|
| + if (!localNameMatchesLower(element.localName(), localName))
|
| + return false;
|
| + }
|
| const AtomicString& namespaceURI = tagQName.namespaceURI();
|
| return namespaceURI == starAtom || namespaceURI == element.namespaceURI();
|
| }
|
|
|