Title: [153847] trunk
Revision
153847
Author
rwlb...@webkit.org
Date
2013-08-08 14:19:27 -0700 (Thu, 08 Aug 2013)

Log Message

ASSERT_NOT_REACHED() touched in WebCore::SVGAnimatedStringAnimator::addAnimatedTypes
https://bugs.webkit.org/show_bug.cgi?id=113224

Reviewed by Dirk Schulze.

Source/WebCore:

Do not perform from-by animations for non-additive attributes.

Test: svg/animations/non-additive-type-from-by-animation.html

* svg/SVGAnimateElement.cpp:
(WebCore::SVGAnimateElement::calculateFromAndByValues):

LayoutTests:

Add a test for animating non-additive attributes in from-by animations

* svg/animations/non-additive-type-from-by-animation-expected.txt: Added.
* svg/animations/non-additive-type-from-by-animation.html: Added.
* svg/animations/resources/non-additive-type-from-by-animation.svg: Added.
* svg/animations/script-tests/non-additive-type-from-by-animation.js: Added.
(sample):
(executeTest):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (153846 => 153847)


--- trunk/LayoutTests/ChangeLog	2013-08-08 21:17:14 UTC (rev 153846)
+++ trunk/LayoutTests/ChangeLog	2013-08-08 21:19:27 UTC (rev 153847)
@@ -1,3 +1,19 @@
+2013-08-08  Rob Buis  <rwlb...@webkit.org>
+
+        ASSERT_NOT_REACHED() touched in WebCore::SVGAnimatedStringAnimator::addAnimatedTypes
+        https://bugs.webkit.org/show_bug.cgi?id=113224
+
+        Reviewed by Dirk Schulze.
+
+        Add a test for animating non-additive attributes in from-by animations
+
+        * svg/animations/non-additive-type-from-by-animation-expected.txt: Added.
+        * svg/animations/non-additive-type-from-by-animation.html: Added.
+        * svg/animations/resources/non-additive-type-from-by-animation.svg: Added.
+        * svg/animations/script-tests/non-additive-type-from-by-animation.js: Added.
+        (sample):
+        (executeTest):
+
 2013-08-08  Eric Carlson  <eric.carl...@apple.com>
 
         fullscreen/exit-full-screen-iframe.html is failing

Added: trunk/LayoutTests/svg/animations/non-additive-type-from-by-animation-expected.txt (0 => 153847)


--- trunk/LayoutTests/svg/animations/non-additive-type-from-by-animation-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/animations/non-additive-type-from-by-animation-expected.txt	2013-08-08 21:19:27 UTC (rev 153847)
@@ -0,0 +1,62 @@
+SVG 1.1 dynamic animation tests
+
+
+This is a from by animation for all non-additive property types - should have no effect.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feConvolveMatrix.preserveAlpha.animVal is false
+PASS filter.filterUnits.animVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.animVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.animVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.animVal is ""
+PASS feConvolveMatrix.preserveAlpha.baseVal is false
+PASS filter.filterUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.baseVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.baseVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.baseVal is ""
+PASS feConvolveMatrix.preserveAlpha.animVal is false
+PASS filter.filterUnits.animVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.animVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.animVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.animVal is ""
+PASS feConvolveMatrix.preserveAlpha.baseVal is false
+PASS filter.filterUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.baseVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.baseVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.baseVal is ""
+PASS feConvolveMatrix.preserveAlpha.animVal is false
+PASS filter.filterUnits.animVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.animVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.animVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.animVal is ""
+PASS feConvolveMatrix.preserveAlpha.baseVal is false
+PASS filter.filterUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.baseVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.baseVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.baseVal is ""
+PASS feConvolveMatrix.preserveAlpha.animVal is false
+PASS filter.filterUnits.animVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.animVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.animVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.animVal is ""
+PASS feConvolveMatrix.preserveAlpha.baseVal is false
+PASS filter.filterUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.baseVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.baseVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.baseVal is ""
+PASS feConvolveMatrix.preserveAlpha.animVal is false
+PASS filter.filterUnits.animVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.animVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.animVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.animVal is ""
+PASS feConvolveMatrix.preserveAlpha.baseVal is false
+PASS filter.filterUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS svg.preserveAspectRatio.baseVal.align is SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE
+PASS svg.preserveAspectRatio.baseVal.meetOrSlice is SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET
+PASS feConvolveMatrix.result.baseVal is ""
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/svg/animations/non-additive-type-from-by-animation.html (0 => 153847)


--- trunk/LayoutTests/svg/animations/non-additive-type-from-by-animation.html	                        (rev 0)
+++ trunk/LayoutTests/svg/animations/non-additive-type-from-by-animation.html	2013-08-08 21:19:27 UTC (rev 153847)
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+<script src=""
+<script src=""
+</head>
+<body _onload_="runSMILTest()">
+<h1>SVG 1.1 dynamic animation tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src=""
+</body>
+</html>

Added: trunk/LayoutTests/svg/animations/resources/non-additive-type-from-by-animation.svg (0 => 153847)


