Index: Source/core/css/parser/SizesAttributeParser.cpp |
diff --git a/Source/core/css/parser/SizesAttributeParser.cpp b/Source/core/css/parser/SizesAttributeParser.cpp |
deleted file mode 100644 |
index dca1ace194f1a8c0483646db3c29e4f76235657c..0000000000000000000000000000000000000000 |
--- a/Source/core/css/parser/SizesAttributeParser.cpp |
+++ /dev/null |
@@ -1,134 +0,0 @@ |
-// 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. |
- |
-#include "config.h" |
-#include "SizesAttributeParser.h" |
- |
-#include "MediaTypeNames.h" |
-#include "core/css/MediaQueryEvaluator.h" |
-#include "core/css/parser/MediaQueryTokenizer.h" |
- |
-namespace WebCore { |
- |
-unsigned SizesAttributeParser::findEffectiveSize(const String& attribute, PassRefPtr<MediaValues> mediaValues) |
-{ |
- Vector<MediaQueryToken> tokens; |
- SizesAttributeParser parser(mediaValues); |
- |
- MediaQueryTokenizer::tokenize(attribute, tokens); |
- if (!parser.parse(tokens)) |
- return parser.effectiveSizeDefaultValue(); |
- return parser.effectiveSize(); |
-} |
- |
-bool SizesAttributeParser::calculateLengthInPixels(TokenIterator startToken, TokenIterator endToken, unsigned& result) |
-{ |
- MediaQueryTokenType type = startToken->type(); |
- if (type == DimensionToken) { |
- int length; |
- if (!CSSPrimitiveValue::isLength(startToken->unitType())) |
- return false; |
- if (m_mediaValues->computeLength(startToken->numericValue(), startToken->unitType(), length)) { |
- if (length > 0) { |
- result = (unsigned)length; |
- return true; |
- } |
- } |
- } |
- if (type == FunctionToken) { |
- // FIXME - Handle calc() functions here! |
- } |
- return false; |
-} |
- |
-static void reverseSkipIrrelevantTokens(TokenIterator& token, TokenIterator startToken) |
-{ |
- TokenIterator endToken = token; |
- while (token != startToken && (token->type() == WhitespaceToken || token->type() == CommentToken || token->type() == EOFToken)) |
- --token; |
- if (token != endToken) |
- ++token; |
-} |
- |
-static void reverseSkipUntilComponentStart(TokenIterator& token, TokenIterator startToken) |
-{ |
- if (token == startToken) |
- return; |
- --token; |
- if (token->blockType() != MediaQueryToken::BlockEnd) |
- return; |
- unsigned blockLevel = 0; |
- while (token != startToken) { |
- if (token->blockType() == MediaQueryToken::BlockEnd) { |
- ++blockLevel; |
- } else if (token->blockType() == MediaQueryToken::BlockStart) { |
- --blockLevel; |
- if (!blockLevel) |
- break; |
- } |
- |
- --token; |
- } |
-} |
- |
-bool SizesAttributeParser::mediaConditionMatches(PassRefPtr<MediaQuerySet> mediaCondition) |
-{ |
- // FIXME: How do I handle non-screen media types here? |
- MediaQueryEvaluator mediaQueryEvaluator(MediaTypeNames::screen, *m_mediaValues); |
- return mediaQueryEvaluator.eval(mediaCondition.get()); |
-} |
- |
-bool SizesAttributeParser::parseMediaConditionAndLength(TokenIterator startToken, TokenIterator endToken) |
-{ |
- TokenIterator lengthTokenStart; |
- TokenIterator lengthTokenEnd; |
- |
- reverseSkipIrrelevantTokens(endToken, startToken); |
- lengthTokenEnd = endToken; |
- reverseSkipUntilComponentStart(endToken, startToken); |
- lengthTokenStart = endToken; |
- unsigned length; |
- if (!calculateLengthInPixels(lengthTokenStart, lengthTokenEnd, length)) |
- return false; |
- RefPtr<MediaQuerySet> mediaCondition = MediaQueryParser::parseMediaCondition(startToken, endToken); |
- if (mediaCondition && mediaConditionMatches(mediaCondition)) { |
- m_length = length; |
- return true; |
- } |
- return false; |
-} |
- |
-bool SizesAttributeParser::parse(Vector<MediaQueryToken>& tokens) |
-{ |
- TokenIterator startToken = tokens.begin(); |
- TokenIterator endToken; |
- // Split on a comma token, and send the result tokens to be parsed as (media-condition, length) pairs |
- for (TokenIterator token = tokens.begin(); token != tokens.end(); ++token) { |
- if (token->type() == CommaToken) { |
- endToken = token; |
- if (parseMediaConditionAndLength(startToken, endToken)) |
- return true; |
- startToken = token; |
- ++startToken; |
- } |
- } |
- endToken = tokens.end(); |
- return parseMediaConditionAndLength(startToken, --endToken); |
-} |
- |
-unsigned SizesAttributeParser::effectiveSize() |
-{ |
- if (m_length) |
- return m_length; |
- return effectiveSizeDefaultValue(); |
-} |
- |
-unsigned SizesAttributeParser::effectiveSizeDefaultValue() |
-{ |
- // Returning the equivalent of "100%" |
- return m_mediaValues->viewportWidth(); |
-} |
- |
-} // namespace |
- |