| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/css/parser/MediaQueryParser.h" | 6 #include "core/css/parser/MediaQueryParser.h" |
| 7 | 7 |
| 8 #include "MediaTypeNames.h" | 8 #include "MediaTypeNames.h" |
| 9 #include "core/css/parser/CSSPropertyParser.h" | 9 #include "core/css/parser/CSSPropertyParser.h" |
| 10 #include "core/css/parser/MediaQueryTokenizer.h" | 10 #include "core/css/parser/MediaQueryTokenizer.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 const MediaQueryParser::State MediaQueryParser::ReadFeatureStart = &MediaQueryPa
rser::readFeatureStart; | 31 const MediaQueryParser::State MediaQueryParser::ReadFeatureStart = &MediaQueryPa
rser::readFeatureStart; |
| 32 const MediaQueryParser::State MediaQueryParser::ReadFeature = &MediaQueryParser:
:readFeature; | 32 const MediaQueryParser::State MediaQueryParser::ReadFeature = &MediaQueryParser:
:readFeature; |
| 33 const MediaQueryParser::State MediaQueryParser::ReadFeatureColon = &MediaQueryPa
rser::readFeatureColon; | 33 const MediaQueryParser::State MediaQueryParser::ReadFeatureColon = &MediaQueryPa
rser::readFeatureColon; |
| 34 const MediaQueryParser::State MediaQueryParser::ReadFeatureValue = &MediaQueryPa
rser::readFeatureValue; | 34 const MediaQueryParser::State MediaQueryParser::ReadFeatureValue = &MediaQueryPa
rser::readFeatureValue; |
| 35 const MediaQueryParser::State MediaQueryParser::ReadFeatureEnd = &MediaQueryPars
er::readFeatureEnd; | 35 const MediaQueryParser::State MediaQueryParser::ReadFeatureEnd = &MediaQueryPars
er::readFeatureEnd; |
| 36 const MediaQueryParser::State MediaQueryParser::SkipUntilComma = &MediaQueryPars
er::skipUntilComma; | 36 const MediaQueryParser::State MediaQueryParser::SkipUntilComma = &MediaQueryPars
er::skipUntilComma; |
| 37 const MediaQueryParser::State MediaQueryParser::SkipUntilBlockEnd = &MediaQueryP
arser::skipUntilBlockEnd; | 37 const MediaQueryParser::State MediaQueryParser::SkipUntilBlockEnd = &MediaQueryP
arser::skipUntilBlockEnd; |
| 38 const MediaQueryParser::State MediaQueryParser::Done = &MediaQueryParser::done; | 38 const MediaQueryParser::State MediaQueryParser::Done = &MediaQueryParser::done; |
| 39 | 39 |
| 40 MediaQueryParser::MediaQueryParser(ParserType parserType) | 40 MediaQueryParser::MediaQueryParser(ParserType parserType) |
| 41 : m_querySet(MediaQuerySet::create()) | 41 : m_parserType(parserType) |
| 42 , m_querySet(MediaQuerySet::create()) |
| 42 { | 43 { |
| 43 if (parserType == MediaQuerySetParser) | 44 if (parserType == MediaQuerySetParser) |
| 44 m_state = &MediaQueryParser::readRestrictor; | 45 m_state = &MediaQueryParser::readRestrictor; |
| 45 else // MediaConditionParser | 46 else // MediaConditionParser |
| 46 m_state = &MediaQueryParser::readFeatureStart; | 47 m_state = &MediaQueryParser::readFeatureStart; |
| 47 } | 48 } |
| 48 | 49 |
| 49 MediaQueryParser::~MediaQueryParser() { }; | 50 MediaQueryParser::~MediaQueryParser() { }; |
| 50 | 51 |
| 51 void MediaQueryParser::setStateAndRestrict(State state, MediaQuery::Restrictor r
estrictor) | 52 void MediaQueryParser::setStateAndRestrict(State state, MediaQuery::Restrictor r
estrictor) |
| (...skipping 27 matching lines...) Expand all Loading... |
| 79 m_state = SkipUntilComma; | 80 m_state = SkipUntilComma; |
| 80 if (type == CommaToken) | 81 if (type == CommaToken) |
| 81 skipUntilComma(type, token); | 82 skipUntilComma(type, token); |
| 82 } | 83 } |
| 83 } | 84 } |
| 84 | 85 |
| 85 void MediaQueryParser::readAnd(MediaQueryTokenType type, const MediaQueryToken&
token) | 86 void MediaQueryParser::readAnd(MediaQueryTokenType type, const MediaQueryToken&
token) |
| 86 { | 87 { |
| 87 if (type == IdentToken && equalIgnoringCase(token.value(), "and")) { | 88 if (type == IdentToken && equalIgnoringCase(token.value(), "and")) { |
| 88 m_state = ReadFeatureStart; | 89 m_state = ReadFeatureStart; |
| 89 } else if (type == CommaToken) { | 90 } else if (type == CommaToken && m_parserType != MediaConditionParser) { |
| 90 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); | 91 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); |
| 91 m_state = ReadRestrictor; | 92 m_state = ReadRestrictor; |
| 92 } else if (type == EOFToken) { | 93 } else if (type == EOFToken) { |
| 93 m_state = Done; | 94 m_state = Done; |
| 94 } else { | 95 } else { |
| 95 m_state = SkipUntilComma; | 96 m_state = SkipUntilComma; |
| 96 } | 97 } |
| 97 } | 98 } |
| 98 | 99 |
| 99 void MediaQueryParser::readFeatureStart(MediaQueryTokenType type, const MediaQue
ryToken& token) | 100 void MediaQueryParser::readFeatureStart(MediaQueryTokenType type, const MediaQue
ryToken& token) |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 if (type != WhitespaceToken && type != CommentToken) | 185 if (type != WhitespaceToken && type != CommentToken) |
| 185 ((this)->*(m_state))(type, token); | 186 ((this)->*(m_state))(type, token); |
| 186 } | 187 } |
| 187 | 188 |
| 188 // The state machine loop | 189 // The state machine loop |
| 189 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl(TokenIterator
token, TokenIterator endToken) | 190 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl(TokenIterator
token, TokenIterator endToken) |
| 190 { | 191 { |
| 191 for (; token != endToken; ++token) | 192 for (; token != endToken; ++token) |
| 192 processToken(*token); | 193 processToken(*token); |
| 193 | 194 |
| 194 if (m_state != ReadAnd && m_state != ReadRestrictor && m_state != Done) | 195 if (m_state != ReadAnd && m_state != ReadRestrictor && m_state != Done && (m
_parserType != MediaConditionParser || m_state != ReadFeatureStart)) |
| 195 m_querySet->addMediaQuery(MediaQuery::createNotAll()); | 196 m_querySet->addMediaQuery(MediaQuery::createNotAll()); |
| 196 else if (m_mediaQueryData.currentMediaQueryChanged()) | 197 else if (m_mediaQueryData.currentMediaQueryChanged()) |
| 197 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); | 198 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); |
| 198 | 199 |
| 199 return m_querySet; | 200 return m_querySet; |
| 200 } | 201 } |
| 201 | 202 |
| 202 MediaQueryData::MediaQueryData() | 203 MediaQueryData::MediaQueryData() |
| 203 : m_restrictor(MediaQuery::None) | 204 : m_restrictor(MediaQuery::None) |
| 204 , m_mediaType(MediaTypeNames::all) | 205 , m_mediaType(MediaTypeNames::all) |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 m_valueList.addValue(value); | 254 m_valueList.addValue(value); |
| 254 } | 255 } |
| 255 | 256 |
| 256 void MediaQueryData::setMediaType(const String& mediaType) | 257 void MediaQueryData::setMediaType(const String& mediaType) |
| 257 { | 258 { |
| 258 m_mediaType = mediaType; | 259 m_mediaType = mediaType; |
| 259 m_mediaTypeSet = true; | 260 m_mediaTypeSet = true; |
| 260 } | 261 } |
| 261 | 262 |
| 262 } // namespace WebCore | 263 } // namespace WebCore |
| OLD | NEW |