| 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 #ifndef MediaQueryParser_h | 5 #ifndef MediaQueryParser_h |
| 6 #define MediaQueryParser_h | 6 #define MediaQueryParser_h |
| 7 | 7 |
| 8 #include "core/CoreExport.h" | 8 #include "core/CoreExport.h" |
| 9 #include "core/css/MediaList.h" | 9 #include "core/css/MediaList.h" |
| 10 #include "core/css/MediaQuery.h" | 10 #include "core/css/MediaQuery.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 String m_mediaFeature; | 29 String m_mediaFeature; |
| 30 Vector<CSSParserToken, 4> m_valueList; | 30 Vector<CSSParserToken, 4> m_valueList; |
| 31 bool m_mediaTypeSet; | 31 bool m_mediaTypeSet; |
| 32 | 32 |
| 33 public: | 33 public: |
| 34 MediaQueryData(); | 34 MediaQueryData(); |
| 35 void clear(); | 35 void clear(); |
| 36 bool addExpression(); | 36 bool addExpression(); |
| 37 bool tryAddParserToken(CSSParserTokenType, const CSSParserToken&); | 37 bool tryAddParserToken(CSSParserTokenType, const CSSParserToken&); |
| 38 void setMediaType(const String&); | 38 void setMediaType(const String&); |
| 39 MediaQuery* takeMediaQuery(); | 39 std::unique_ptr<MediaQuery> takeMediaQuery(); |
| 40 | 40 |
| 41 inline bool currentMediaQueryChanged() const { | 41 inline bool currentMediaQueryChanged() const { |
| 42 return (m_restrictor != MediaQuery::None || m_mediaTypeSet || | 42 return (m_restrictor != MediaQuery::None || m_mediaTypeSet || |
| 43 m_expressions.size() > 0); | 43 m_expressions.size() > 0); |
| 44 } | 44 } |
| 45 inline MediaQuery::RestrictorType restrictor() { return m_restrictor; } | 45 inline MediaQuery::RestrictorType restrictor() { return m_restrictor; } |
| 46 | 46 |
| 47 inline void setRestrictor(MediaQuery::RestrictorType restrictor) { | 47 inline void setRestrictor(MediaQuery::RestrictorType restrictor) { |
| 48 m_restrictor = restrictor; | 48 m_restrictor = restrictor; |
| 49 } | 49 } |
| 50 | 50 |
| 51 inline void setMediaFeature(const String& str) { m_mediaFeature = str; } | 51 inline void setMediaFeature(const String& str) { m_mediaFeature = str; } |
| 52 }; | 52 }; |
| 53 | 53 |
| 54 class CORE_EXPORT MediaQueryParser { | 54 class CORE_EXPORT MediaQueryParser { |
| 55 STACK_ALLOCATED(); | 55 STACK_ALLOCATED(); |
| 56 WTF_MAKE_NONCOPYABLE(MediaQueryParser); | 56 WTF_MAKE_NONCOPYABLE(MediaQueryParser); |
| 57 | 57 |
| 58 public: | 58 public: |
| 59 static MediaQuerySet* parseMediaQuerySet(const String&); | 59 static RefPtr<MediaQuerySet> parseMediaQuerySet(const String&); |
| 60 static MediaQuerySet* parseMediaQuerySet(CSSParserTokenRange); | 60 static RefPtr<MediaQuerySet> parseMediaQuerySet(CSSParserTokenRange); |
| 61 static MediaQuerySet* parseMediaCondition(CSSParserTokenRange); | 61 static RefPtr<MediaQuerySet> parseMediaCondition(CSSParserTokenRange); |
| 62 | 62 |
| 63 private: | 63 private: |
| 64 enum ParserType { | 64 enum ParserType { |
| 65 MediaQuerySetParser, | 65 MediaQuerySetParser, |
| 66 MediaConditionParser, | 66 MediaConditionParser, |
| 67 }; | 67 }; |
| 68 | 68 |
| 69 MediaQueryParser(ParserType); | 69 MediaQueryParser(ParserType); |
| 70 virtual ~MediaQueryParser(); | 70 virtual ~MediaQueryParser(); |
| 71 | 71 |
| 72 MediaQuerySet* parseImpl(CSSParserTokenRange); | 72 RefPtr<MediaQuerySet> parseImpl(CSSParserTokenRange); |
| 73 | 73 |
| 74 void processToken(const CSSParserToken&); | 74 void processToken(const CSSParserToken&); |
| 75 | 75 |
| 76 void readRestrictor(CSSParserTokenType, const CSSParserToken&); | 76 void readRestrictor(CSSParserTokenType, const CSSParserToken&); |
| 77 void readMediaNot(CSSParserTokenType, const CSSParserToken&); | 77 void readMediaNot(CSSParserTokenType, const CSSParserToken&); |
| 78 void readMediaType(CSSParserTokenType, const CSSParserToken&); | 78 void readMediaType(CSSParserTokenType, const CSSParserToken&); |
| 79 void readAnd(CSSParserTokenType, const CSSParserToken&); | 79 void readAnd(CSSParserTokenType, const CSSParserToken&); |
| 80 void readFeatureStart(CSSParserTokenType, const CSSParserToken&); | 80 void readFeatureStart(CSSParserTokenType, const CSSParserToken&); |
| 81 void readFeature(CSSParserTokenType, const CSSParserToken&); | 81 void readFeature(CSSParserTokenType, const CSSParserToken&); |
| 82 void readFeatureColon(CSSParserTokenType, const CSSParserToken&); | 82 void readFeatureColon(CSSParserTokenType, const CSSParserToken&); |
| 83 void readFeatureValue(CSSParserTokenType, const CSSParserToken&); | 83 void readFeatureValue(CSSParserTokenType, const CSSParserToken&); |
| 84 void readFeatureEnd(CSSParserTokenType, const CSSParserToken&); | 84 void readFeatureEnd(CSSParserTokenType, const CSSParserToken&); |
| 85 void skipUntilComma(CSSParserTokenType, const CSSParserToken&); | 85 void skipUntilComma(CSSParserTokenType, const CSSParserToken&); |
| 86 void skipUntilBlockEnd(CSSParserTokenType, const CSSParserToken&); | 86 void skipUntilBlockEnd(CSSParserTokenType, const CSSParserToken&); |
| 87 void done(CSSParserTokenType, const CSSParserToken&); | 87 void done(CSSParserTokenType, const CSSParserToken&); |
| 88 | 88 |
| 89 using State = void (MediaQueryParser::*)(CSSParserTokenType, | 89 using State = void (MediaQueryParser::*)(CSSParserTokenType, |
| 90 const CSSParserToken&); | 90 const CSSParserToken&); |
| 91 | 91 |
| 92 void setStateAndRestrict(State, MediaQuery::RestrictorType); | 92 void setStateAndRestrict(State, MediaQuery::RestrictorType); |
| 93 void handleBlocks(const CSSParserToken&); | 93 void handleBlocks(const CSSParserToken&); |
| 94 | 94 |
| 95 State m_state; | 95 State m_state; |
| 96 ParserType m_parserType; | 96 ParserType m_parserType; |
| 97 MediaQueryData m_mediaQueryData; | 97 MediaQueryData m_mediaQueryData; |
| 98 Member<MediaQuerySet> m_querySet; | 98 RefPtr<MediaQuerySet> m_querySet; |
| 99 MediaQueryBlockWatcher m_blockWatcher; | 99 MediaQueryBlockWatcher m_blockWatcher; |
| 100 | 100 |
| 101 const static State ReadRestrictor; | 101 const static State ReadRestrictor; |
| 102 const static State ReadMediaNot; | 102 const static State ReadMediaNot; |
| 103 const static State ReadMediaType; | 103 const static State ReadMediaType; |
| 104 const static State ReadAnd; | 104 const static State ReadAnd; |
| 105 const static State ReadFeatureStart; | 105 const static State ReadFeatureStart; |
| 106 const static State ReadFeature; | 106 const static State ReadFeature; |
| 107 const static State ReadFeatureColon; | 107 const static State ReadFeatureColon; |
| 108 const static State ReadFeatureValue; | 108 const static State ReadFeatureValue; |
| 109 const static State ReadFeatureEnd; | 109 const static State ReadFeatureEnd; |
| 110 const static State SkipUntilComma; | 110 const static State SkipUntilComma; |
| 111 const static State SkipUntilBlockEnd; | 111 const static State SkipUntilBlockEnd; |
| 112 const static State Done; | 112 const static State Done; |
| 113 }; | 113 }; |
| 114 | 114 |
| 115 } // namespace blink | 115 } // namespace blink |
| 116 | 116 |
| 117 #endif // MediaQueryParser_h | 117 #endif // MediaQueryParser_h |
| OLD | NEW |