Index: Source/core/css/parser/CSSSelectorParser.cpp |
diff --git a/Source/core/css/parser/CSSSelectorParser.cpp b/Source/core/css/parser/CSSSelectorParser.cpp |
index cc7d7b28e231e95f76ce4ddabc486ea386bc2331..100ef91f232dc1a5c9aec921de5405f1d6a1b27e 100644 |
--- a/Source/core/css/parser/CSSSelectorParser.cpp |
+++ b/Source/core/css/parser/CSSSelectorParser.cpp |
@@ -260,6 +260,13 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumeAttribute(CSSParserToken |
return selector.release(); |
} |
+bool CSSSelectorParser::selectorIsAllowedInParsingMode(CSSSelector::PseudoType type) const |
+{ |
+ if (isUASheetBehavior(m_context.mode())) |
+ return true; |
+ return type != CSSSelector::PseudoMarker; |
+} |
+ |
PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumePseudo(CSSParserTokenRange& range) |
{ |
ASSERT(range.peek().type() == ColonToken); |
@@ -281,8 +288,10 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumePseudo(CSSParserTokenRan |
if (token.type() == IdentToken) { |
range.consume(); |
- if (selector->pseudoType() == CSSSelector::PseudoUnknown) |
+ if (selector->pseudoType() == CSSSelector::PseudoUnknown |
+ || !selectorIsAllowedInParsingMode(selector->pseudoType())) { |
return nullptr; |
+ } |
return selector.release(); |
} |