| 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" |
| 11 | 11 |
| 12 namespace WebCore { | 12 namespace WebCore { |
| 13 | 13 |
| 14 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseMediaQuerySet(const
String& queryString) | 14 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseMediaQuerySet(const
String& queryString) |
| 15 { | 15 { |
| 16 // FIXME: Replace the MediaQueryTokenizer with a generic CSSTokenizer, once
there is one, | 16 // FIXME: Replace the MediaQueryTokenizer with a generic CSSTokenizer, once
there is one, |
| 17 // or better yet, replace the MediaQueryParser with a generic thread-safe CS
S parser. | 17 // or better yet, replace the MediaQueryParser with a generic thread-safe CS
S parser. |
| 18 Vector<MediaQueryToken> tokens; | 18 Vector<MediaQueryToken> tokens; |
| 19 MediaQueryTokenizer::tokenize(queryString, tokens); | 19 MediaQueryTokenizer::tokenize(queryString, tokens); |
| 20 return MediaQueryParser(MediaQuerySetParser).parseImpl(tokens.begin(), token
s.end()); | 20 return MediaQueryParser(MediaQuerySetParser).parseImpl(tokens.begin(), token
s.end()); |
| 21 } | 21 } |
| 22 | 22 |
| 23 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseMediaCondition(Toke
nIterator token, TokenIterator endToken) | 23 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseMediaCondition(Medi
aQueryTokenIterator token, MediaQueryTokenIterator endToken) |
| 24 { | 24 { |
| 25 return MediaQueryParser(MediaConditionParser).parseImpl(token, endToken); | 25 return MediaQueryParser(MediaConditionParser).parseImpl(token, endToken); |
| 26 } | 26 } |
| 27 | 27 |
| 28 const MediaQueryParser::State MediaQueryParser::ReadRestrictor = &MediaQueryPars
er::readRestrictor; | 28 const MediaQueryParser::State MediaQueryParser::ReadRestrictor = &MediaQueryPars
er::readRestrictor; |
| 29 const MediaQueryParser::State MediaQueryParser::ReadMediaType = &MediaQueryParse
r::readMediaType; | 29 const MediaQueryParser::State MediaQueryParser::ReadMediaType = &MediaQueryParse
r::readMediaType; |
| 30 const MediaQueryParser::State MediaQueryParser::ReadAnd = &MediaQueryParser::rea
dAnd; | 30 const MediaQueryParser::State MediaQueryParser::ReadAnd = &MediaQueryParser::rea
dAnd; |
| 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; |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 | 180 |
| 181 handleBlocks(token); | 181 handleBlocks(token); |
| 182 m_blockWatcher.handleToken(token); | 182 m_blockWatcher.handleToken(token); |
| 183 | 183 |
| 184 // Call the function that handles current state | 184 // Call the function that handles current state |
| 185 if (type != WhitespaceToken && type != CommentToken) | 185 if (type != WhitespaceToken && type != CommentToken) |
| 186 ((this)->*(m_state))(type, token); | 186 ((this)->*(m_state))(type, token); |
| 187 } | 187 } |
| 188 | 188 |
| 189 // The state machine loop | 189 // The state machine loop |
| 190 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl(TokenIterator
token, TokenIterator endToken) | 190 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl(MediaQueryToke
nIterator token, MediaQueryTokenIterator endToken) |
| 191 { | 191 { |
| 192 for (; token != endToken; ++token) | 192 for (; token != endToken; ++token) |
| 193 processToken(*token); | 193 processToken(*token); |
| 194 | 194 |
| 195 if (m_state != ReadAnd && m_state != ReadRestrictor && m_state != Done && (m
_parserType != MediaConditionParser || m_state != ReadFeatureStart)) | 195 if (m_state != ReadAnd && m_state != ReadRestrictor && m_state != Done && (m
_parserType != MediaConditionParser || m_state != ReadFeatureStart)) |
| 196 m_querySet->addMediaQuery(MediaQuery::createNotAll()); | 196 m_querySet->addMediaQuery(MediaQuery::createNotAll()); |
| 197 else if (m_mediaQueryData.currentMediaQueryChanged()) | 197 else if (m_mediaQueryData.currentMediaQueryChanged()) |
| 198 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); | 198 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); |
| 199 | 199 |
| 200 return m_querySet; | 200 return m_querySet; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 m_valueList.addValue(value); | 254 m_valueList.addValue(value); |
| 255 } | 255 } |
| 256 | 256 |
| 257 void MediaQueryData::setMediaType(const String& mediaType) | 257 void MediaQueryData::setMediaType(const String& mediaType) |
| 258 { | 258 { |
| 259 m_mediaType = mediaType; | 259 m_mediaType = mediaType; |
| 260 m_mediaTypeSet = true; | 260 m_mediaTypeSet = true; |
| 261 } | 261 } |
| 262 | 262 |
| 263 } // namespace WebCore | 263 } // namespace WebCore |
| OLD | NEW |