--- trunk/LayoutTests/svg/animations/resources/non-additive-type-from-by-animation.svg	                        (rev 0)
+++ trunk/LayoutTests/svg/animations/resources/non-additive-type-from-by-animation.svg	2013-08-08 21:19:27 UTC (rev 153847)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg id="svg" viewBox="0 0 200 200" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+    <filter id="filter">
+        <feConvolveMatrix id="feConvolveMatrix" kernelMatrix="0 1 0   0 1 0   0 1 0" order="6 6" targetX="5" preserveAlpha="false"/>
+    </filter>
+</defs>
+
+<rect id="rect" y="100" width="100" height="100" fill="black" filter="url(#filter)"/>
+
+<!-- AnimatedBoolean -->
+<animate id="an1" xlink:href="" attributeName="preserveAlpha" begin="0s" dur="4s" from="false" by="true" fill="freeze"/>
+
+<!-- AnimatedEnumeration -->
+<animate xlink:href="" attributeName="filterUnits" begin="0s" dur="4s" from="objectBoundingBox" by="userSpaceOnUse" fill="freeze"/>
+
+<!-- AnimatedPreserveAspectRatio -->
+<animate xlink:href="" attributeName="preserveAspectRatio" begin="0s" dur="4s" from="xMaxYMax meet" by="xMaxYMax slice" fill="freeze"/>
+
+<!-- AnimatedString -->
+<animate xlink:href="" attributeName="result" begin="0s" dur="4s" from="foo" by="test" fill="freeze"/>
+
+</svg>

Added: trunk/LayoutTests/svg/animations/script-tests/non-additive-type-from-by-animation.js (0 => 153847)


--- trunk/LayoutTests/svg/animations/script-tests/non-additive-type-from-by-animation.js	                        (rev 0)
+++ trunk/LayoutTests/svg/animations/script-tests/non-additive-type-from-by-animation.js	2013-08-08 21:19:27 UTC (rev 153847)
@@ -0,0 +1,37 @@
+description("This is a from by animation for all non-additive property types - should have no effect.");
+embedSVGTestCase("resources/non-additive-type-from-by-animation.svg");
+
+// Setup animation test
+function sample() {
+    shouldBe("feConvolveMatrix.preserveAlpha.animVal", "false");
+    shouldBe("filter.filterUnits.animVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+    shouldBe("svg.preserveAspectRatio.animVal.align", "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE");
+    shouldBe("svg.preserveAspectRatio.animVal.meetOrSlice", "SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET");
+    shouldBeEqualToString("feConvolveMatrix.result.animVal", "");
+
+    shouldBe("feConvolveMatrix.preserveAlpha.baseVal", "false");
+    shouldBe("filter.filterUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+    shouldBe("svg.preserveAspectRatio.baseVal.align", "SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE");
+    shouldBe("svg.preserveAspectRatio.baseVal.meetOrSlice", "SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET");
+    shouldBeEqualToString("feConvolveMatrix.result.baseVal", "");
+}
+
+function executeTest() {
+    filter = rootSVGElement.ownerDocument.getElementsByTagName("filter")[0];
+    feConvolveMatrix = rootSVGElement.ownerDocument.getElementsByTagName("feConvolveMatrix")[0];
+    svg = rootSVGElement.ownerDocument.getElementsByTagName("svg")[0];
+
+    const expectedValues = [
+        // [animationId, time, sampleCallback]
+        ["an1", 0.0,   sample],
+        ["an1", 1.999, sample],
+        ["an1", 2.001, sample],
+        ["an1", 3.999, sample],
+        ["an1", 4.001, sample]
+    ];
+
+    runAnimationTest(expectedValues);
+}
+
+window.animationStartsImmediately = true;
+var successfullyParsed = true;

Modified: trunk/Source/WebCore/ChangeLog (153846 => 153847)


--- trunk/Source/WebCore/ChangeLog	2013-08-08 21:17:14 UTC (rev 153846)
+++ trunk/Source/WebCore/ChangeLog	2013-08-08 21:19:27 UTC (rev 153847)
@@ -1,3 +1,17 @@
+2013-08-08  Rob Buis  <rwlb...@webkit.org>
+
+        ASSERT_NOT_REACHED() touched in WebCore::SVGAnimatedStringAnimator::addAnimatedTypes
+        https://bugs.webkit.org/show_bug.cgi?id=113224
+
+        Reviewed by Dirk Schulze.
+
+        Do not perform from-by animations for non-additive attributes.
+
+        Test: svg/animations/non-additive-type-from-by-animation.html
+
+        * svg/SVGAnimateElement.cpp:
+        (WebCore::SVGAnimateElement::calculateFromAndByValues):
+
 2013-08-08  Brent Fulgham  <bfulg...@apple.com>
 
         [Windows] Improper Caption Button Displayed to Users

Modified: trunk/Source/WebCore/svg/SVGAnimateElement.cpp (153846 => 153847)


--- trunk/Source/WebCore/svg/SVGAnimateElement.cpp	2013-08-08 21:17:14 UTC (rev 153846)
+++ trunk/Source/WebCore/svg/SVGAnimateElement.cpp	2013-08-08 21:19:27 UTC (rev 153847)
@@ -167,7 +167,7 @@
     if (!targetElement)
         return false;
 
-    if (animationMode() == ByAnimation && !isAdditive())
+    if (!isAdditive())
         return false;
 
     ASSERT(!hasTagName(SVGNames::setTag));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to