Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(648)

Unified Diff: Source/core/css/parser/SizesAttributeParser.cpp

Issue 369423002: Have srcset respond to viewport changes (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Oilpan comments Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/css/parser/SizesAttributeParser.cpp
diff --git a/Source/core/css/parser/SizesAttributeParser.cpp b/Source/core/css/parser/SizesAttributeParser.cpp
index f4b0e20bd357e5c32725c987ac7a006ea8554186..e13f16ec20ab813b0ba7e46f6dd2f9e0b62bbb02 100644
--- a/Source/core/css/parser/SizesAttributeParser.cpp
+++ b/Source/core/css/parser/SizesAttributeParser.cpp
@@ -12,15 +12,19 @@
namespace WebCore {
-unsigned SizesAttributeParser::findEffectiveSize(const String& attribute, PassRefPtr<MediaValues> mediaValues)
+unsigned SizesAttributeParser::findEffectiveSize(const String& attribute, PassRefPtr<MediaValues> mediaValues, bool& viewportDependant)
{
Vector<MediaQueryToken> tokens;
+ unsigned size;
SizesAttributeParser parser(mediaValues);
MediaQueryTokenizer::tokenize(attribute, tokens);
- if (!parser.parse(tokens))
- return parser.effectiveSizeDefaultValue();
- return parser.effectiveSize();
+ if (parser.parse(tokens))
+ size = parser.effectiveSize();
+ else
+ size = parser.effectiveSizeDefaultValue();
+ viewportDependant = parser.viewportDependant();
esprehn 2014/07/14 08:39:49 You should hide this logic inside an instance meth
+ return size;
}
bool SizesAttributeParser::calculateLengthInPixels(MediaQueryTokenIterator startToken, MediaQueryTokenIterator endToken, unsigned& result)
@@ -32,12 +36,13 @@ bool SizesAttributeParser::calculateLengthInPixels(MediaQueryTokenIterator start
int length;
if (!CSSPrimitiveValue::isLength(startToken->unitType()))
return false;
+ m_viewportDependant = CSSPrimitiveValue::isViewportPercentageLength(startToken->unitType());
if ((m_mediaValues->computeLength(startToken->numericValue(), startToken->unitType(), length)) && (length > 0)) {
result = (unsigned)length;
return true;
}
} else if (type == FunctionToken) {
- return SizesCalcParser::parse(startToken, endToken, m_mediaValues, result);
+ return SizesCalcParser::parse(startToken, endToken, m_mediaValues, result, m_viewportDependant);
} else if (type == NumberToken && !startToken->numericValue()) {
result = 0;
return true;
@@ -133,7 +138,8 @@ unsigned SizesAttributeParser::effectiveSize()
unsigned SizesAttributeParser::effectiveSizeDefaultValue()
{
- // Returning the equivalent of "100%"
+ // Returning the equivalent of "100vw"
+ m_viewportDependant = true;
return m_mediaValues->viewportWidth();
}

Powered by Google App Engine
This is Rietveld 408576698