[CSS Shapes] polygon default fill-rule should be omitted from the serialization
authorbetravis@adobe.com <betravis@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Mar 2014 20:01:28 +0000 (20:01 +0000)
committerbetravis@adobe.com <betravis@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Mar 2014 20:01:28 +0000 (20:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=129840

Reviewed by Dirk Schulze.

Source/WebCore:

Modifying the default polygon string opening to be "polygon(" rather than
"polygon(nonzero".

Updated existing parsing tests.

* css/CSSBasicShapes.cpp:
(WebCore::buildPolygonString):

LayoutTests:

Modifying tests to expect the default fill-rule to be omitted. In addition,
animation-test-helpers now parses its arguments as an unbounded list, rather
than as a fixed number of capturing parentheses.

* animations/resources/animation-test-helpers.js:
* css3/masking/clip-path-animation-expected.txt:
* css3/masking/clip-path-animation.html:
* fast/masking/parsing-clip-path-shape-expected.txt:
* fast/masking/parsing-clip-path-shape.html:
* fast/shapes/parsing/parsing-shape-inside-expected.txt:
* fast/shapes/parsing/parsing-shape-lengths-expected.txt:
* fast/shapes/parsing/parsing-shape-lengths.html:
* fast/shapes/parsing/parsing-shape-outside-expected.txt:
* fast/shapes/parsing/parsing-test-utils.js:
* fast/shapes/shape-inside/shape-inside-animation-expected.txt:
* fast/shapes/shape-inside/shape-inside-animation.html:
* fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt:
* fast/shapes/shape-outside-floats/shape-outside-animation.html:

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

17 files changed:
LayoutTests/ChangeLog
LayoutTests/animations/resources/animation-test-helpers.js
LayoutTests/css3/masking/clip-path-animation-expected.txt
LayoutTests/css3/masking/clip-path-animation.html
LayoutTests/fast/masking/parsing-clip-path-shape-expected.txt
LayoutTests/fast/masking/parsing-clip-path-shape.html
LayoutTests/fast/shapes/parsing/parsing-shape-inside-expected.txt
LayoutTests/fast/shapes/parsing/parsing-shape-lengths-expected.txt
LayoutTests/fast/shapes/parsing/parsing-shape-lengths.html
LayoutTests/fast/shapes/parsing/parsing-shape-outside-expected.txt
LayoutTests/fast/shapes/parsing/parsing-test-utils.js
LayoutTests/fast/shapes/shape-inside/shape-inside-animation-expected.txt
LayoutTests/fast/shapes/shape-inside/shape-inside-animation.html
LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt
LayoutTests/fast/shapes/shape-outside-floats/shape-outside-animation.html
Source/WebCore/ChangeLog
Source/WebCore/css/CSSBasicShapes.cpp

index 8726b81..efc9051 100644 (file)
@@ -1,3 +1,29 @@
+2014-03-14  Bear Travis  <betravis@adobe.com>
+
+        [CSS Shapes] polygon default fill-rule should be omitted from the serialization
+        https://bugs.webkit.org/show_bug.cgi?id=129840
+
+        Reviewed by Dirk Schulze.
+
+        Modifying tests to expect the default fill-rule to be omitted. In addition,
+        animation-test-helpers now parses its arguments as an unbounded list, rather
+        than as a fixed number of capturing parentheses.
+
+        * animations/resources/animation-test-helpers.js:
+        * css3/masking/clip-path-animation-expected.txt:
+        * css3/masking/clip-path-animation.html:
+        * fast/masking/parsing-clip-path-shape-expected.txt:
+        * fast/masking/parsing-clip-path-shape.html:
+        * fast/shapes/parsing/parsing-shape-inside-expected.txt:
+        * fast/shapes/parsing/parsing-shape-lengths-expected.txt:
+        * fast/shapes/parsing/parsing-shape-lengths.html:
+        * fast/shapes/parsing/parsing-shape-outside-expected.txt:
+        * fast/shapes/parsing/parsing-test-utils.js:
+        * fast/shapes/shape-inside/shape-inside-animation-expected.txt:
+        * fast/shapes/shape-inside/shape-inside-animation.html:
+        * fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt:
+        * fast/shapes/shape-outside-floats/shape-outside-animation.html:
+
 2014-03-14  James Craig  <jcraig@apple.com>
 
         Web Inspector: AXI: Expose Accessibility Tree parent of the selected node
index f785e5c..da7db74 100644 (file)
@@ -191,7 +191,12 @@ function parseBasicShape(s)
         matches = s.match("ellipse\\((.*)\\s+(.*)\\s+at\\s+(.*)\\s+(.*)\\)");
         break;
     case "polygon":
-        matches = s.match("polygon\\((evenodd|nonzero), (.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\s*,\\s*(.*)\\s+(.*)\\)");
+        matches = s.match("polygon\\(\\s*(.*)\\s*\\)");
+        matches = matches[1].split(/\s*,\s*/);
+        matches = matches.map(function(match) {
+            return match.split(/\s+/);
+        });
+        matches = Array.prototype.concat.apply([s], matches);
         break;
     default:
         return null;
index 3c87391..f57b6fc 100644 (file)
@@ -2,6 +2,6 @@
 PASS - "webkitClipPath" property for "inset-box" element at 1s saw something close to: inset(10% 10% 10% 10% round 0px 0px 0px 0px / 0px 0px 0px 0px)
 PASS - "webkitClipPath" property for "circle-box" element at 1s saw something close to: circle(35% at 35% 35%)
 PASS - "webkitClipPath" property for "ellipse-box" element at 1s saw something close to: ellipse(35% 30% at 35% 35%)
-PASS - "webkitClipPath" property for "polygon-box" element at 1s saw something close to: polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)
-PASS - "webkitClipPath" property for "none-box" element at 1s saw something close to: polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%)
+PASS - "webkitClipPath" property for "polygon-box" element at 1s saw something close to: polygon(10% 10%, 90% 10%, 90% 90%, 10% 90%)
+PASS - "webkitClipPath" property for "none-box" element at 1s saw something close to: polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%)
 
