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_parserType(parserType) | 41 : m_querySet(MediaQuerySet::create()) |
42 , m_querySet(MediaQuerySet::create()) | |
43 { | 42 { |
44 if (parserType == MediaQuerySetParser) | 43 if (parserType == MediaQuerySetParser) |
45 m_state = &MediaQueryParser::readRestrictor; | 44 m_state = &MediaQueryParser::readRestrictor; |
46 else // MediaConditionParser | 45 else // MediaConditionParser |
47 m_state = &MediaQueryParser::readFeatureStart; | 46 m_state = &MediaQueryParser::readFeatureStart; |
48 } | 47 } |
49 | 48 |
50 MediaQueryParser::~MediaQueryParser() { }; | 49 MediaQueryParser::~MediaQueryParser() { }; |
51 | 50 |
52 void MediaQueryParser::setStateAndRestrict(State state, MediaQuery::Restrictor r
estrictor) | 51 void MediaQueryParser::setStateAndRestrict(State state, MediaQuery::Restrictor r
estrictor) |
(...skipping 27 matching lines...) Expand all Loading... |
80 m_state = SkipUntilComma; | 79 m_state = SkipUntilComma; |
81 if (type == CommaToken) | 80 if (type == CommaToken) |
82 skipUntilComma(type, token); | 81 skipUntilComma(type, token); |
83 } | 82 } |
84 } | 83 } |
85 | 84 |
86 void MediaQueryParser::readAnd(MediaQueryTokenType type, const MediaQueryToken&
token) | 85 void MediaQueryParser::readAnd(MediaQueryTokenType type, const MediaQueryToken&
token) |
87 { | 86 { |
88 if (type == IdentToken && equalIgnoringCase(token.value(), "and")) { | 87 if (type == IdentToken && equalIgnoringCase(token.value(), "and")) { |
89 m_state = ReadFeatureStart; | 88 m_state = ReadFeatureStart; |
90 } else if (type == CommaToken && m_parserType != MediaConditionParser) { | 89 } else if (type == CommaToken) { |
91 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); | 90 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); |
92 m_state = ReadRestrictor; | 91 m_state = ReadRestrictor; |
93 } else if (type == EOFToken) { | 92 } else if (type == EOFToken) { |
94 m_state = Done; | 93 m_state = Done; |
95 } else { | 94 } else { |
96 m_state = SkipUntilComma; | 95 m_state = SkipUntilComma; |
97 } | 96 } |
98 } | 97 } |
99 | 98 |
100 void MediaQueryParser::readFeatureStart(MediaQueryTokenType type, const MediaQue
ryToken& token) | 99 void MediaQueryParser::readFeatureStart(MediaQueryTokenType type, const MediaQue
ryToken& token) |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 if (type != WhitespaceToken && type != CommentToken) | 184 if (type != WhitespaceToken && type != CommentToken) |
186 ((this)->*(m_state))(type, token); | 185 ((this)->*(m_state))(type, token); |
187 } | 186 } |
188 | 187 |
189 // The state machine loop | 188 // The state machine loop |
190 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl(TokenIterator
token, TokenIterator endToken) | 189 PassRefPtrWillBeRawPtr<MediaQuerySet> MediaQueryParser::parseImpl(TokenIterator
token, TokenIterator endToken) |
191 { | 190 { |
192 for (; token != endToken; ++token) | 191 for (; token != endToken; ++token) |
193 processToken(*token); | 192 processToken(*token); |
194 | 193 |
195 if (m_state != ReadAnd && m_state != ReadRestrictor && m_state != Done && (m
_parserType != MediaConditionParser || m_state != ReadFeatureStart)) | 194 if (m_state != ReadAnd && m_state != ReadRestrictor && m_state != Done) |
196 m_querySet->addMediaQuery(MediaQuery::createNotAll()); | 195 m_querySet->addMediaQuery(MediaQuery::createNotAll()); |
197 else if (m_mediaQueryData.currentMediaQueryChanged()) | 196 else if (m_mediaQueryData.currentMediaQueryChanged()) |
198 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); | 197 m_querySet->addMediaQuery(m_mediaQueryData.takeMediaQuery()); |
199 | 198 |
200 return m_querySet; | 199 return m_querySet; |
201 } | 200 } |
202 | 201 |
203 MediaQueryData::MediaQueryData() | 202 MediaQueryData::MediaQueryData() |
204 : m_restrictor(MediaQuery::None) | 203 : m_restrictor(MediaQuery::None) |
205 , m_mediaType(MediaTypeNames::all) | 204 , m_mediaType(MediaTypeNames::all) |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 m_valueList.addValue(value); | 253 m_valueList.addValue(value); |
255 } | 254 } |
256 | 255 |
257 void MediaQueryData::setMediaType(const String& mediaType) | 256 void MediaQueryData::setMediaType(const String& mediaType) |
258 { | 257 { |
259 m_mediaType = mediaType; | 258 m_mediaType = mediaType; |
260 m_mediaTypeSet = true; | 259 m_mediaTypeSet = true; |
261 } | 260 } |
262 | 261 |
263 } // namespace WebCore | 262 } // namespace WebCore |
OLD | NEW |