Title: [100502] trunk
Revision
100502
Author
jsc...@chromium.org
Date
2011-11-16 14:07:23 -0800 (Wed, 16 Nov 2011)

Log Message

Clear SVG filter client when its node is detached
https://bugs.webkit.org/show_bug.cgi?id=71741

Reviewed by Eric Seidel.

Source/WebCore:

Test: svg/filters/reparent-animated-filter-target.html

* rendering/svg/SVGResourcesCache.cpp:
(WebCore::SVGResourcesCache::clientDestroyed):

LayoutTests:

* svg/filters/reparent-animated-filter-target-expected.txt: Added.
* svg/filters/reparent-animated-filter-target.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (100501 => 100502)


--- trunk/LayoutTests/ChangeLog	2011-11-16 22:02:37 UTC (rev 100501)
+++ trunk/LayoutTests/ChangeLog	2011-11-16 22:07:23 UTC (rev 100502)
@@ -1,3 +1,13 @@
+2011-11-16  Justin Schuh  <jsc...@chromium.org>
+
+        Clear SVG filter client when its node is detached
+        https://bugs.webkit.org/show_bug.cgi?id=71741
+
+        Reviewed by Eric Seidel.
+
+        * svg/filters/reparent-animated-filter-target-expected.txt: Added.
+        * svg/filters/reparent-animated-filter-target.html: Added.
+
 2011-11-16  Peter Kasting  <pkast...@google.com>
 
         [chromium] Mark some CoreAnimation plugin model tests as WONTFIX on Win/

Added: trunk/LayoutTests/svg/filters/reparent-animated-filter-target-expected.txt (0 => 100502)


--- trunk/LayoutTests/svg/filters/reparent-animated-filter-target-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/filters/reparent-animated-filter-target-expected.txt	2011-11-16 22:07:23 UTC (rev 100502)
@@ -0,0 +1,3 @@
+This test moves an animated filter target. The test will display a message below if successful.
+
+PASS - Test succeeded.

Added: trunk/LayoutTests/svg/filters/reparent-animated-filter-target.html (0 => 100502)


--- trunk/LayoutTests/svg/filters/reparent-animated-filter-target.html	                        (rev 0)
+++ trunk/LayoutTests/svg/filters/reparent-animated-filter-target.html	2011-11-16 22:07:23 UTC (rev 100502)
@@ -0,0 +1,42 @@
+<svg>
+<filter id="filter">
+  <feDiffuseLighting>
+    <feSpotLight>
+      <animate id="animate" attributeName="limitingConeAngle" from="0" to="1" dur="1s" repeatCount="indefinite">
+    </feSpotLight>
+  </feDiffuseLighting>
+</filter>
+<rect id="rect" width="1" height="1" filter="url(#filter)">
+</svg>
+<script>
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText()
+    layoutTestController.waitUntilDone()
+}
+
+window._onload_ = function() {
+    animate = document.getElementById('animate')
+    retry = true
+
+    function runTest() {
+        if (retry) {  // Wait for at least one animation frame before reparenting.
+            lastAnimVal = animate.parentElement.limitingConeAngle.animVal
+            if (lastAnimVal > 0) {
+                animate.appendChild(document.getElementById('rect'))
+                retry = false
+            }
+        // Wait for at least one more animation frame so we know it succeeded.
+        } else if (lastAnimVal != animate.parentElement.limitingConeAngle.animVal) {
+            document.body.appendChild(document.createTextNode('PASS - Test succeeded.'))
+            if (window.layoutTestController)
+                layoutTestController.notifyDone()
+            return
+        }
+
+        setTimeout(runTest, 0)
+    }
+
+    runTest()
+}
+</script>
+<p>This test moves an animated filter target. The test will display a message below if successful.</p>

Modified: trunk/Source/WebCore/ChangeLog (100501 => 100502)


--- trunk/Source/WebCore/ChangeLog	2011-11-16 22:02:37 UTC (rev 100501)
+++ trunk/Source/WebCore/ChangeLog	2011-11-16 22:07:23 UTC (rev 100502)
@@ -1,3 +1,15 @@
+2011-11-16  Justin Schuh  <jsc...@chromium.org>
+
+        Clear SVG filter client when its node is detached
+        https://bugs.webkit.org/show_bug.cgi?id=71741
+
+        Reviewed by Eric Seidel.
+
+        Test: svg/filters/reparent-animated-filter-target.html
+
+        * rendering/svg/SVGResourcesCache.cpp:
+        (WebCore::SVGResourcesCache::clientDestroyed):
+
 2011-11-16  John Bates  <jba...@google.com>
 
         Page/layer flashes after GPU-accelerated CSS transition

Modified: trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp (100501 => 100502)


--- trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp	2011-11-16 22:02:37 UTC (rev 100501)
+++ trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp	2011-11-16 22:07:23 UTC (rev 100502)
@@ -158,6 +158,11 @@
 void SVGResourcesCache::clientDestroyed(RenderObject* renderer)
 {
     ASSERT(renderer);
+
+    SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(renderer);
+    if (resources)
+        resources->removeClientFromCache(renderer);
+
     SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer);
     cache->removeResourcesFromRenderObject(renderer);
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to