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

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

Issue 302123002: Enable zero length source size in sizes attribute (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Break out of length calc early for empty length Created 6 years, 7 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 ce64693c241d448d72be1f288ee3d4bc33429e11..409be21b2498192dd39e3498028d789ee446eb38 100644
--- a/Source/core/css/parser/SizesAttributeParser.cpp
+++ b/Source/core/css/parser/SizesAttributeParser.cpp
@@ -25,6 +25,8 @@ unsigned SizesAttributeParser::findEffectiveSize(const String& attribute, PassRe
bool SizesAttributeParser::calculateLengthInPixels(MediaQueryTokenIterator startToken, MediaQueryTokenIterator endToken, unsigned& result)
{
+ if (startToken == endToken)
+ return false;
MediaQueryTokenType type = startToken->type();
if (type == DimensionToken) {
int length;
@@ -36,6 +38,9 @@ bool SizesAttributeParser::calculateLengthInPixels(MediaQueryTokenIterator start
}
} else if (type == FunctionToken) {
return SizesCalcParser::parse(startToken, endToken, m_mediaValues, result);
+ } else if (type == NumberToken && !startToken->numericValue()) {
+ result = 0;
+ return true;
}
return false;
@@ -93,6 +98,7 @@ bool SizesAttributeParser::parseMediaConditionAndLength(MediaQueryTokenIterator
RefPtrWillBeRawPtr<MediaQuerySet> mediaCondition = MediaQueryParser::parseMediaCondition(startToken, endToken);
if (mediaCondition && mediaConditionMatches(mediaCondition)) {
m_length = length;
+ m_lengthWasSet = true;
return true;
}
return false;
@@ -120,7 +126,7 @@ bool SizesAttributeParser::parse(Vector<MediaQueryToken>& tokens)
unsigned SizesAttributeParser::effectiveSize()
{
- if (m_length)
+ if (m_lengthWasSet)
return m_length;
return effectiveSizeDefaultValue();
}

Powered by Google App Engine
This is Rietveld 408576698