Changeset 168685 in webkit
- Timestamp:
- May 13, 2014 10:08:43 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r168682 r168685 1 2014-05-13 Martin Hodovan <mhodovan.u-szeged@partner.samsung.com> 2 3 ASSERTION FAILED: leftCategory != CalcOther && rightCategory != CalcOther 4 in WebCore::CSSCalcBinaryOperation::createSimplified 5 https://bugs.webkit.org/show_bug.cgi?id=132870 6 7 Added test contains calc() expressions with angle, time and frequency values, 8 covering all the newly introduced unit types, each of which used to fail. 9 10 Reviewed by Darin Adler. 11 12 * fast/css/calc-with-angle-time-frequency-expected.txt: Added. 13 * fast/css/calc-with-angle-time-frequency.html: Added. 14 1 15 2014-05-13 Krzysztof Wolanski <k.wolanski@samsung.com> 2 16 -
trunk/Source/WebCore/ChangeLog
r168684 r168685 1 2014-05-13 Martin Hodovan <mhodovan.u-szeged@partner.samsung.com> 2 3 ASSERTION FAILED: leftCategory != CalcOther && rightCategory != CalcOther 4 in WebCore::CSSCalcBinaryOperation::createSimplified 5 https://bugs.webkit.org/show_bug.cgi?id=132870 6 7 According to the standard, calc() should be able to handle angle, time 8 and frequency values as well: http://www.w3.org/TR/css3-values/#calc 9 10 Reviewed by Darin Adler. 11 12 Test: fast/css/calc-with-angle-time-frequency.html 13 14 * css/CSSCalculationValue.cpp: 15 (WebCore::unitCategory): 16 (WebCore::CSSCalcPrimitiveValue::createCalcExpression): 17 (WebCore::CSSCalcPrimitiveValue::computeLengthPx): 18 (WebCore::CSSCalcPrimitiveValue::addSubtractResult): 19 (WebCore::CSSCalcPrimitiveValue::determineCategory): 20 (WebCore::CSSCalcBinaryOperation::primitiveType) 21 * css/CSSCalculationValue.h: extending CalculationCategory 22 * css/CSSParser.cpp: 23 (WebCore::CSSParser::validCalculationUnit): 24 * css/CSSPrimitiveValue.cpp: 25 (WebCore::CSSPrimitiveValue::primitiveType): 26 1 27 2014-05-13 Darin Adler <darin@apple.com> 2 28 -
trunk/Source/WebCore/css/CSSCalculationValue.cpp
r167937 r168685 57 57 case CSSPrimitiveValue::CSS_PARSER_INTEGER: 58 58 return CalcNumber; 59 case CSSPrimitiveValue::CSS_PERCENTAGE:60 return CalcPercent;61 59 case CSSPrimitiveValue::CSS_EMS: 62 60 case CSSPrimitiveValue::CSS_EXS: … … 70 68 case CSSPrimitiveValue::CSS_CHS: 71 69 return CalcLength; 70 case CSSPrimitiveValue::CSS_PERCENTAGE: 71 return CalcPercent; 72 case CSSPrimitiveValue::CSS_DEG: 73 case CSSPrimitiveValue::CSS_RAD: 74 case CSSPrimitiveValue::CSS_GRAD: 75 case CSSPrimitiveValue::CSS_TURN: 76 return CalcAngle; 77 case CSSPrimitiveValue::CSS_MS: 78 case CSSPrimitiveValue::CSS_S: 79 return CalcTime; 80 case CSSPrimitiveValue::CSS_HZ: 81 case CSSPrimitiveValue::CSS_KHZ: 82 return CalcFrequency; 72 83 default: 73 84 return CalcOther; … … 219 230 // to a CalcExpressionNode. CalcPercentNumber makes no sense as a Length. 220 231 case CalcPercentNumber: 232 case CalcAngle: 233 case CalcTime: 234 case CalcFrequency: 221 235 case CalcOther: 222 236 ASSERT_NOT_REACHED(); … … 243 257 case CalcPercentLength: 244 258 case CalcPercentNumber: 259 case CalcAngle: 260 case CalcTime: 261 case CalcFrequency: 245 262 case CalcOther: 246 263 ASSERT_NOT_REACHED(); … … 275 292 }; 276 293 277 static const CalculationCategory addSubtractResult[Calc Other][CalcOther] = {294 static const CalculationCategory addSubtractResult[CalcAngle][CalcAngle] = { 278 295 // CalcNumber CalcLength CalcPercent CalcPercentNumber CalcPercentLength 279 296 { CalcNumber, CalcOther, CalcPercentNumber, CalcPercentNumber, CalcOther }, // CalcNumber … … 295 312 case CalcAdd: 296 313 case CalcSubtract: 297 return addSubtractResult[leftCategory][rightCategory]; 314 if (leftCategory < CalcAngle || rightCategory < CalcAngle) 315 return addSubtractResult[leftCategory][rightCategory]; 316 if (leftCategory == rightCategory) 317 return leftCategory; 318 return CalcOther; 298 319 case CalcMultiply: 299 320 if (leftCategory != CalcNumber && rightCategory != CalcNumber) … … 471 492 case CalcPercentLength: 472 493 case CalcPercentNumber: 494 case CalcAngle: 495 return CSSPrimitiveValue::CSS_DEG; 496 case CalcTime: 497 return CSSPrimitiveValue::CSS_MS; 498 case CalcFrequency: 499 return CSSPrimitiveValue::CSS_HZ; 473 500 case CalcOther: 474 501 return CSSPrimitiveValue::CSS_UNKNOWN; -
trunk/Source/WebCore/css/CSSCalculationValue.h
r167937 r168685 47 47 CalcPercentNumber, 48 48 CalcPercentLength, 49 CalcAngle, 50 CalcTime, 51 CalcFrequency, 49 52 CalcOther 50 53 }; -
trunk/Source/WebCore/css/CSSParser.cpp
r168416 r168685 1559 1559 bool b = false; 1560 1560 switch (m_parsedCalculation->category()) { 1561 case CalcLength:1562 b = (unitflags & FLength);1563 break;1564 case CalcPercent:1565 b = (unitflags & FPercent);1566 if (b && mustBeNonNegative && m_parsedCalculation->isNegative())1567 b = false;1568 break;1569 1561 case CalcNumber: 1570 1562 b = (unitflags & FNumber); … … 1574 1566 b = false; 1575 1567 break; 1568 case CalcLength: 1569 b = (unitflags & FLength); 1570 break; 1571 case CalcPercent: 1572 b = (unitflags & FPercent); 1573 if (b && mustBeNonNegative && m_parsedCalculation->isNegative()) 1574 b = false; 1575 break; 1576 1576 case CalcPercentLength: 1577 1577 b = (unitflags & FPercent) && (unitflags & FLength); … … 1579 1579 case CalcPercentNumber: 1580 1580 b = (unitflags & FPercent) && (unitflags & FNumber); 1581 break; 1582 case CalcAngle: 1583 b = (unitflags & FAngle); 1584 break; 1585 case CalcTime: 1586 b = (unitflags & FTime); 1587 break; 1588 case CalcFrequency: 1589 b = (unitflags & FFrequency); 1581 1590 break; 1582 1591 case CalcOther: -
trunk/Source/WebCore/css/CSSPrimitiveValue.cpp
r167937 r168685 194 194 case CalcNumber: 195 195 return CSSPrimitiveValue::CSS_NUMBER; 196 case CalcLength: 197 return CSSPrimitiveValue::CSS_PX; 196 198 case CalcPercent: 197 199 return CSSPrimitiveValue::CSS_PERCENTAGE; 198 case CalcLength:199 return CSSPrimitiveValue::CSS_PX;200 200 case CalcPercentNumber: 201 201 return CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_NUMBER; 202 202 case CalcPercentLength: 203 203 return CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_LENGTH; 204 case CalcAngle: 205 return CSSPrimitiveValue::CSS_DEG; 206 case CalcTime: 207 return CSSPrimitiveValue::CSS_MS; 208 case CalcFrequency: 209 return CSSPrimitiveValue::CSS_HZ; 204 210 case CalcOther: 205 211 return CSSPrimitiveValue::CSS_UNKNOWN;
Note: See TracChangeset
for help on using the changeset viewer.