Index: Source/core/css/parser/CSSSelectorParser.cpp |
diff --git a/Source/core/css/parser/CSSSelectorParser.cpp b/Source/core/css/parser/CSSSelectorParser.cpp |
index 132684f979537e1079eb5b4e1c28ad34605add94..75d6fb21f078e3935bb0fef1d11c0f73cbcfbbfb 100644 |
--- a/Source/core/css/parser/CSSSelectorParser.cpp |
+++ b/Source/core/css/parser/CSSSelectorParser.cpp |
@@ -261,6 +261,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); |
@@ -282,8 +289,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(); |
} |