Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(329)

Side by Side Diff: Source/core/css/parser/MediaQueryParser.h

Issue 225293006: Moved MQ parsing block tracking to tokenizer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Debug build fix Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/css/CSSParserValues.h" 8 #include "core/css/CSSParserValues.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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 enum ParserType { 57 enum ParserType {
58 MediaQuerySetParser, 58 MediaQuerySetParser,
59 MediaConditionParser, 59 MediaConditionParser,
60 }; 60 };
61 61
62 MediaQueryParser(ParserType); 62 MediaQueryParser(ParserType);
63 virtual ~MediaQueryParser(); 63 virtual ~MediaQueryParser();
64 64
65 PassRefPtrWillBeRawPtr<MediaQuerySet> parseImpl(TokenIterator, TokenIterator endToken); 65 PassRefPtrWillBeRawPtr<MediaQuerySet> parseImpl(TokenIterator, TokenIterator endToken);
66 66
67 enum BlockType {
68 ParenthesisBlock,
69 BracketsBlock,
70 BracesBlock
71 };
72
73 enum StateChange {
74 ModifyState,
75 DoNotModifyState
76 };
77
78 struct BlockParameters {
79 MediaQueryTokenType leftToken;
80 MediaQueryTokenType rightToken;
81 BlockType blockType;
82 StateChange stateChange;
83 };
84
85 void processToken(TokenIterator&); 67 void processToken(TokenIterator&);
86 68
87 void readRestrictor(MediaQueryTokenType, TokenIterator&); 69 void readRestrictor(MediaQueryTokenType, TokenIterator&);
88 void readMediaType(MediaQueryTokenType, TokenIterator&); 70 void readMediaType(MediaQueryTokenType, TokenIterator&);
89 void readAnd(MediaQueryTokenType, TokenIterator&); 71 void readAnd(MediaQueryTokenType, TokenIterator&);
90 void readFeatureStart(MediaQueryTokenType, TokenIterator&); 72 void readFeatureStart(MediaQueryTokenType, TokenIterator&);
91 void readFeature(MediaQueryTokenType, TokenIterator&); 73 void readFeature(MediaQueryTokenType, TokenIterator&);
92 void readFeatureColon(MediaQueryTokenType, TokenIterator&); 74 void readFeatureColon(MediaQueryTokenType, TokenIterator&);
93 void readFeatureValue(MediaQueryTokenType, TokenIterator&); 75 void readFeatureValue(MediaQueryTokenType, TokenIterator&);
94 void readFeatureEnd(MediaQueryTokenType, TokenIterator&); 76 void readFeatureEnd(MediaQueryTokenType, TokenIterator&);
95 void skipUntilComma(MediaQueryTokenType, TokenIterator&); 77 void skipUntilComma(MediaQueryTokenType, TokenIterator&);
96 void skipUntilBlockEnd(MediaQueryTokenType, TokenIterator&); 78 void skipUntilBlockEnd(MediaQueryTokenType, TokenIterator&);
97 void done(MediaQueryTokenType, TokenIterator&); 79 void done(MediaQueryTokenType, TokenIterator&);
98 80
99 typedef void (MediaQueryParser::*State)(MediaQueryTokenType, TokenIterator&) ; 81 typedef void (MediaQueryParser::*State)(MediaQueryTokenType, TokenIterator&) ;
100 82
101 void setStateAndRestrict(State, MediaQuery::Restrictor); 83 void setStateAndRestrict(State, MediaQuery::Restrictor);
102 bool observeBlock(BlockParameters&, MediaQueryTokenType); 84 void observeBlocks(TokenIterator&);
eseidel 2014/04/08 16:58:49 nit: I'm really not a fan of "observe" for this na
103 void observeBlocks(MediaQueryTokenType);
104 static void popIfBlockMatches(Vector<MediaQueryParser::BlockType>& blockStac k, BlockType);
105 85
106 State m_state; 86 State m_state;
107 MediaQueryData m_mediaQueryData; 87 MediaQueryData m_mediaQueryData;
108 RefPtrWillBeMember<MediaQuerySet> m_querySet; 88 RefPtrWillBeMember<MediaQuerySet> m_querySet;
109 Vector<BlockType> m_blockStack; 89 unsigned m_blockLevel;
110 90
111 const static State ReadRestrictor; 91 const static State ReadRestrictor;
112 const static State ReadMediaType; 92 const static State ReadMediaType;
113 const static State ReadAnd; 93 const static State ReadAnd;
114 const static State ReadFeatureStart; 94 const static State ReadFeatureStart;
115 const static State ReadFeature; 95 const static State ReadFeature;
116 const static State ReadFeatureColon; 96 const static State ReadFeatureColon;
117 const static State ReadFeatureValue; 97 const static State ReadFeatureValue;
118 const static State ReadFeatureEnd; 98 const static State ReadFeatureEnd;
119 const static State SkipUntilComma; 99 const static State SkipUntilComma;
120 const static State SkipUntilBlockEnd; 100 const static State SkipUntilBlockEnd;
121 const static State Done; 101 const static State Done;
122 102
123 }; 103 };
124 104
125 } // namespace WebCore 105 } // namespace WebCore
126 106
127 #endif // MediaQueryParser_h 107 #endif // MediaQueryParser_h
OLDNEW
« no previous file with comments | « no previous file | Source/core/css/parser/MediaQueryParser.cpp » ('j') | Source/core/css/parser/MediaQueryParser.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698