index f5481f2..737ad55 100644 (file)
@@ -65,8 +65,8 @@
       ["inset-anim",  1, "inset-box", "webkitClipPath", "inset(10% 10% 10% 10% round 0px 0px 0px 0px / 0px 0px 0px 0px)", 0.05],
       ["circle-anim",  1, "circle-box", "webkitClipPath", "circle(35% at 35% 35%)", 0.05],
       ["ellipse-anim",  1, "ellipse-box", "webkitClipPath", "ellipse(35% 30% at 35% 35%)", 0.05],
-      ["polygon-anim",  1, "polygon-box", "webkitClipPath", "polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)", 0.05],
-      ["none-anim",  1, "none-box", "webkitClipPath", "polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%)", 0],
+      ["polygon-anim",  1, "polygon-box", "webkitClipPath", "polygon(10% 10%, 90% 10%, 90% 90%, 10% 90%)", 0.05],
+      ["none-anim",  1, "none-box", "webkitClipPath", "polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%)", 0],
     ];
     
     runAnimationTest(expectedValues);
index 46f2007..191ca5a 100644 (file)
@@ -23,7 +23,7 @@ PASS computedStyle("-webkit-clip-path", "circle(1.5vmin at .5vmin 1vmin)") is "c
 PASS computedStyle("-webkit-clip-path", "circle(150% at 50% 100%)") is "circle(150% at 50% 100%)"
 PASS computedStyle("-webkit-clip-path", "inset(45% 45% 90% 60% round 25% 10%)") is "inset(45% 45% 90% 60% round 25% 10% 25% 10% / 25% 10% 25% 10%)"
 PASS computedStyle("-webkit-clip-path", "ellipse(100% 100% at 100% 100%)") is "ellipse(100% 100% at 100% 100%)"
-PASS computedStyle("-webkit-clip-path", "polygon(10% 20%, 30% 40%, 40% 50%)") is "polygon(nonzero, 10% 20%, 30% 40%, 40% 50%)"
+PASS computedStyle("-webkit-clip-path", "polygon(10% 20%, 30% 40%, 40% 50%)") is "polygon(10% 20%, 30% 40%, 40% 50%)"
 PASS innerStyle("-webkit-clip-path", "content-box") is "content-box"
 PASS innerStyle("-webkit-clip-path", "padding-box") is "padding-box"
 PASS innerStyle("-webkit-clip-path", "border-box") is "border-box"
