Chromium Code Reviews| Index: Source/core/css/parser/MediaQueryParser.cpp |
| diff --git a/Source/core/css/parser/MediaQueryParser.cpp b/Source/core/css/parser/MediaQueryParser.cpp |
| index f1a1a2438223bb92fdd8678db216f0cff21c14f5..92e3fe0dd6269062dc80bc3a0b4a158c4ee4f529 100644 |
| --- a/Source/core/css/parser/MediaQueryParser.cpp |
| +++ b/Source/core/css/parser/MediaQueryParser.cpp |
| @@ -79,15 +79,25 @@ void MediaQueryParser::readMediaNot(CSSParserTokenType type, const CSSParserToke |
| void MediaQueryParser::readMediaType(CSSParserTokenType type, const CSSParserToken& token) |
| { |
| if (type == LeftParenthesisToken) { |
| - m_state = ReadFeature; |
| + if (m_mediaQueryData.restrictor() != MediaQuery::None) |
| + m_state = SkipUntilComma; |
| + else |
| + m_state = ReadFeature; |
| } else if (type == IdentToken) { |
| if (m_state == ReadRestrictor && equalIgnoringCase(token.value(), "not")) { |
| setStateAndRestrict(ReadMediaType, MediaQuery::Not); |
| } else if (m_state == ReadRestrictor && equalIgnoringCase(token.value(), "only")) { |
| setStateAndRestrict(ReadMediaType, MediaQuery::Only); |
| } else { |
|
Yoav Weiss
2015/01/30 08:31:51
Nit: Can you make that an "else if"?
|
| - m_mediaQueryData.setMediaType(token.value()); |
| - m_state = ReadAnd; |
| + if (m_mediaQueryData.restrictor() != MediaQuery::None && (equalIgnoringCase(token.value(), "not") |
| + || equalIgnoringCase(token.value(), "and") |
| + || equalIgnoringCase(token.value(), "or") |
| + || equalIgnoringCase(token.value(), "only"))) { |
|
Yoav Weiss
2015/01/30 08:31:51
Can you break out the "equqlIgnoringCase"s into th
|
| + m_state = SkipUntilComma; |
| + } else { |
| + m_mediaQueryData.setMediaType(token.value()); |
| + m_state = ReadAnd; |
| + } |
| } |
| } else if (type == EOFToken && (!m_querySet->queryVector().size() || m_state != ReadRestrictor)) { |
| m_state = Done; |