diff options
| author | Martin Hodovan <mhodovan.u-szeged@partner.samsung.com> | 2014-05-13 17:08:43 +0000 |
|---|---|---|
| committer | Konstantin Tokarev <annulen@yandex.ru> | 2016-09-27 07:16:50 +0000 |
| commit | ac20ee9ffda40fd1c1714ec3a000bbf27c3eee33 (patch) | |
| tree | 25e84f8484c765bb15f1d9c7f8821a2ed4ffe111 /Source/WebCore/css/CSSParser.cpp | |
| parent | 7cdd855e3287492093749a833b8b56c67e8db800 (diff) | |
| download | qtwebkit-ac20ee9ffda40fd1c1714ec3a000bbf27c3eee33.tar.gz | |
ASSERTION FAILED: leftCategory != CalcOther && rightCategory != CalcOther in WebCore::CSSCalcBinaryOperation::createSimplified
https://bugs.webkit.org/show_bug.cgi?id=132870
Source/WebCore:
According to the standard, calc() should be able to handle angle, time
and frequency values as well: http://www.w3.org/TR/css3-values/#calc
Patch by Martin Hodovan <mhodovan.u-szeged@partner.samsung.com> on 2014-05-13
Reviewed by Darin Adler.
Test: fast/css/calc-with-angle-time-frequency.html
* css/CSSCalculationValue.cpp:
(WebCore::unitCategory):
(WebCore::CSSCalcPrimitiveValue::createCalcExpression):
(WebCore::CSSCalcPrimitiveValue::computeLengthPx):
(WebCore::CSSCalcPrimitiveValue::addSubtractResult):
(WebCore::CSSCalcPrimitiveValue::determineCategory):
(WebCore::CSSCalcBinaryOperation::primitiveType)
* css/CSSCalculationValue.h: extending CalculationCategory
* css/CSSParser.cpp:
(WebCore::CSSParser::validCalculationUnit):
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::primitiveType):
LayoutTests:
Added test contains calc() expressions with angle, time and frequency values,
covering all the newly introduced unit types, each of which used to fail.
Patch by Martin Hodovan <mhodovan.u-szeged@partner.samsung.com> on 2014-05-13
Reviewed by Darin Adler.
* fast/css/calc-with-angle-time-frequency-expected.txt: Added.
* fast/css/calc-with-angle-time-frequency.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168685 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Change-Id: Id342e513bef2aa147dbfc94d2fc5a72e51fd0f57
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'Source/WebCore/css/CSSParser.cpp')
| -rw-r--r-- | Source/WebCore/css/CSSParser.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/Source/WebCore/css/CSSParser.cpp b/Source/WebCore/css/CSSParser.cpp index 54fd5e238..99ee8043a 100644 --- a/Source/WebCore/css/CSSParser.cpp +++ b/Source/WebCore/css/CSSParser.cpp @@ -1609,6 +1609,13 @@ bool CSSParser::validCalculationUnit(CSSParserValue* value, Units unitflags, Rel bool b = false; switch (m_parsedCalculation->category()) { + case CalcNumber: + b = (unitflags & FNumber); + if (!b && (unitflags & FInteger) && m_parsedCalculation->isInt()) + b = true; + if (b && mustBeNonNegative && m_parsedCalculation->isNegative()) + b = false; + break; case CalcLength: b = (unitflags & FLength); break; @@ -1617,19 +1624,21 @@ bool CSSParser::validCalculationUnit(CSSParserValue* value, Units unitflags, Rel if (b && mustBeNonNegative && m_parsedCalculation->isNegative()) b = false; break; - case CalcNumber: - b = (unitflags & FNumber); - if (!b && (unitflags & FInteger) && m_parsedCalculation->isInt()) - b = true; - if (b && mustBeNonNegative && m_parsedCalculation->isNegative()) - b = false; - break; case CalcPercentLength: b = (unitflags & FPercent) && (unitflags & FLength); break; case CalcPercentNumber: b = (unitflags & FPercent) && (unitflags & FNumber); break; + case CalcAngle: + b = (unitflags & FAngle); + break; + case CalcTime: + b = (unitflags & FTime); + break; + case CalcFrequency: + b = (unitflags & FFrequency); + break; #if ENABLE(CSS_VARIABLES) case CalcVariable: b = true; |