index 959aa58..4d1869e 100644 (file)
@@ -71,7 +71,7 @@ testComputed("-webkit-clip-path", "circle(1.5vmin at .5vmin 1vmin)", "circle(1.5
 testComputed("-webkit-clip-path", "circle(150% at 50% 100%)", "circle(150% at 50% 100%)");
 testComputed("-webkit-clip-path", "inset(45% 45% 90% 60% round 25% 10%)", "inset(45% 45% 90% 60% round 25% 10% 25% 10% / 25% 10% 25% 10%)");
 testComputed("-webkit-clip-path", "ellipse(100% 100% at 100% 100%)", "ellipse(100% 100% at 100% 100%)");
-testComputed("-webkit-clip-path", "polygon(10% 20%, 30% 40%, 40% 50%)", "polygon(nonzero, 10% 20%, 30% 40%, 40% 50%)");
+testComputed("-webkit-clip-path", "polygon(10% 20%, 30% 40%, 40% 50%)", "polygon(10% 20%, 30% 40%, 40% 50%)");
 
 // boxes
 testInner("-webkit-clip-path", "content-box", "content-box");
index 6557ffe..5a859a3 100644 (file)
@@ -121,12 +121,12 @@ PASS getCSSText("-webkit-shape-inside", "ellipse(10px 10px at right 10% bottom 1
 PASS getComputedStyleValue("-webkit-shape-inside", "ellipse(10px 10px at right 10% bottom 10%)") is "ellipse(10px 10px at 90% 90%)"
 PASS getCSSText("-webkit-shape-inside", "ellipse(10px 10px at right 0px bottom 0px)") is "ellipse(10px 10px at 100% 100%)"
 PASS getComputedStyleValue("-webkit-shape-inside", "ellipse(10px 10px at right 0px bottom 0px)") is "ellipse(10px 10px at 100% 100%)"
-PASS getCSSText("-webkit-shape-inside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
-PASS getComputedStyleValue("-webkit-shape-inside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
+PASS getCSSText("-webkit-shape-inside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
+PASS getComputedStyleValue("-webkit-shape-inside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
 PASS getCSSText("-webkit-shape-inside", "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)") is "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)"
 PASS getComputedStyleValue("-webkit-shape-inside", "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)") is "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)"
-PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
-PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
+PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
+PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
 PASS getCSSText("-webkit-shape-inside", "content-box") is "content-box"
 PASS getComputedStyleValue("-webkit-shape-inside", "content-box") is "content-box"
 PASS getCSSText("-webkit-shape-inside", "padding-box") is "padding-box"
@@ -135,22 +135,22 @@ PASS getCSSText("-webkit-shape-inside", "border-box") is "border-box"
 PASS getComputedStyleValue("-webkit-shape-inside", "border-box") is "border-box"
 PASS getCSSText("-webkit-shape-inside", "margin-box") is "margin-box"
 PASS getComputedStyleValue("-webkit-shape-inside", "margin-box") is "margin-box"
-PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box"
-PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box"
-PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box"
-PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box"
-PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box"
-PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box"
-PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box"
-PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box"
-PASS getCSSText("-webkit-shape-inside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-inside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box"
-PASS getCSSText("-webkit-shape-inside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-inside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box"
-PASS getCSSText("-webkit-shape-inside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-inside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box"
-PASS getCSSText("-webkit-shape-inside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-inside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box"
+PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(0px 0px, 10px 10px, 10px 0px) content-box"
+PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(0px 0px, 10px 10px, 10px 0px) content-box"
+PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"
+PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"
+PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(0px 0px, 10px 10px, 10px 0px) border-box"
+PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(0px 0px, 10px 10px, 10px 0px) border-box"
+PASS getCSSText("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"
+PASS getComputedStyleValue("-webkit-shape-inside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"
+PASS getCSSText("-webkit-shape-inside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "content-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-inside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) content-box"
+PASS getCSSText("-webkit-shape-inside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "padding-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-inside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"
+PASS getCSSText("-webkit-shape-inside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "border-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-inside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) border-box"
+PASS getCSSText("-webkit-shape-inside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "margin-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-inside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"
 PASS getCSSText("-webkit-shape-inside", "outside-shape") is "outside-shape"
 PASS getComputedStyleValue("-webkit-shape-inside", "outside-shape") is "outside-shape"
 PASS removeBaseURL(getCSSText("-webkit-shape-inside", "url('image')")) is "url(image)"
index 4aaac71..9fbc4e8 100644 (file)
@@ -28,11 +28,11 @@ PASS getComputedStyleValue("-webkit-shape-inside", "circle(1.5vmin at .5vmin 1vm
 PASS getStyleValue("-webkit-shape-inside", "circle(100% at 100% 100%)") is "circle(100% at 100% 100%)"
 PASS getStyleValue("-webkit-shape-inside", "inset(45% 45% 90% 60% round 25% 10%)") is "inset(45% 45% 90% 60% round 25% 10% 25% 10% / 25% 10% 25% 10%)"
 PASS getStyleValue("-webkit-shape-inside", "ellipse(100% 100% at 100% 100%)") is "ellipse(100% 100% at 100% 100%)"
-PASS getStyleValue("-webkit-shape-inside", "polygon(10% 20%, 30% 40%, 40% 50%)") is "polygon(nonzero, 10% 20%, 30% 40%, 40% 50%)"
+PASS getStyleValue("-webkit-shape-inside", "polygon(10% 20%, 30% 40%, 40% 50%)") is "polygon(10% 20%, 30% 40%, 40% 50%)"
 PASS getComputedStyleValue("-webkit-shape-inside", "circle(150% at 50% 100%)") is "circle(150% at 50% 100%)"
 PASS getComputedStyleValue("-webkit-shape-inside", "inset(45% 45% 90% 60% round 25% 10%)") is "inset(45% 45% 90% 60% round 25% 10% 25% 10% / 25% 10% 25% 10%)"
 PASS getComputedStyleValue("-webkit-shape-inside", "ellipse(100% 100% at 100% 100%)") is "ellipse(100% 100% at 100% 100%)"
-PASS getComputedStyleValue("-webkit-shape-inside", "polygon(10% 20%, 30% 40%, 40% 50%)") is "polygon(nonzero, 10% 20%, 30% 40%, 40% 50%)"
+PASS getComputedStyleValue("-webkit-shape-inside", "polygon(10% 20%, 30% 40%, 40% 50%)") is "polygon(10% 20%, 30% 40%, 40% 50%)"
 PASS getStyleValue("-webkit-shape-inside", "circle(1 at 1px 1px)") is null
 PASS getComputedStyleValue("-webkit-shape-inside", "circle(1 at 1px 1px)") is "none"
 PASS getStyleValue("-webkit-shape-inside", "circle(px at 1px 1px)") is null
index b02a5f8..1555466 100644 (file)
@@ -72,12 +72,12 @@ testComputedStyleValue("circle(1.5vmin at .5vmin 1vmin)", "circle(1.5vmin at 0.5
 testStyleValue("circle(100% at 100% 100%)", "circle(100% at 100% 100%)");
 testStyleValue("inset(45% 45% 90% 60% round 25% 10%)", "inset(45% 45% 90% 60% round 25% 10% 25% 10% / 25% 10% 25% 10%)");
 testStyleValue("ellipse(100% 100% at 100% 100%)", "ellipse(100% 100% at 100% 100%)");
-testStyleValue("polygon(10% 20%, 30% 40%, 40% 50%)", "polygon(nonzero, 10% 20%, 30% 40%, 40% 50%)");
+testStyleValue("polygon(10% 20%, 30% 40%, 40% 50%)", "polygon(10% 20%, 30% 40%, 40% 50%)");
 
 testComputedStyleValue("circle(150% at 50% 100%)", "circle(150% at 50% 100%)");
 testComputedStyleValue("inset(45% 45% 90% 60% round 25% 10%)", "inset(45% 45% 90% 60% round 25% 10% 25% 10% / 25% 10% 25% 10%)");
 testComputedStyleValue("ellipse(100% 100% at 100% 100%)", "ellipse(100% 100% at 100% 100%)");
-testComputedStyleValue("polygon(10% 20%, 30% 40%, 40% 50%)", "polygon(nonzero, 10% 20%, 30% 40%, 40% 50%)");
+testComputedStyleValue("polygon(10% 20%, 30% 40%, 40% 50%)", "polygon(10% 20%, 30% 40%, 40% 50%)");
 
 // reject non-lengths
 testInvalidValue("-webkit-shape-outside", "circle(1 at 1px 1px)");
index a79cf65..f3c5bca 100644 (file)
@@ -121,12 +121,12 @@ PASS getCSSText("-webkit-shape-outside", "ellipse(10px 10px at right 10% bottom
 PASS getComputedStyleValue("-webkit-shape-outside", "ellipse(10px 10px at right 10% bottom 10%)") is "ellipse(10px 10px at 90% 90%)"
 PASS getCSSText("-webkit-shape-outside", "ellipse(10px 10px at right 0px bottom 0px)") is "ellipse(10px 10px at 100% 100%)"
 PASS getComputedStyleValue("-webkit-shape-outside", "ellipse(10px 10px at right 0px bottom 0px)") is "ellipse(10px 10px at 100% 100%)"
-PASS getCSSText("-webkit-shape-outside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
-PASS getComputedStyleValue("-webkit-shape-outside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
+PASS getCSSText("-webkit-shape-outside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
+PASS getComputedStyleValue("-webkit-shape-outside", "polygon(10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
 PASS getCSSText("-webkit-shape-outside", "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)") is "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)"
 PASS getComputedStyleValue("-webkit-shape-outside", "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)") is "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)"
-PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
-PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"
+PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
+PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)") is "polygon(10px 20px, 30px 40px, 40px 50px)"
 PASS getCSSText("-webkit-shape-outside", "content-box") is "content-box"
 PASS getComputedStyleValue("-webkit-shape-outside", "content-box") is "content-box"
 PASS getCSSText("-webkit-shape-outside", "padding-box") is "padding-box"
@@ -135,22 +135,22 @@ PASS getCSSText("-webkit-shape-outside", "border-box") is "border-box"
 PASS getComputedStyleValue("-webkit-shape-outside", "border-box") is "border-box"
 PASS getCSSText("-webkit-shape-outside", "margin-box") is "margin-box"
 PASS getComputedStyleValue("-webkit-shape-outside", "margin-box") is "margin-box"
-PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box"
-PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box"
-PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box"
-PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box"
-PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box"
-PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box"
-PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box"
-PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box"
-PASS getCSSText("-webkit-shape-outside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-outside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box"
-PASS getCSSText("-webkit-shape-outside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-outside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box"
-PASS getCSSText("-webkit-shape-outside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-outside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box"
-PASS getCSSText("-webkit-shape-outside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)"
-PASS getComputedStyleValue("-webkit-shape-outside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box"
+PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(0px 0px, 10px 10px, 10px 0px) content-box"
+PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box") is "polygon(0px 0px, 10px 10px, 10px 0px) content-box"
+PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"
+PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box") is "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"
+PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(0px 0px, 10px 10px, 10px 0px) border-box"
+PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box") is "polygon(0px 0px, 10px 10px, 10px 0px) border-box"
+PASS getCSSText("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"
+PASS getComputedStyleValue("-webkit-shape-outside", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box") is "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"
+PASS getCSSText("-webkit-shape-outside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "content-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-outside", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) content-box"
+PASS getCSSText("-webkit-shape-outside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "padding-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-outside", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"
+PASS getCSSText("-webkit-shape-outside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "border-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-outside", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) border-box"
+PASS getCSSText("-webkit-shape-outside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "margin-box polygon(0px 0px, 10px 10px, 10px 0px)"
+PASS getComputedStyleValue("-webkit-shape-outside", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)") is "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"
 PASS removeBaseURL(getCSSText("-webkit-shape-outside", "url('image')")) is "url(image)"
 PASS removeBaseURL(getComputedStyleValue("-webkit-shape-outside", "url('image')")) is "url(image)"
 PASS getCSSText("-webkit-shape-outside", "calc()") is ""
index 7b73837..b78924d 100644 (file)
@@ -68,24 +68,24 @@ var validShapeValues = [
     ["ellipse(10px 10px at right 10% bottom 10%)", "ellipse(10px 10px at 90% 90%)"],
     ["ellipse(10px 10px at right 0px bottom 0px)", "ellipse(10px 10px at 100% 100%)"],
 
-    ["polygon(10px 20px, 30px 40px, 40px 50px)", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"],
+    ["polygon(10px 20px, 30px 40px, 40px 50px)", "polygon(10px 20px, 30px 40px, 40px 50px)"],
     ["polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)", "polygon(evenodd, 10px 20px, 30px 40px, 40px 50px)"],
-    ["polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)", "polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)"],
+    ["polygon(nonzero, 10px 20px, 30px 40px, 40px 50px)", "polygon(10px 20px, 30px 40px, 40px 50px)"],
 
     "content-box",
     "padding-box",
     "border-box",
     "margin-box",
 
-    "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box",
-    "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box",
-    "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box",
-    "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box",
+    ["polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box", "polygon(0px 0px, 10px 10px, 10px 0px) content-box"],
+    ["polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box", "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"],
+    ["polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box", "polygon(0px 0px, 10px 10px, 10px 0px) border-box"],
+    ["polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box", "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"],
 
-    ["content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) content-box"],
-    ["padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) padding-box"],
-    ["border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) border-box"],
-    ["margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "polygon(nonzero, 0px 0px, 10px 10px, 10px 0px) margin-box"]
+    ["content-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "content-box polygon(0px 0px, 10px 10px, 10px 0px)", "polygon(0px 0px, 10px 10px, 10px 0px) content-box"],
+    ["padding-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "padding-box polygon(0px 0px, 10px 10px, 10px 0px)", "polygon(0px 0px, 10px 10px, 10px 0px) padding-box"],
+    ["border-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "border-box polygon(0px 0px, 10px 10px, 10px 0px)", "polygon(0px 0px, 10px 10px, 10px 0px) border-box"],
+    ["margin-box polygon(nonzero, 0px 0px, 10px 10px, 10px 0px)", "margin-box polygon(0px 0px, 10px 10px, 10px 0px)", "polygon(0px 0px, 10px 10px, 10px 0px) margin-box"]
 ];
 
 // Invalid values for both shape-inside and shape-outside. When an invalid shape value is specified, the 
index 8f15abe..07908b4 100644 (file)
@@ -2,5 +2,5 @@ Moving Text Moving Text Moving Text Moving Text
 PASS - "webkitShapeInside" property for "inset-box" element at 1s saw something close to: inset(10% 10% 10% 10% round 0px 0px 0px 0px / 0px 0px 0px 0px)
 PASS - "webkitShapeInside" property for "circle-box" element at 1s saw something close to: circle(35% at 35% 35%)
 PASS - "webkitShapeInside" property for "ellipse-box" element at 1s saw something close to: ellipse(35% 30% at 35% 35%)
-PASS - "webkitShapeInside" property for "polygon-box" element at 1s saw something close to: polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)
+PASS - "webkitShapeInside" property for "polygon-box" element at 1s saw something close to: polygon(10% 10%, 90% 10%, 90% 90%, 10% 90%)
 
index 235fa99..50a201a 100644 (file)
@@ -55,7 +55,7 @@
       ["inset-anim",  1, "inset-box", "webkitShapeInside", "inset(10% 10% 10% 10% round 0px 0px 0px 0px / 0px 0px 0px 0px)", 0.05],
       ["circle-anim",  1, "circle-box", "webkitShapeInside", "circle(35% at 35% 35%)", 0.05],
       ["ellipse-anim",  1, "ellipse-box", "webkitShapeInside", "ellipse(35% 30% at 35% 35%)", 0.05],
-      ["polygon-anim",  1, "polygon-box", "webkitShapeInside", "polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)", 0.05],
+      ["polygon-anim",  1, "polygon-box", "webkitShapeInside", "polygon(10% 10%, 90% 10%, 90% 90%, 10% 90%)", 0.05],
     ];
     
     runAnimationTest(expectedValues);
index 501b586..c1a794b 100644 (file)
@@ -14,8 +14,8 @@ Moving Text
 PASS - "webkitShapeOutside" property for "inset-box" element at 1s saw something close to: inset(10% 10% 10% 10% round 0px 0px 0px 0px / 0px 0px 0px 0px)
 PASS - "webkitShapeOutside" property for "circle-box" element at 1s saw something close to: circle(35% at 35% 35%)
 PASS - "webkitShapeOutside" property for "ellipse-box" element at 1s saw something close to: ellipse(35% 30% at 35% 35%)
-PASS - "webkitShapeOutside" property for "polygon-box" element at 1s saw something close to: polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)
-PASS - "webkitShapeOutside" property for "polygon2-box" element at 1s saw something close to: polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%)
+PASS - "webkitShapeOutside" property for "polygon-box" element at 1s saw something close to: polygon(10% 10%, 90% 10%, 90% 90%, 10% 90%)
+PASS - "webkitShapeOutside" property for "polygon2-box" element at 1s saw something close to: polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%)
 PASS - "webkitShapeOutside" property for "circle-auto-box" element at 1s saw something close to: circle(50% at 50% 50%)
 PASS - "webkitShapeOutside" property for "circle-to-topleft-box" element at 1s saw something close to: circle(35% at 25% 25%)
 PASS - "webkitShapeOutside" property for "circle-to-topleft-box" element at 1s saw something close to: circle(35% at 25% 25%)
index 20512b8..e323e8c 100644 (file)
@@ -82,8 +82,8 @@
     }
 
     @-webkit-keyframes polygon-anim {
-        from { -webkit-shape-outside: polygon(nonzero, 0% 0%, 100% 0%, 100% 100%, 0% 100%); }
-        to   { -webkit-shape-outside: polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%); }
+        from { -webkit-shape-outside: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); }
+        to   { -webkit-shape-outside: polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%); }
     }
 
     @-webkit-keyframes polygon2-anim {
       ["inset-anim",  1, "inset-box", "webkitShapeOutside", "inset(10% 10% 10% 10% round 0px 0px 0px 0px / 0px 0px 0px 0px)", 0.05],
       ["circle-anim",  1, "circle-box", "webkitShapeOutside", "circle(35% at 35% 35%)", 0.05],
       ["ellipse-anim",  1, "ellipse-box", "webkitShapeOutside", "ellipse(35% 30% at 35% 35%)", 0.05],
-      ["polygon-anim",  1, "polygon-box", "webkitShapeOutside", "polygon(nonzero, 10% 10%, 90% 10%, 90% 90%, 10% 90%)", 0.05],
-      ["polygon2-anim",  1, "polygon2-box", "webkitShapeOutside", "polygon(nonzero, 20% 20%, 80% 20%, 80% 80%, 20% 80%)", 0.05],
+      ["polygon-anim",  1, "polygon-box", "webkitShapeOutside", "polygon(10% 10%, 90% 10%, 90% 90%, 10% 90%)", 0.05],
+      ["polygon2-anim",  1, "polygon2-box", "webkitShapeOutside", "polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%)", 0.05],
       ["circle-auto-anim",  1, "circle-auto-box", "webkitShapeOutside", "circle(50% at 50% 50%)", 0.05],
       ["circle-to-topleft-anim",  1, "circle-to-topleft-box", "webkitShapeOutside", "circle(35% at 25% 25%)", 0.05],
       ["circle-to-topleft-anim",  1, "circle-to-topleft-box", "webkitShapeOutside", "circle(35% at 25% 25%)", 0.05],
index b64a78b..f60a218 100644 (file)
@@ -1,3 +1,18 @@
+2014-03-14  Bear Travis  <betravis@adobe.com>
+
+        [CSS Shapes] polygon default fill-rule should be omitted from the serialization
+        https://bugs.webkit.org/show_bug.cgi?id=129840
+
+        Reviewed by Dirk Schulze.
+
+        Modifying the default polygon string opening to be "polygon(" rather than
+        "polygon(nonzero".
+
+        Updated existing parsing tests.
+
+        * css/CSSBasicShapes.cpp:
+        (WebCore::buildPolygonString):
+
 2014-03-14  Brent Fulgham  <bfulgham@apple.com>
 
         Crash when using a mixture of In-Band and Out-of-Band Tracks
index 8f7c057..923aa75 100644 (file)
@@ -198,10 +198,10 @@ static String buildPolygonString(const WindRule& windRule, const Vector<String>&
 
     StringBuilder result;
     char evenOddOpening[] = "polygon(evenodd, ";
-    char nonZeroOpening[] = "polygon(nonzero, ";
+    char nonZeroOpening[] = "polygon(";
     char commaSeparator[] = ", ";
-    COMPILE_ASSERT(sizeof(evenOddOpening) == sizeof(nonZeroOpening), polygon_string_openings_have_same_length);
-    
+    COMPILE_ASSERT(sizeof(evenOddOpening) >= sizeof(nonZeroOpening), polygon_evenodd_is_longest_string_opening);
+
     // Compute the required capacity in advance to reduce allocations.
     size_t length = sizeof(evenOddOpening) - 1;
     for (size_t i = 0; i < points.size(); i += 2) {