| 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 media_feature_; | 29 String media_feature_; |
| 30 Vector<CSSParserToken, 4> value_list_; | 30 Vector<CSSParserToken, 4> value_list_; |
| 31 bool media_type_set_; | 31 bool media_type_set_; |
| 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 (restrictor_ != MediaQuery::kNone || media_type_set_ || | 42 return (restrictor_ != MediaQuery::kNone || media_type_set_ || |
| 43 expressions_.size() > 0); | 43 expressions_.size() > 0); |
| 44 } | 44 } |
| 45 inline MediaQuery::RestrictorType Restrictor() { return restrictor_; } | 45 inline MediaQuery::RestrictorType Restrictor() { return restrictor_; } |
| 46 | 46 |
| 47 inline void SetRestrictor(MediaQuery::RestrictorType restrictor) { | 47 inline void SetRestrictor(MediaQuery::RestrictorType restrictor) { |
| 48 restrictor_ = restrictor; | 48 restrictor_ = restrictor; |
| 49 } | 49 } |
| 50 | 50 |
| 51 inline void SetMediaFeature(const String& str) { media_feature_ = str; } | 51 inline void SetMediaFeature(const String& str) { media_feature_ = 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 kMediaQuerySetParser, | 65 kMediaQuerySetParser, |
| 66 kMediaConditionParser, | 66 kMediaConditionParser, |
| 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 state_; | 95 State state_; |
| 96 ParserType parser_type_; | 96 ParserType parser_type_; |
| 97 MediaQueryData media_query_data_; | 97 MediaQueryData media_query_data_; |
| 98 Member<MediaQuerySet> query_set_; | 98 RefPtr<MediaQuerySet> query_set_; |
| 99 MediaQueryBlockWatcher block_watcher_; | 99 MediaQueryBlockWatcher block_watcher_; |
| 100 | 100 |
| 101 const static State kReadRestrictor; | 101 const static State kReadRestrictor; |
| 102 const static State kReadMediaNot; | 102 const static State kReadMediaNot; |
| 103 const static State kReadMediaType; | 103 const static State kReadMediaType; |
| 104 const static State kReadAnd; | 104 const static State kReadAnd; |
| 105 const static State kReadFeatureStart; | 105 const static State kReadFeatureStart; |
| 106 const static State kReadFeature; | 106 const static State kReadFeature; |
| 107 const static State kReadFeatureColon; | 107 const static State kReadFeatureColon; |
| 108 const static State kReadFeatureValue; | 108 const static State kReadFeatureValue; |
| 109 const static State kReadFeatureEnd; | 109 const static State kReadFeatureEnd; |
| 110 const static State kSkipUntilComma; | 110 const static State kSkipUntilComma; |
| 111 const static State kSkipUntilBlockEnd; | 111 const static State kSkipUntilBlockEnd; |
| 112 const static State kDone; | 112 const static State kDone; |
| 113 }; | 113 }; |
| 114 | 114 |
| 115 } // namespace blink | 115 } // namespace blink |
| 116 | 116 |
| 117 #endif // MediaQueryParser_h | 117 #endif // MediaQueryParser_h |
| OLD | NEW |