Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Unified Diff: third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp

Issue 2521043002: Revert of Use switch-case for CSS delimiter parsing (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
diff --git a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
index 25127417b716e9bda5c0a7e0b083ef24ffb096b4..4d12e5759fc253124c19cf35e982edffc3d22c86 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
@@ -604,53 +604,48 @@
if (range.peek().type() != DelimiterToken)
return fallbackResult;
- switch (range.peek().delimiter()) {
- case '+':
+ UChar delimiter = range.peek().delimiter();
+
+ if (delimiter == '+' || delimiter == '~') {
+ range.consumeIncludingWhitespace();
+ if (delimiter == '+')
+ return CSSSelector::DirectAdjacent;
+ return CSSSelector::IndirectAdjacent;
+ }
+
+ if (delimiter == '>') {
+ if (!RuntimeEnabledFeatures::shadowPiercingDescendantCombinatorEnabled() ||
+ m_context.isDynamicProfile() ||
+ range.peek(1).type() != DelimiterToken ||
+ range.peek(1).delimiter() != '>') {
range.consumeIncludingWhitespace();
- return CSSSelector::DirectAdjacent;
-
- case '~':
- range.consumeIncludingWhitespace();
- return CSSSelector::IndirectAdjacent;
-
- case '>':
- if (!RuntimeEnabledFeatures::
- shadowPiercingDescendantCombinatorEnabled() ||
- m_context.isDynamicProfile() ||
- range.peek(1).type() != DelimiterToken ||
- range.peek(1).delimiter() != '>') {
- range.consumeIncludingWhitespace();
- return CSSSelector::Child;
- }
- range.consume();
-
- // Check the 3rd '>'.
- if (range.peek(1).type() != DelimiterToken ||
- range.peek(1).delimiter() != '>') {
- // TODO: Treat '>>' as a CSSSelector::Descendant here.
- return CSSSelector::Child;
- }
- range.consume();
- range.consumeIncludingWhitespace();
- return CSSSelector::ShadowPiercingDescendant;
-
- case '/': {
- // Match /deep/
- range.consume();
- const CSSParserToken& ident = range.consume();
- if (ident.type() != IdentToken ||
- !equalIgnoringASCIICase(ident.value(), "deep"))
- m_failedParsing = true;
- const CSSParserToken& slash = range.consumeIncludingWhitespace();
- if (slash.type() != DelimiterToken || slash.delimiter() != '/')
- m_failedParsing = true;
- return CSSSelector::ShadowDeep;
- }
-
- default:
- break;
- }
- return fallbackResult;
+ return CSSSelector::Child;
+ }
+ range.consume();
+
+ // Check the 3rd '>'.
+ if (range.peek(1).type() != DelimiterToken ||
+ range.peek(1).delimiter() != '>') {
+ // TODO: Treat '>>' as a CSSSelector::Descendant here.
+ return CSSSelector::Child;
+ }
+ range.consume();
+ range.consumeIncludingWhitespace();
+ return CSSSelector::ShadowPiercingDescendant;
+ }
+
+ // Match /deep/
+ if (delimiter != '/')
+ return fallbackResult;
+ range.consume();
+ const CSSParserToken& ident = range.consume();
+ if (ident.type() != IdentToken ||
+ !equalIgnoringASCIICase(ident.value(), "deep"))
+ m_failedParsing = true;
+ const CSSParserToken& slash = range.consumeIncludingWhitespace();
+ if (slash.type() != DelimiterToken || slash.delimiter() != '/')
+ m_failedParsing = true;
+ return CSSSelector::ShadowDeep;
}
CSSSelector::MatchType CSSSelectorParser::consumeAttributeMatch(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698