blob: 181f45b324d58d3e1cfa4bbcc9b9c0c75c88beb5 [file] [log] [blame]
// 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 MediaQueryToken_h
#define MediaQueryToken_h
#include "core/css/CSSPrimitiveValue.h"
#include "wtf/text/WTFString.h"
namespace blink {
enum MediaQueryTokenType {
IdentToken = 0,
FunctionToken,
DelimiterToken,
NumberToken,
PercentageToken,
DimensionToken,
WhitespaceToken,
ColonToken,
SemicolonToken,
CommaToken,
LeftParenthesisToken,
RightParenthesisToken,
LeftBracketToken,
RightBracketToken,
LeftBraceToken,
RightBraceToken,
StringToken,
BadStringToken,
EOFToken,
CommentToken,
};
enum NumericValueType {
IntegerValueType,
NumberValueType,
};
class MediaQueryToken {
public:
enum BlockType {
NotBlock,
BlockStart,
BlockEnd,
};
MediaQueryToken(MediaQueryTokenType, BlockType = NotBlock);
MediaQueryToken(MediaQueryTokenType, String value, BlockType = NotBlock);
MediaQueryToken(MediaQueryTokenType, UChar); // for DelimiterToken
MediaQueryToken(MediaQueryTokenType, double, NumericValueType); // for NumberToken
// Converts NumberToken to DimensionToken.
void convertToDimensionWithUnit(String);
// Converts NumberToken to PercentageToken.
void convertToPercentage();
MediaQueryTokenType type() const { return m_type; }
String value() const { return m_value; }
String textForUnitTests() const;
UChar delimiter() const;
NumericValueType numericValueType() const;
double numericValue() const;
BlockType blockType() const { return m_blockType; }
CSSPrimitiveValue::UnitType unitType() const { return m_unit; }
private:
MediaQueryTokenType m_type;
String m_value;
UChar m_delimiter; // Could be rolled into m_value?
NumericValueType m_numericValueType;
double m_numericValue;
CSSPrimitiveValue::UnitType m_unit;
BlockType m_blockType;
};
typedef Vector<MediaQueryToken>::iterator MediaQueryTokenIterator;
} // namespace
#endif // MediaQueryToken_h