Index: Source/core/css/parser/MediaQueryParser.h |
diff --git a/Source/core/css/parser/MediaQueryParser.h b/Source/core/css/parser/MediaQueryParser.h |
index fcb82c569bd11de88eadcc31a930a69f0a8dad3b..f3189550ec388c59b16435f181b6bdaf92e4d0d9 100644 |
--- a/Source/core/css/parser/MediaQueryParser.h |
+++ b/Source/core/css/parser/MediaQueryParser.h |
@@ -58,6 +58,24 @@ private: |
typedef Vector<MediaQueryToken>::iterator TokenIterator; |
+ enum BlockType { |
+ ParenthesisBlock, |
+ BracketsBlock, |
+ BracesBlock |
+ }; |
+ |
+ enum StateChange { |
+ ModifyState, |
+ DoNotModifyState |
+ }; |
+ |
+ struct BlockParameters { |
+ MediaQueryTokenType lefttoken; |
eseidel
2014/04/01 21:15:08
leftToken?
|
+ MediaQueryTokenType righttoken; |
+ BlockType blockType; |
+ StateChange stateChange; |
+ }; |
+ |
void processToken(TokenIterator&); |
void readRestrictor(MediaQueryTokenType, TokenIterator&); |
@@ -69,17 +87,21 @@ private: |
void readFeatureValue(MediaQueryTokenType, TokenIterator&); |
void readFeatureEnd(MediaQueryTokenType, TokenIterator&); |
void skipUntilComma(MediaQueryTokenType, TokenIterator&); |
- void skipUntilParenthesis(MediaQueryTokenType, TokenIterator&); |
+ void skipUntilBlockEnd(MediaQueryTokenType, TokenIterator&); |
void done(MediaQueryTokenType, TokenIterator&); |
typedef void (MediaQueryParser::*State)(MediaQueryTokenType, TokenIterator&); |
void setStateAndRestrict(State, MediaQuery::Restrictor); |
+ bool observeBlock(BlockParameters&, MediaQueryTokenType); |
+ void observeBlocks(MediaQueryTokenType); |
+ static void popIfBlockMatches(Vector<MediaQueryParser::BlockType>& blockStack, BlockType); |
State m_state; |
Vector<MediaQueryToken> m_tokens; |
MediaQueryData m_mediaQueryData; |
RefPtrWillBeMember<MediaQuerySet> m_querySet; |
+ Vector<BlockType> m_blockStack; |
const static State ReadRestrictor; |
const static State ReadMediaType; |
@@ -90,7 +112,7 @@ private: |
const static State ReadFeatureValue; |
const static State ReadFeatureEnd; |
const static State SkipUntilComma; |
- const static State SkipUntilParenthesis; |
+ const static State SkipUntilBlockEnd; |
const static State Done; |
}; |