Commit 6b74bfe5 authored by yoav@yoav.ws's avatar yoav@yoav.ws

Unit test both MQ parsers. Fix MQ parser block handling bugs

Enables the MQ parser unit test to verify that both the Bison parser and MediaQueryParser are functioning as they should be.
Also fixes a couple of bugs that were found in the process, and adds testing for these cases.

BUG=358041, 358967

Review URL: https://codereview.chromium.org/221693004

git-svn-id: svn://svn.chromium.org/blink/trunk@170682 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 66cbd753
...@@ -142,7 +142,7 @@ void MediaQueryParser::readFeatureEnd(MediaQueryTokenType type, TokenIterator& t ...@@ -142,7 +142,7 @@ void MediaQueryParser::readFeatureEnd(MediaQueryTokenType type, TokenIterator& t
void MediaQueryParser::skipUntilComma(MediaQueryTokenType type, TokenIterator& token) void MediaQueryParser::skipUntilComma(MediaQueryTokenType type, TokenIterator& token)
{ {
if (type == CommaToken || type == EOFToken) { if ((type == CommaToken && m_blockStack.isEmpty()) || type == EOFToken) {
m_state = ReadRestrictor; m_state = ReadRestrictor;
m_mediaQueryData.clear(); m_mediaQueryData.clear();
m_querySet->addMediaQuery(MediaQuery::createNotAll()); m_querySet->addMediaQuery(MediaQuery::createNotAll());
...@@ -179,14 +179,15 @@ bool MediaQueryParser::observeBlock(BlockParameters& parameters, MediaQueryToken ...@@ -179,14 +179,15 @@ bool MediaQueryParser::observeBlock(BlockParameters& parameters, MediaQueryToken
void MediaQueryParser::observeBlocks(MediaQueryTokenType type) void MediaQueryParser::observeBlocks(MediaQueryTokenType type)
{ {
const unsigned blockParametersNumber = 3; enum { BlockParametersCount = 4 };
BlockParameters blockParameterSet[blockParametersNumber] = { BlockParameters blockParameterSet[BlockParametersCount] = {
{ LeftParenthesisToken, RightParenthesisToken, ParenthesisBlock, DoNotModifyState }, { LeftParenthesisToken, RightParenthesisToken, ParenthesisBlock, DoNotModifyState },
{ FunctionToken, RightParenthesisToken, ParenthesisBlock, ModifyState },
{ LeftBracketToken, RightBracketToken, BracketsBlock, ModifyState }, { LeftBracketToken, RightBracketToken, BracketsBlock, ModifyState },
{ LeftBraceToken, RightBraceToken, BracesBlock, ModifyState } { LeftBraceToken, RightBraceToken, BracesBlock, ModifyState }
}; };
for (unsigned i = 0; i < blockParametersNumber; ++i) { for (unsigned i = 0; i < BlockParametersCount; ++i) {
if (observeBlock(blockParameterSet[i], type)) if (observeBlock(blockParameterSet[i], type))
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment