<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[175525] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/175525">175525</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-11-04 01:20:52 -0800 (Tue, 04 Nov 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Fix animation of orient attribute on marker element
https://bugs.webkit.org/show_bug.cgi?id=137942

Source/WebCore:

Patch by Nikos Andronikos &lt;nikos.andronikos-webkit@cisra.canon.com.au&gt; on 2014-11-04
Reviewed by Dirk Schulze.

Fixed implementation of SVG animated angles and the SVG
marker element orient attribute.
SVG animated angle was missing the logic to support animation
from auto to a numeric angle value - this is now added.
The SVG marker element getter for orientType was not returning
the animated value for orientType so in some cases (i.e. when
the initial value and the animated values were of different types)
the animation was not being rendered - although it was running.

Tests: svg/animations/animate-marker-orienttype-1.html
       svg/animations/animate-marker-orienttype-2.html
       svg/animations/animate-marker-orienttype-3.html

* svg/SVGAnimatedAngle.cpp:
(WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue):
Added logic to support auto to angle animation.
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::orientType):
This method now returns the animated value if an animation is
running.
* svg/SVGMarkerElement.h:

LayoutTests:

Patch by Nikos Andrkos Andronikos &lt;nikos.andronikos-webkit@cisra.canon.com.au&gt; on 2014-11-04
Reviewed by Dirk Schulze.

Test the rendered result of the animation of the orient attribute.
Existing tests were only testing the animated value in the DOM.

* svg/animations/animate-marker-orienttype-1-expected.txt: Added.
* svg/animations/animate-marker-orienttype-1.html: Added.
* svg/animations/animate-marker-orienttype-2-expected.txt: Added.
* svg/animations/animate-marker-orienttype-2.html: Added.
* svg/animations/animate-marker-orienttype-3-expected.txt: Added.
* svg/animations/animate-marker-orienttype-3.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedAnglecpp">trunk/Source/WebCore/svg/SVGAnimatedAngle.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMarkerElementcpp">trunk/Source/WebCore/svg/SVGMarkerElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMarkerElementh">trunk/Source/WebCore/svg/SVGMarkerElement.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestssvganimationsanimatemarkerorienttype1expectedtxt">trunk/LayoutTests/svg/animations/animate-marker-orienttype-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvganimationsanimatemarkerorienttype1html">trunk/LayoutTests/svg/animations/animate-marker-orienttype-1.html</a></li>
<li><a href="#trunkLayoutTestssvganimationsanimatemarkerorienttype2expectedtxt">trunk/LayoutTests/svg/animations/animate-marker-orienttype-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvganimationsanimatemarkerorienttype2html">trunk/LayoutTests/svg/animations/animate-marker-orienttype-2.html</a></li>
<li><a href="#trunkLayoutTestssvganimationsanimatemarkerorienttype3expectedtxt">trunk/LayoutTests/svg/animations/animate-marker-orienttype-3-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvganimationsanimatemarkerorienttype3html">trunk/LayoutTests/svg/animations/animate-marker-orienttype-3.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (175524 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-11-04 08:20:46 UTC (rev 175524)
+++ trunk/LayoutTests/ChangeLog        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2014-11-04  Nikos Andrkos Andronikos  &lt;nikos.andronikos-webkit@cisra.canon.com.au&gt;
+
+        Fix animation of orient attribute on marker element
+        https://bugs.webkit.org/show_bug.cgi?id=137942
+
+        Reviewed by Dirk Schulze.
+
+        Test the rendered result of the animation of the orient attribute.
+        Existing tests were only testing the animated value in the DOM.
+
+        * svg/animations/animate-marker-orienttype-1-expected.txt: Added.
+        * svg/animations/animate-marker-orienttype-1.html: Added.
+        * svg/animations/animate-marker-orienttype-2-expected.txt: Added.
+        * svg/animations/animate-marker-orienttype-2.html: Added.
+        * svg/animations/animate-marker-orienttype-3-expected.txt: Added.
+        * svg/animations/animate-marker-orienttype-3.html: Added.
+
</ins><span class="cx"> 2014-11-03  Shivakumar JM  &lt;shiva.jm@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Adding test for array buffer and data view POST in XMLHttpRequest async send.
</span></span></pre></div>
<a id="trunkLayoutTestssvganimationsanimatemarkerorienttype1expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/animations/animate-marker-orienttype-1-expected.txt (0 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/animations/animate-marker-orienttype-1-expected.txt                                (rev 0)
+++ trunk/LayoutTests/svg/animations/animate-marker-orienttype-1-expected.txt        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x520
+  RenderBlock {HTML} at (0,0) size 800x520
+    RenderBody {BODY} at (8,8) size 784x504
+      RenderSVGRoot {svg} at (58,58) size 218x218
+        RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+          RenderSVGResourceMarker {marker} [id=&quot;arrow&quot;] [markerUnits=strokeWidth] [ref at (0,0)] [angle=180.00]
+            RenderSVGPath {path} at (8,8) size 17x17 [opacity=0.50] [fill={[type=SOLID] [color=#008000]}] [data=&quot;M 5 0 L 0 -5 L 0 5 Z&quot;]
+        RenderSVGPath {path} at (58,58) size 218x218 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#000000]}] [start marker=arrow] [data=&quot;M 20 20 L 80 80&quot;]
+      RenderText {#text} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestssvganimationsanimatemarkerorienttype1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/animations/animate-marker-orienttype-1.html (0 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/animations/animate-marker-orienttype-1.html                                (rev 0)
+++ trunk/LayoutTests/svg/animations/animate-marker-orienttype-1.html        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;!--
+  Test that the renderer uses the animated value of orientType.
+  To test this, the final animated value must be of a different type than the initial value.
+  To verify rendering, DumpRenderTree output must be examined, not DOM values.
+ --&gt;
+&lt;script&gt;
+function doTest() {
+    if (testRunner) {
+        var svg = document.querySelector(&quot;svg&quot;);
+        svg.pauseAnimations();
+        svg.setCurrentTime(5);
+    }
+}
+&lt;/script&gt;
+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewbox=&quot;0 0 150 150&quot; width=&quot;500&quot; height=&quot;500&quot; onload=&quot;doTest()&quot;&gt;
+    &lt;defs&gt;
+        &lt;marker id=&quot;arrow&quot; orient=&quot;auto&quot; markerWidth=&quot;10&quot; markerHeight=&quot;10&quot; style=&quot;overflow:visible&quot;&gt;
+            &lt;path d=&quot;M5,0 L 0,-5 L0,5 z&quot; fill=&quot;green&quot; opacity=&quot;0.5&quot; /&gt;
+            &lt;animate attributeName=&quot;orient&quot; from=&quot;0&quot; to=&quot;180&quot; begin=&quot;0s&quot; dur=&quot;1s&quot; fill=&quot;freeze&quot;/&gt;
+        &lt;/marker&gt;
+    &lt;/defs&gt;
+    &lt;path d=&quot;M 20,20 L 80,80&quot; marker-start=&quot;url(#arrow)&quot; stroke=&quot;black&quot;/&gt;
+&lt;/svg&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestssvganimationsanimatemarkerorienttype2expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/animations/animate-marker-orienttype-2-expected.txt (0 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/animations/animate-marker-orienttype-2-expected.txt                                (rev 0)
+++ trunk/LayoutTests/svg/animations/animate-marker-orienttype-2-expected.txt        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x520
+  RenderBlock {HTML} at (0,0) size 800x520
+    RenderBody {BODY} at (8,8) size 784x504
+      RenderSVGRoot {svg} at (58,71) size 218x205
+        RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+          RenderSVGResourceMarker {marker} [id=&quot;arrow&quot;] [markerUnits=strokeWidth] [ref at (0,0)] [angle=80.00]
+            RenderSVGPath {path} at (8,8) size 17x17 [opacity=0.50] [fill={[type=SOLID] [color=#008000]}] [data=&quot;M 5 0 L 0 -5 L 0 5 Z&quot;]
+        RenderSVGPath {path} at (58,71) size 218x205 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#000000]}] [start marker=arrow] [data=&quot;M 20 20 L 80 80&quot;]
+      RenderText {#text} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestssvganimationsanimatemarkerorienttype2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/animations/animate-marker-orienttype-2.html (0 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/animations/animate-marker-orienttype-2.html                                (rev 0)
+++ trunk/LayoutTests/svg/animations/animate-marker-orienttype-2.html        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;!--
+  Test that the renderer uses the animated value of orientType.
+  To test this, the final animated value must be of a different type than the initial value.
+  To verify rendering, DumpRenderTree output must be examined, not DOM values.
+ --&gt;
+&lt;script&gt;
+function doTest() {
+    if (testRunner) {
+        var svg = document.querySelector(&quot;svg&quot;);
+        svg.pauseAnimations();
+        svg.setCurrentTime(5);
+    }
+}
+&lt;/script&gt;
+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewbox=&quot;0 0 150 150&quot; width=&quot;500&quot; height=&quot;500&quot; onload=&quot;doTest()&quot;&gt;
+    &lt;defs&gt;
+        &lt;marker id=&quot;arrow&quot; orient=&quot;auto&quot; markerWidth=&quot;10&quot; markerHeight=&quot;10&quot; style=&quot;overflow:visible&quot;&gt;
+            &lt;path d=&quot;M5,0 L 0,-5 L0,5 z&quot; fill=&quot;green&quot; opacity=&quot;0.5&quot; /&gt;
+            &lt;animate attributeName=&quot;orient&quot; from=&quot;auto&quot; to=&quot;80&quot; begin=&quot;0s&quot; dur=&quot;1s&quot; fill=&quot;freeze&quot;/&gt;
+        &lt;/marker&gt;
+    &lt;/defs&gt;
+    &lt;path d=&quot;M 20,20 L 80,80&quot; marker-start=&quot;url(#arrow)&quot; stroke=&quot;black&quot;/&gt;
+&lt;/svg&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestssvganimationsanimatemarkerorienttype3expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/animations/animate-marker-orienttype-3-expected.txt (0 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/animations/animate-marker-orienttype-3-expected.txt                                (rev 0)
+++ trunk/LayoutTests/svg/animations/animate-marker-orienttype-3-expected.txt        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x520
+  RenderBlock {HTML} at (0,0) size 800x520
+    RenderBody {BODY} at (8,8) size 784x504
+      RenderSVGRoot {svg} at (62,62) size 214x214
+        RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+          RenderSVGResourceMarker {marker} [id=&quot;arrow&quot;] [markerUnits=strokeWidth] [ref at (0,0)] [angle=auto]
+            RenderSVGPath {path} at (8,8) size 17x17 [opacity=0.50] [fill={[type=SOLID] [color=#008000]}] [data=&quot;M 5 0 L 0 -5 L 0 5 Z&quot;]
+        RenderSVGPath {path} at (62,62) size 214x214 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#000000]}] [start marker=arrow] [data=&quot;M 20 20 L 80 80&quot;]
+      RenderText {#text} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestssvganimationsanimatemarkerorienttype3html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/svg/animations/animate-marker-orienttype-3.html (0 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/animations/animate-marker-orienttype-3.html                                (rev 0)
+++ trunk/LayoutTests/svg/animations/animate-marker-orienttype-3.html        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;!--
+  Test that the renderer uses the animated value of orientType.
+  To test this, the final animated value must be of a different type than the initial value.
+  To verify rendering, DumpRenderTree output must be examined, not DOM values.
+ --&gt;
+&lt;script&gt;
+function doTest() {
+    if (testRunner) {
+        var svg = document.querySelector(&quot;svg&quot;);
+        svg.pauseAnimations();
+        svg.setCurrentTime(5);
+    }
+}
+&lt;/script&gt;
+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewbox=&quot;0 0 150 150&quot; width=&quot;500&quot; height=&quot;500&quot; onload=&quot;doTest()&quot;&gt;
+    &lt;defs&gt;
+        &lt;marker id=&quot;arrow&quot; orient=&quot;45&quot; markerWidth=&quot;10&quot; markerHeight=&quot;10&quot; style=&quot;overflow:visible&quot;&gt;
+            &lt;path d=&quot;M5,0 L 0,-5 L0,5 z&quot; fill=&quot;green&quot; opacity=&quot;0.5&quot; /&gt;
+            &lt;animate attributeName=&quot;orient&quot; from=&quot;135&quot; to=&quot;auto&quot; begin=&quot;0s&quot; dur=&quot;1s&quot; fill=&quot;freeze&quot;/&gt;
+        &lt;/marker&gt;
+    &lt;/defs&gt;
+    &lt;path d=&quot;M 20,20 L 80,80&quot; marker-start=&quot;url(#arrow)&quot; stroke=&quot;black&quot;/&gt;
+&lt;/svg&gt;
+
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (175524 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-11-04 08:20:46 UTC (rev 175524)
+++ trunk/Source/WebCore/ChangeLog        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2014-11-04  Nikos Andronikos  &lt;nikos.andronikos-webkit@cisra.canon.com.au&gt;
+
+        Fix animation of orient attribute on marker element
+        https://bugs.webkit.org/show_bug.cgi?id=137942
+
+        Reviewed by Dirk Schulze.
+
+        Fixed implementation of SVG animated angles and the SVG
+        marker element orient attribute.
+        SVG animated angle was missing the logic to support animation
+        from auto to a numeric angle value - this is now added.
+        The SVG marker element getter for orientType was not returning
+        the animated value for orientType so in some cases (i.e. when
+        the initial value and the animated values were of different types)
+        the animation was not being rendered - although it was running.
+
+        Tests: svg/animations/animate-marker-orienttype-1.html
+               svg/animations/animate-marker-orienttype-2.html
+               svg/animations/animate-marker-orienttype-3.html
+
+        * svg/SVGAnimatedAngle.cpp:
+        (WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue):
+        Added logic to support auto to angle animation.
+        * svg/SVGMarkerElement.cpp:
+        (WebCore::SVGMarkerElement::orientType):
+        This method now returns the animated value if an animation is
+        running.
+        * svg/SVGMarkerElement.h:
+
</ins><span class="cx"> 2014-11-03  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Allow implicit conversion from Ref&lt;T&gt; to T&amp;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedAnglecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedAngle.cpp (175524 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedAngle.cpp        2014-11-04 08:20:46 UTC (rev 175524)
+++ trunk/Source/WebCore/svg/SVGAnimatedAngle.cpp        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -96,23 +96,21 @@
</span><span class="cx">     std::pair&lt;SVGAngle, unsigned&gt;&amp; animatedAngleAndEnumeration = animated-&gt;angleAndEnumeration();
</span><span class="cx"> 
</span><span class="cx">     if (fromAngleAndEnumeration.second != toAngleAndEnumeration.second) {
</span><del>-        // Animating from eg. auto to 90deg, or auto to 90deg.
-        if (fromAngleAndEnumeration.second == SVGMarkerOrientAngle) {
-            // Animating from an angle value to eg. 'auto' - this disabled additive as 'auto' is a keyword..
-            if (toAngleAndEnumeration.second == SVGMarkerOrientAuto) {
-                if (percentage &lt; 0.5f) {
-                    animatedAngleAndEnumeration.first = fromAngleAndEnumeration.first;
-                    animatedAngleAndEnumeration.second = SVGMarkerOrientAngle;
-                    return;
-                }
</del><ins>+        // Discrete animation - no linear interpolation possible between values (e.g. auto to angle).
+        if (percentage &lt; 0.5f) {
+            animatedAngleAndEnumeration.second = fromAngleAndEnumeration.second;
+            if (fromAngleAndEnumeration.second == SVGMarkerOrientAngle)
+                animatedAngleAndEnumeration.first = fromAngleAndEnumeration.first;
+            else
</ins><span class="cx">                 animatedAngleAndEnumeration.first.setValue(0);
</span><del>-                animatedAngleAndEnumeration.second = SVGMarkerOrientAuto;
-                return;
-            }
-            animatedAngleAndEnumeration.first.setValue(0);
-            animatedAngleAndEnumeration.second = SVGMarkerOrientUnknown;
</del><span class="cx">             return;
</span><span class="cx">         }
</span><ins>+        animatedAngleAndEnumeration.second = toAngleAndEnumeration.second;
+        if (toAngleAndEnumeration.second == SVGMarkerOrientAngle)
+            animatedAngleAndEnumeration.first = toAngleAndEnumeration.first;
+        else
+            animatedAngleAndEnumeration.first.setValue(0);
+        return;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // From 'auto' to 'auto'.
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMarkerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMarkerElement.cpp (175524 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2014-11-04 08:20:46 UTC (rev 175524)
+++ trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -248,7 +248,18 @@
</span><span class="cx">     return SVGAnimatedProperty::lookupOrCreateWrapper&lt;SVGMarkerElement, SVGAnimatedEnumerationPropertyTearOff&lt;SVGMarkerOrientType&gt;, SVGMarkerOrientType&gt;
</span><span class="cx">         (&amp;ownerType, orientTypePropertyInfo(), ownerType.m_orientType.value);
</span><span class="cx"> }
</span><del>-  
</del><ins>+
+SVGMarkerOrientType&amp; SVGMarkerElement::orientType() const
+{
+    if (SVGAnimatedEnumeration* wrapper = SVGAnimatedProperty::lookupWrapper&lt;UseOwnerType, SVGAnimatedEnumeration&gt;(this, orientTypePropertyInfo())) {
+        if (wrapper-&gt;isAnimating()) {
+            ASSERT(wrapper-&gt;currentAnimatedValue() &gt;= 0 &amp;&amp; wrapper-&gt;currentAnimatedValue() &lt; SVGMarkerOrientMax);
+            return reinterpret_cast&lt;SVGMarkerOrientType&amp;&gt;(wrapper-&gt;currentAnimatedValue());
+        }
+    }
+    return m_orientType.value;
+}
+
</ins><span class="cx"> PassRefPtr&lt;SVGAnimatedEnumerationPropertyTearOff&lt;SVGMarkerOrientType&gt;&gt; SVGMarkerElement::orientTypeAnimated()
</span><span class="cx"> {
</span><span class="cx">     m_orientType.shouldSynchronize = true;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMarkerElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMarkerElement.h (175524 => 175525)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMarkerElement.h        2014-11-04 08:20:46 UTC (rev 175524)
+++ trunk/Source/WebCore/svg/SVGMarkerElement.h        2014-11-04 09:20:52 UTC (rev 175525)
</span><span class="lines">@@ -42,7 +42,10 @@
</span><span class="cx"> enum SVGMarkerOrientType {
</span><span class="cx">     SVGMarkerOrientUnknown = 0,
</span><span class="cx">     SVGMarkerOrientAuto,
</span><del>-    SVGMarkerOrientAngle
</del><ins>+    SVGMarkerOrientAngle,
+
+    // Add new elements before here.
+    SVGMarkerOrientMax
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt;
</span><span class="lines">@@ -155,7 +158,7 @@
</span><span class="cx">     // Custom 'orientType' property.
</span><span class="cx">     static void synchronizeOrientType(SVGElement* contextElement);
</span><span class="cx">     static PassRefPtr&lt;SVGAnimatedProperty&gt; lookupOrCreateOrientTypeWrapper(SVGElement* contextElement);
</span><del>-    SVGMarkerOrientType&amp; orientType() const { return m_orientType.value; }
</del><ins>+    SVGMarkerOrientType&amp; orientType() const;
</ins><span class="cx">     SVGMarkerOrientType&amp; orientTypeBaseValue() const { return m_orientType.value; }
</span><span class="cx">     void setOrientTypeBaseValue(const SVGMarkerOrientType&amp; type) { m_orientType.value = type; }
</span><span class="cx">     PassRefPtr&lt;SVGAnimatedEnumerationPropertyTearOff&lt;SVGMarkerOrientType&gt;&gt; orientTypeAnimated();
</span></span></pre>
</div>
</div>

</body>
</html>