| Index: Source/core/css/parser/MediaQueryParser.h
|
| diff --git a/Source/core/css/parser/MediaQueryParser.h b/Source/core/css/parser/MediaQueryParser.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5e51e6f31a7b3205e7df4ddb40824d90aa0e0e29
|
| --- /dev/null
|
| +++ b/Source/core/css/parser/MediaQueryParser.h
|
| @@ -0,0 +1,97 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef MediaQueryParser_h
|
| +#define MediaQueryParser_h
|
| +
|
| +#include "core/css/CSSParserValues.h"
|
| +#include "core/css/MediaList.h"
|
| +#include "core/css/MediaQuery.h"
|
| +#include "core/css/MediaQueryExp.h"
|
| +#include "core/css/parser/MediaQueryToken.h"
|
| +#include "wtf/Vector.h"
|
| +#include "wtf/text/WTFString.h"
|
| +
|
| +namespace WebCore {
|
| +
|
| +class MediaQuerySet;
|
| +
|
| +class MediaQueryData {
|
| +private:
|
| + MediaQuery::Restrictor m_restrictor;
|
| + String m_mediaType;
|
| + OwnPtr<ExpressionHeapVector> m_expressions;
|
| + String m_mediaFeature;
|
| + CSSParserValueList m_valueList;
|
| + bool m_mediaTypeSet;
|
| +
|
| +public:
|
| + MediaQueryData();
|
| + void resetCurrentQuery();
|
| + bool addExpression();
|
| + void addParserValue(MediaQueryTokenType, MediaQueryToken&);
|
| + void setMediaType(const String&);
|
| + PassOwnPtr<MediaQuery> takeMediaQueryAndClear();
|
| +
|
| + inline bool currentMediaQueryChanged() const
|
| + {
|
| + return (m_restrictor != MediaQuery::None || m_mediaTypeSet || m_expressions->size() > 0);
|
| + }
|
| +
|
| + inline void setRestrictor(MediaQuery::Restrictor restrictor) { m_restrictor = restrictor; }
|
| +
|
| + inline void setMediaFeature(const String& str) { m_mediaFeature = str; }
|
| +};
|
| +
|
| +class MediaQueryParser {
|
| +public:
|
| + static PassRefPtrWillBeRawPtr<MediaQuerySet> parse(const String&);
|
| +
|
| +private:
|
| + MediaQueryParser(const String&);
|
| + virtual ~MediaQueryParser() { };
|
| +
|
| + PassRefPtrWillBeRawPtr<MediaQuerySet> parseImpl();
|
| +
|
| + typedef Vector<MediaQueryToken>::iterator TokenIterator;
|
| +
|
| + void processToken(TokenIterator&);
|
| +
|
| + void readRestrictor(MediaQueryTokenType, TokenIterator&);
|
| + void readMediaType(MediaQueryTokenType, TokenIterator&);
|
| + void readAnd(MediaQueryTokenType, TokenIterator&);
|
| + void readFeatureStart(MediaQueryTokenType, TokenIterator&);
|
| + void readFeature(MediaQueryTokenType, TokenIterator&);
|
| + void readFeatureColon(MediaQueryTokenType, TokenIterator&);
|
| + void readFeatureValue(MediaQueryTokenType, TokenIterator&);
|
| + void readFeatureEnd(MediaQueryTokenType, TokenIterator&);
|
| + void skipUntilComma(MediaQueryTokenType, TokenIterator&);
|
| + void skipUntilParenthesis(MediaQueryTokenType, TokenIterator&);
|
| + void done(MediaQueryTokenType, TokenIterator&);
|
| +
|
| + typedef void (MediaQueryParser::*State)(MediaQueryTokenType, TokenIterator&);
|
| +
|
| + void setStateAndRestrict(State, MediaQuery::Restrictor);
|
| +
|
| + const State ReadRestrictor = &MediaQueryParser::readRestrictor;
|
| + const State ReadMediaType = &MediaQueryParser::readMediaType;
|
| + const State ReadAnd = &MediaQueryParser::readAnd;
|
| + const State ReadFeatureStart = &MediaQueryParser::readFeatureStart;
|
| + const State ReadFeature = &MediaQueryParser::readFeature;
|
| + const State ReadFeatureColon = &MediaQueryParser::readFeatureColon;
|
| + const State ReadFeatureValue = &MediaQueryParser::readFeatureValue;
|
| + const State ReadFeatureEnd = &MediaQueryParser::readFeatureEnd;
|
| + const State SkipUntilComma = &MediaQueryParser::skipUntilComma;
|
| + const State SkipUntilParenthesis = &MediaQueryParser::skipUntilParenthesis;
|
| + const State Done = &MediaQueryParser::done;
|
| +
|
| + State m_state;
|
| + Vector<MediaQueryToken> m_tokens;
|
| + MediaQueryData m_mediaQueryData;
|
| + RefPtrWillBeMember<MediaQuerySet> m_querySet;
|
| +};
|
| +
|
| +} // namespace WebCore
|
| +
|
| +#endif // MediaQueryParser_h
|
|
|