Changeset 207543 in webkit
- Timestamp:
- Oct 19, 2016 10:40:27 AM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r207541 r207543 1 2016-10-19 Dave Hyatt <hyatt@apple.com> 2 3 [CSS Parser] Fix transform parsing 4 https://bugs.webkit.org/show_bug.cgi?id=163671 5 6 Reviewed by Dean Jackson. 7 8 The new parser turned function names into CSSValueIDs and made CSSFunctionValue store them. This 9 meant it could be used to handle transform values, with the function name representing the 10 transform operation efficiently as a CSSValueID. 11 12 The old parser, however, creates WebKitCSSTransformValues. This value does not exist in the new 13 parser. Rather than forcing the old and new parser over to CSSFunctionValues, I opted to 14 just make the new parser build WebkitCSSTransformValues too. 15 16 The main reason I did this is that WebkitCSSTransformValue is actually exposed to the Web via 17 IDL. To be safe, I am not eliminating it (even though Blink has). 18 19 * css/parser/CSSPropertyParser.cpp: 20 (WebCore::consumeTranslate3d): 21 (WebCore::consumeNumbers): 22 (WebCore::consumePerspective): 23 (WebCore::transformOperationForCSSValueID): 24 (WebCore::consumeTransformValue): 25 1 26 2016-10-19 Darin Adler <darin@apple.com> 2 27 -
trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp
r207521 r207543 69 69 #include "StylePropertyShorthand.h" 70 70 #include "StylePropertyShorthandFunctions.h" 71 #include "WebkitCSSTransformValue.h" 71 72 #include <memory> 72 73 #include <wtf/text/StringBuilder.h> … … 1452 1453 } 1453 1454 1454 static bool consumeTranslate3d(CSSParserTokenRange& args, CSSParserMode cssParserMode, RefPtr< CSSFunctionValue>& transformValue)1455 static bool consumeTranslate3d(CSSParserTokenRange& args, CSSParserMode cssParserMode, RefPtr<WebKitCSSTransformValue>& transformValue) 1455 1456 { 1456 1457 unsigned numberOfArguments = 2; … … 1471 1472 } 1472 1473 1473 static bool consumeNumbers(CSSParserTokenRange& args, RefPtr< CSSFunctionValue>& transformValue, unsigned numberOfArguments)1474 static bool consumeNumbers(CSSParserTokenRange& args, RefPtr<WebKitCSSTransformValue>& transformValue, unsigned numberOfArguments) 1474 1475 { 1475 1476 do { … … 1484 1485 } 1485 1486 1486 static bool consumePerspective(CSSParserTokenRange& args, CSSParserMode cssParserMode, RefPtr< CSSFunctionValue>& transformValue)1487 static bool consumePerspective(CSSParserTokenRange& args, CSSParserMode cssParserMode, RefPtr<WebKitCSSTransformValue>& transformValue) 1487 1488 { 1488 1489 RefPtr<CSSPrimitiveValue> parsedValue = consumeLength(args, cssParserMode, ValueRangeNonNegative); … … 1499 1500 } 1500 1501 1502 // FIXME-NEWPARSER: This has no reason to exist once we eliminate WebkitCSSTransformValue in favor 1503 // of CSSFunctionValue. 1504 static WebKitCSSTransformValue::TransformOperationType transformOperationForCSSValueID(CSSValueID functionId) 1505 { 1506 switch (functionId) { 1507 case CSSValueRotate: 1508 return WebKitCSSTransformValue::RotateTransformOperation; 1509 case CSSValueRotatex: 1510 return WebKitCSSTransformValue::RotateXTransformOperation; 1511 case CSSValueRotatey: 1512 return WebKitCSSTransformValue::RotateYTransformOperation; 1513 case CSSValueRotatez: 1514 return WebKitCSSTransformValue::RotateZTransformOperation; 1515 case CSSValueSkewx: 1516 return WebKitCSSTransformValue::SkewXTransformOperation; 1517 case CSSValueSkewy: 1518 return WebKitCSSTransformValue::SkewYTransformOperation; 1519 case CSSValueSkew: 1520 return WebKitCSSTransformValue::SkewTransformOperation; 1521 case CSSValueScalex: 1522 return WebKitCSSTransformValue::ScaleXTransformOperation; 1523 case CSSValueScaley: 1524 return WebKitCSSTransformValue::ScaleYTransformOperation; 1525 case CSSValueScalez: 1526 return WebKitCSSTransformValue::ScaleZTransformOperation; 1527 case CSSValueScale: 1528 return WebKitCSSTransformValue::ScaleTransformOperation; 1529 case CSSValuePerspective: 1530 return WebKitCSSTransformValue::PerspectiveTransformOperation; 1531 case CSSValueTranslatex: 1532 return WebKitCSSTransformValue::TranslateXTransformOperation; 1533 case CSSValueTranslatey: 1534 return WebKitCSSTransformValue::TranslateYTransformOperation; 1535 case CSSValueTranslate: 1536 return WebKitCSSTransformValue::TranslateTransformOperation; 1537 case CSSValueTranslatez: 1538 return WebKitCSSTransformValue::TranslateZTransformOperation; 1539 case CSSValueMatrix: 1540 return WebKitCSSTransformValue::MatrixTransformOperation; 1541 case CSSValueMatrix3d: 1542 return WebKitCSSTransformValue::Matrix3DTransformOperation; 1543 case CSSValueScale3d: 1544 return WebKitCSSTransformValue::Scale3DTransformOperation; 1545 case CSSValueRotate3d: 1546 return WebKitCSSTransformValue::Rotate3DTransformOperation; 1547 case CSSValueTranslate3d: 1548 return WebKitCSSTransformValue::Translate3DTransformOperation; 1549 default: 1550 return WebKitCSSTransformValue::UnknownTransformOperation; 1551 } 1552 } 1553 1501 1554 static RefPtr<CSSValue> consumeTransformValue(CSSParserTokenRange& range, CSSParserMode cssParserMode) 1502 1555 { … … 1507 1560 if (args.atEnd()) 1508 1561 return nullptr; 1509 RefPtr<CSSFunctionValue> transformValue = CSSFunctionValue::create(functionId); 1562 1563 // FIXME-NEWPARSER: Do we really need WebkitCSSTransformValue? A CSSFunctionValue is good 1564 // enough and has the CSSValueID as the operation type. Blink has eliminated it. 1565 RefPtr<WebKitCSSTransformValue> transformValue = WebKitCSSTransformValue::create(transformOperationForCSSValueID(functionId)); 1510 1566 RefPtr<CSSValue> parsedValue; 1511 1567 switch (functionId) {
Note: See TracChangeset
for help on using the changeset viewer.