[CSS Parser] Fix rx and ry parsing
authorhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Dec 2016 18:04:48 +0000 (18:04 +0000)
committerhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Dec 2016 18:04:48 +0000 (18:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=165383

Reviewed by Dean Jackson.

* css/parser/CSSParserFastPaths.cpp:
(WebCore::isSimpleLengthPropertyID):
rx and ry can be negative in the slow path, so make sure they can be negative in the
fast path too.

* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeRxOrRy):
Disallow auto as a value since we are not equipped to handle it, and it's not clear if it's
even valid.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@209324 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/css/parser/CSSParserFastPaths.cpp
Source/WebCore/css/parser/CSSPropertyParser.cpp

index e8791ee..9d1173c 100644 (file)
@@ -1,3 +1,20 @@
+2016-12-05  Dave Hyatt  <hyatt@apple.com>
+
+        [CSS Parser] Fix rx and ry parsing
+        https://bugs.webkit.org/show_bug.cgi?id=165383
+
+        Reviewed by Dean Jackson.
+
+        * css/parser/CSSParserFastPaths.cpp:
+        (WebCore::isSimpleLengthPropertyID):
+        rx and ry can be negative in the slow path, so make sure they can be negative in the
+        fast path too.
+
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::consumeRxOrRy):
+        Disallow auto as a value since we are not equipped to handle it, and it's not clear if it's
+        even valid.
+
 2016-12-05  Konstantin Tokarev  <annulen@yandex.ru>
 
         Add __STDC_FORMAT_MACROS before inttypes.h is included
index e850cf4..2b50132 100644 (file)
@@ -71,9 +71,6 @@ static inline bool isSimpleLengthPropertyID(CSSPropertyID propertyId, bool& acce
     case CSSPropertyWebkitPaddingEnd:
     case CSSPropertyWebkitPaddingStart:
     case CSSPropertyShapeMargin:
-    case CSSPropertyR:
-    case CSSPropertyRx:
-    case CSSPropertyRy:
         acceptsNegativeNumbers = false;
         return true;
     case CSSPropertyBottom:
@@ -92,6 +89,9 @@ static inline bool isSimpleLengthPropertyID(CSSPropertyID propertyId, bool& acce
     case CSSPropertyWebkitMarginStart:
     case CSSPropertyX:
     case CSSPropertyY:
+    case CSSPropertyR:
+    case CSSPropertyRx:
+    case CSSPropertyRy:
         acceptsNegativeNumbers = true;
         return true;
     default:
index 903fc7a..91423dd 100644 (file)
@@ -2069,8 +2069,10 @@ static RefPtr<CSSPrimitiveValue> consumeBaselineShift(CSSParserTokenRange& range
 
 static RefPtr<CSSPrimitiveValue> consumeRxOrRy(CSSParserTokenRange& range)
 {
-    if (range.peek().id() == CSSValueAuto)
-        return consumeIdent(range);
+    // FIXME-NEWPARSER: We don't support auto values when mapping, so for now turn this
+    // off until we can figure out if we're even supposed to support it.
+    // if (range.peek().id() == CSSValueAuto)
+    //     return consumeIdent(range);
     return consumeLengthOrPercent(range, SVGAttributeMode, ValueRangeAll, UnitlessQuirk::Forbid);
 }