Changeset 209148 in webkit
- Timestamp:
- Nov 30, 2016 12:38:46 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r209147 r209148 1 2016-11-30 Dave Hyatt <hyatt@apple.com> 2 3 [CSS Parser] Fix columns shorthand parsing 4 https://bugs.webkit.org/show_bug.cgi?id=165210 5 6 Reviewed by Zalan Bujtas. 7 8 * css/parser/CSSPropertyParser.cpp: 9 (WebCore::CSSPropertyParser::consumeColumns): 10 (WebCore::consumeColumnWidthOrCount): Deleted. 11 Bring over the old parser code, since it was actually better at creating implicit values for auto. 12 1 13 2016-11-30 Andy Estes <aestes@apple.com> 2 14 -
trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp
r209142 r209148 4286 4286 #endif 4287 4287 4288 static bool consumeColumnWidthOrCount(CSSParserTokenRange& range, RefPtr<CSSValue>& columnWidth, RefPtr<CSSValue>& columnCount)4289 {4290 if (range.peek().id() == CSSValueAuto) {4291 consumeIdent(range);4292 return true;4293 }4294 if (!columnWidth) {4295 columnWidth = consumeColumnWidth(range);4296 if (columnWidth)4297 return true;4298 }4299 if (!columnCount)4300 columnCount = consumeColumnCount(range);4301 return columnCount;4302 }4303 4304 4288 bool CSSPropertyParser::consumeColumns(bool important) 4305 4289 { 4306 4290 RefPtr<CSSValue> columnWidth; 4307 4291 RefPtr<CSSValue> columnCount; 4308 if (!consumeColumnWidthOrCount(m_range, columnWidth, columnCount)) 4309 return false; 4310 consumeColumnWidthOrCount(m_range, columnWidth, columnCount); 4292 bool hasPendingExplicitAuto = false; 4293 4294 for (unsigned propertiesParsed = 0; propertiesParsed < 2 && !m_range.atEnd(); ++propertiesParsed) { 4295 if (!propertiesParsed && m_range.peek().id() == CSSValueAuto) { 4296 // 'auto' is a valid value for any of the two longhands, and at this point 4297 // we don't know which one(s) it is meant for. We need to see if there are other values first. 4298 consumeIdent(m_range); 4299 hasPendingExplicitAuto = true; 4300 } else { 4301 if (!columnWidth) { 4302 if ((columnWidth = consumeColumnWidth(m_range))) 4303 continue; 4304 } 4305 if (!columnCount) { 4306 if ((columnCount = consumeColumnCount(m_range))) 4307 continue; 4308 } 4309 // If we didn't find at least one match, this is an invalid shorthand and we have to ignore it. 4310 return false; 4311 } 4312 } 4313 4311 4314 if (!m_range.atEnd()) 4312 4315 return false; 4313 if (!columnWidth) 4314 columnWidth = CSSValuePool::singleton().createIdentifierValue(CSSValueAuto); 4315 if (!columnCount) 4316 columnCount = CSSValuePool::singleton().createIdentifierValue(CSSValueAuto); 4317 addProperty(CSSPropertyColumnWidth, CSSPropertyInvalid, columnWidth.releaseNonNull(), important); 4318 addProperty(CSSPropertyColumnCount, CSSPropertyInvalid, columnCount.releaseNonNull(), important); 4316 4317 // Any unassigned property at this point will become implicit 'auto'. 4318 if (columnWidth) 4319 addProperty(CSSPropertyColumnWidth, CSSPropertyInvalid, columnWidth.releaseNonNull(), important); 4320 else { 4321 addProperty(CSSPropertyColumnWidth, CSSPropertyInvalid, CSSValuePool::singleton().createIdentifierValue(CSSValueAuto), important, !hasPendingExplicitAuto /* implicit */); 4322 hasPendingExplicitAuto = false; 4323 } 4324 4325 if (columnCount) 4326 addProperty(CSSPropertyColumnCount, CSSPropertyInvalid, columnCount.releaseNonNull(), important); 4327 else 4328 addProperty(CSSPropertyColumnCount, CSSPropertyInvalid, CSSValuePool::singleton().createIdentifierValue(CSSValueAuto), important, !hasPendingExplicitAuto /* implicit */); 4329 4319 4330 return true; 4320 4331 }
Note: See TracChangeset
for help on using the changeset viewer.