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

Unified Diff: Source/core/css/parser/MediaQueryParser.cpp

Issue 223643002: Enable Media condition parsing on the MQ parser (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebased. Fixed nit. Created 6 years, 8 months 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 | « Source/core/css/parser/MediaQueryParser.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/parser/MediaQueryParser.cpp
diff --git a/Source/core/css/parser/MediaQueryParser.cpp b/Source/core/css/parser/MediaQueryParser.cpp
index 108a299ddb25fc80a79e74bf29be43080513b1b3..b90d155476965972ba2443654c25df52816d2482 100644
--- a/Source/core/css/parser/MediaQueryParser.cpp
+++ b/Source/core/css/parser/MediaQueryParser.cpp
@@ -11,9 +11,18 @@
namespace WebCore {
-PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parse(const String& queryString)
+PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseMediaQuerySet(const String& queryString)
{
- return MediaQueryParser(queryString).parseImpl();
+ // FIXME: Replace the MediaQueryTokenizer with a generic CSSTokenizer, once there is one,
+ // or better yet, replace the MediaQueryParser with a generic thread-safe CSS parser.
+ Vector<MediaQueryToken> tokens;
+ MediaQueryTokenizer::tokenize(queryString, tokens);
+ return MediaQueryParser(MediaQuerySetParser).parseImpl(tokens.begin(), tokens.end());
+}
+
+PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseMediaCondition(TokenIterator token, TokenIterator endToken)
+{
+ return MediaQueryParser(MediaConditionParser).parseImpl(token, endToken);
}
const MediaQueryParser::State MediaQueryParser::ReadRestrictor = &MediaQueryParser::readRestrictor;
@@ -28,15 +37,17 @@ const MediaQueryParser::State MediaQueryParser::SkipUntilComma = &MediaQueryPars
const MediaQueryParser::State MediaQueryParser::SkipUntilBlockEnd = &MediaQueryParser::skipUntilBlockEnd;
const MediaQueryParser::State MediaQueryParser::Done = &MediaQueryParser::done;
-// FIXME: Replace the MediaQueryTokenizer with a generic CSSTokenizer, once there is one,
-// or better yet, replace the MediaQueryParser with a generic thread-safe CSS parser.
-MediaQueryParser::MediaQueryParser(const String& queryString)
- : m_state(&MediaQueryParser::readRestrictor)
- , m_querySet(MediaQuerySet::create())
+MediaQueryParser::MediaQueryParser(ParserType parserType)
+ : m_querySet(MediaQuerySet::create())
{
- MediaQueryTokenizer::tokenize(queryString, m_tokens);
+ if (parserType == MediaQuerySetParser)
+ m_state = &MediaQueryParser::readRestrictor;
+ else // MediaConditionParser
+ m_state = &MediaQueryParser::readFeatureStart;
}
+MediaQueryParser::~MediaQueryParser() { };
+
void MediaQueryParser::setStateAndRestrict(State state, MediaQuery::Restrictor restrictor)
{
m_mediaQueryData.setRestrictor(restrictor);
@@ -205,9 +216,9 @@ void MediaQueryParser::processToken(TokenIterator& token)
}
// The state machine loop
-PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl()
+PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl(TokenIterator token, TokenIterator endToken)
{
- for (Vector<MediaQueryToken>::iterator token = m_tokens.begin(); token != m_tokens.end(); ++token)
+ for (; token != endToken; ++token)
processToken(token);
if (m_state != ReadAnd && m_state != ReadRestrictor && m_state != Done)
« no previous file with comments | « Source/core/css/parser/MediaQueryParser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698