[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

zherczeg at webkit.org zherczeg at webkit.org
Wed Dec 22 11:43:46 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 7fd14c8bdc9debd761b269142d1e9670d761356b
Author: zherczeg at webkit.org <zherczeg at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Aug 5 06:44:42 2010 +0000

    SVGFilterElement & SVGFE*Element don't support dynamic invalidation, when attributes change
    https://bugs.webkit.org/show_bug.cgi?id=42244
    
    Reviewed by Nikolas Zimmermann.
    
    WebCore:
    
    Implementing svgAttributeChanged for SVGFESpotLightElement object.
    Furthermore, invalidateFilter has been moved to SVGFilterElement, and
    it is a static function now.
    
    Tests: svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html
           svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html
    
    * svg/SVGFEDiffuseLightingElement.cpp:
    (WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged):
    * svg/SVGFELightElement.cpp:
    (WebCore::SVGFELightElement::svgAttributeChanged):
    (WebCore::SVGFELightElement::childrenChanged):
    * svg/SVGFELightElement.h:
    * svg/SVGFEOffsetElement.cpp:
    (WebCore::SVGFEOffsetElement::svgAttributeChanged):
    * svg/SVGFESpecularLightingElement.cpp:
    * svg/SVGFilterElement.h:
    (WebCore::SVGFilterElement::invalidateFilter):
    * svg/SVGFilterPrimitiveStandardAttributes.cpp:
    (WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged):
    (WebCore::SVGFilterPrimitiveStandardAttributes::childrenChanged):
    * svg/SVGFilterPrimitiveStandardAttributes.h:
    
    LayoutTests:
    
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.checksum: Added.
    * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.txt: Added.
    * svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html: Added.
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-limitingConeAngle-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtX-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtY-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtZ-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-specularExponent-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-x-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-y-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-z-attr.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtX-prop.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtY-prop.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtZ-prop.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-specularExponent-prop.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-x-prop.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-y-prop.js: Added.
    (executeTest):
    * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-z-prop.js: Added.
    (executeTest):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64716 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 60b8805..bf5abce 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,107 @@
+2010-08-04  Zoltan Herczeg  <zherczeg at webkit.org>
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVGFilterElement & SVGFE*Element don't support dynamic invalidation, when attributes change
+        https://bugs.webkit.org/show_bug.cgi?id=42244
+
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html: Added.
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-limitingConeAngle-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtX-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtY-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtZ-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-specularExponent-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-x-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-y-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-z-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtX-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtY-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtZ-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-specularExponent-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-x-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-y-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-z-prop.js: Added.
+        (executeTest):
+
 2010-08-04  Adam Barth  <abarth at webkit.org>
 
         Enable HTML5 tree builder
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.checksum
new file mode 100644
index 0000000..24b321c
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.checksum
@@ -0,0 +1 @@
+4984227c26da9025a88294ca0527e774
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
new file mode 100644
index 0000000..1eb512c
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.checksum
new file mode 100644
index 0000000..7a40170
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.checksum
@@ -0,0 +1 @@
+14de67809c44b02114c007f6c22281c5
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
new file mode 100644
index 0000000..596b9ce
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.checksum
new file mode 100644
index 0000000..c1d773e
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.checksum
@@ -0,0 +1 @@
+4207ef8631b2a0cb9f9db6bb94f29bf6
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
new file mode 100644
index 0000000..b8d86ed
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.checksum
new file mode 100644
index 0000000..da08b5e
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.checksum
@@ -0,0 +1 @@
+363cff2b12fa0e0f24d3dfa5b9d163c4
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
new file mode 100644
index 0000000..32d7655
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.checksum
new file mode 100644
index 0000000..475138e
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.checksum
@@ -0,0 +1 @@
+e729d017577d3c882cde54e95ad858ae
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
new file mode 100644
index 0000000..3bd639f
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.checksum
new file mode 100644
index 0000000..a99ae10
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.checksum
@@ -0,0 +1 @@
+4befc807b441011afa97b87644e2c5d1
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..247852f
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.checksum
new file mode 100644
index 0000000..f018fa5
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.checksum
@@ -0,0 +1 @@
+7b524cf2773d9eae2750c8dbed205049
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..53bd15c
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.checksum
new file mode 100644
index 0000000..c712d45
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.checksum
@@ -0,0 +1 @@
+2864024d8097e3141bb8dab53ea1a65f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
new file mode 100644
index 0000000..fdcaef5
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.checksum
new file mode 100644
index 0000000..21e5515
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.checksum
@@ -0,0 +1 @@
+39fdca3937a5e85765df7525f763e2e4
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
new file mode 100644
index 0000000..4b733c4
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.checksum
new file mode 100644
index 0000000..c9f3ad2
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.checksum
@@ -0,0 +1 @@
+7ee6157edd5d15162c61741e7c7c2136
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
new file mode 100644
index 0000000..5c7e971
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.checksum
new file mode 100644
index 0000000..66551d4
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.checksum
@@ -0,0 +1 @@
+b9a9a4bb118115d7571abf41c4f6191f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
new file mode 100644
index 0000000..c3a50c2
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.checksum
new file mode 100644
index 0000000..98431ba
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.checksum
@@ -0,0 +1 @@
+7ced8c063c08b00cfe366c902eec7bda
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
new file mode 100644
index 0000000..1d22b51
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.checksum
new file mode 100644
index 0000000..54371e5
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.checksum
@@ -0,0 +1 @@
+d7ef9e284c5799c58e3e0138c6aada9b
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
new file mode 100644
index 0000000..ceb329b
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.checksum
new file mode 100644
index 0000000..e38138e
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.checksum
@@ -0,0 +1 @@
+1fe0d99da6bc5638e93a25702bbdee8b
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..6339401
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.checksum
new file mode 100644
index 0000000..04aedfa
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.checksum
@@ -0,0 +1 @@
+7340b740cce9cec956b843bc1399ad8a
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..046b542
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.checksum
new file mode 100644
index 0000000..132a838
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.checksum
@@ -0,0 +1 @@
+85f22a06d94c696b35790ee6993c2206
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
new file mode 100644
index 0000000..8f6f5e5
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png differ
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.txt
new file mode 100644
index 0000000..af507a0
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'limitingConeAngle' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('limitingConeAngle') is "45"
+PASS spotLightElement.getAttribute('limitingConeAngle') is "15"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html
new file mode 100644
index 0000000..dbafe15
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-limitingConeAngle-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.txt
new file mode 100644
index 0000000..11cdf90
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'pointsAtX' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('pointsAtX') is "0"
+PASS spotLightElement.getAttribute('pointsAtX') is "113"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html
new file mode 100644
index 0000000..43887b9
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-pointsAtX-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.txt
new file mode 100644
index 0000000..2498aa3
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'pointsAtY' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('pointsAtY') is "0"
+PASS spotLightElement.getAttribute('pointsAtY') is "100"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html
new file mode 100644
index 0000000..ba606c5
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-pointsAtY-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.txt
new file mode 100644
index 0000000..e13ec21
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'pointsAtZ' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('pointsAtZ') is "100"
+PASS spotLightElement.getAttribute('pointsAtZ') is "0"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html
new file mode 100644
index 0000000..fcf8af8
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-pointsAtZ-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.txt
new file mode 100644
index 0000000..2ed385a
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'specularExponent' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('specularExponent') is "20"
+PASS spotLightElement.getAttribute('specularExponent') is "1"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html
new file mode 100644
index 0000000..8095af8
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-specularExponent-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.txt
new file mode 100644
index 0000000..4970046
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'x' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('x') is "0"
+PASS spotLightElement.getAttribute('x') is "113"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html
new file mode 100644
index 0000000..67a19ee
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-x-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.txt
new file mode 100644
index 0000000..4139ac4
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'y' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('y') is "100"
+PASS spotLightElement.getAttribute('y') is "0"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html
new file mode 100644
index 0000000..2b768f4
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-y-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.txt
new file mode 100644
index 0000000..b228795
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'z' attribute of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.getAttribute('z') is "0"
+PASS spotLightElement.getAttribute('z') is "100"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html
new file mode 100644
index 0000000..067daa7
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-dom-z-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.txt
new file mode 100644
index 0000000..1e61b76
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'limitingConeAngle' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.limitingConeAngle.baseVal is 45
+PASS spotLightElement.limitingConeAngle.baseVal is 15
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html
new file mode 100644
index 0000000..f521a86
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.txt
new file mode 100644
index 0000000..ebf1421
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'pointsAtX' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.pointsAtX.baseVal is 0
+PASS spotLightElement.pointsAtX.baseVal is 113
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html
new file mode 100644
index 0000000..6c09f4a
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-pointsAtX-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.txt
new file mode 100644
index 0000000..23c4690
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'pointsAtY' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.pointsAtY.baseVal is 0
+PASS spotLightElement.pointsAtY.baseVal is 100
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html
new file mode 100644
index 0000000..52f1818
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-pointsAtY-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.txt
new file mode 100644
index 0000000..07cd174
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'pointsAtZ' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.pointsAtZ.baseVal is 100
+PASS spotLightElement.pointsAtZ.baseVal is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html
new file mode 100644
index 0000000..45edb1a
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-pointsAtZ-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.txt
new file mode 100644
index 0000000..5f266f9
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'specularExponent' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.specularExponent.baseVal is 20
+PASS spotLightElement.specularExponent.baseVal is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html
new file mode 100644
index 0000000..e7e5102
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-specularExponent-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.txt
new file mode 100644
index 0000000..9594bae
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'x' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.x.baseVal is 0
+PASS spotLightElement.x.baseVal is 113
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html
new file mode 100644
index 0000000..9dc414d
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-x-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.txt
new file mode 100644
index 0000000..60c3b3f
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'y' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.y.baseVal is 100
+PASS spotLightElement.y.baseVal is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html
new file mode 100644
index 0000000..7fabd3d
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-y-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.txt
new file mode 100644
index 0000000..4081165
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'z' property of the SVGFESpotLightElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS spotLightElement.z.baseVal is 0
+PASS spotLightElement.z.baseVal is 100
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html
new file mode 100644
index 0000000..04bc6c1
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFESpotLightElement-svgdom-z-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-limitingConeAngle-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-limitingConeAngle-attr.js
new file mode 100644
index 0000000..f7eaffd
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-limitingConeAngle-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-limitingConeAngle-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'limitingConeAngle' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "45");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('limitingConeAngle')", "45");
+
+function executeTest() {
+    spotLightElement.setAttribute("limitingConeAngle", "15");
+    shouldBeEqualToString("spotLightElement.getAttribute('limitingConeAngle')", "15");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtX-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtX-attr.js
new file mode 100644
index 0000000..6ed8588
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtX-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-pointsAtX-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'pointsAtX' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "0");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('pointsAtX')", "0");
+
+function executeTest() {
+    spotLightElement.setAttribute("pointsAtX", "113");
+    shouldBeEqualToString("spotLightElement.getAttribute('pointsAtX')", "113");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtY-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtY-attr.js
new file mode 100644
index 0000000..95ced76
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtY-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-pointsAtY-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'pointsAtY' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "0");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('pointsAtY')", "0");
+
+function executeTest() {
+    spotLightElement.setAttribute("pointsAtY", "100");
+    shouldBeEqualToString("spotLightElement.getAttribute('pointsAtY')", "100");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtZ-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtZ-attr.js
new file mode 100644
index 0000000..89b90bb
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-pointsAtZ-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-pointsAtZ-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'pointsAtZ' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "100");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('pointsAtZ')", "100");
+
+function executeTest() {
+    spotLightElement.setAttribute("pointsAtZ", "0");
+    shouldBeEqualToString("spotLightElement.getAttribute('pointsAtZ')", "0");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-specularExponent-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-specularExponent-attr.js
new file mode 100644
index 0000000..b907cf0
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-specularExponent-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-specularExponent-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'specularExponent' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "20");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('specularExponent')", "20");
+
+function executeTest() {
+    spotLightElement.setAttribute("specularExponent", "1");
+    shouldBeEqualToString("spotLightElement.getAttribute('specularExponent')", "1");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-x-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-x-attr.js
new file mode 100644
index 0000000..ced4812
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-x-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-x-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'x' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "0");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('x')", "0");
+
+function executeTest() {
+    spotLightElement.setAttribute("x", "113");
+    shouldBeEqualToString("spotLightElement.getAttribute('x')", "113");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-y-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-y-attr.js
new file mode 100644
index 0000000..1aa65f9
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-y-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-y-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'y' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "100");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('y')", "100");
+
+function executeTest() {
+    spotLightElement.setAttribute("y", "0");
+    shouldBeEqualToString("spotLightElement.getAttribute('y')", "0");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-z-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-z-attr.js
new file mode 100644
index 0000000..7d9becb
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-dom-z-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-dom-z-attr.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'z' attribute of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "0");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("spotLightElement.getAttribute('z')", "0");
+
+function executeTest() {
+    spotLightElement.setAttribute("z", "100");
+    shouldBeEqualToString("spotLightElement.getAttribute('z')", "100");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.js
new file mode 100644
index 0000000..9c641bd
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-limitingConeAngle-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'limitingConeAngle' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "45");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.limitingConeAngle.baseVal", "45");
+
+function executeTest() {
+    spotLightElement.limitingConeAngle.baseVal = 15;
+    shouldBe("spotLightElement.limitingConeAngle.baseVal", "15");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtX-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtX-prop.js
new file mode 100644
index 0000000..0236883
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtX-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-pointsAtX-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'pointsAtX' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "0");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.pointsAtX.baseVal", "0");
+
+function executeTest() {
+    spotLightElement.pointsAtX.baseVal = 113;
+    shouldBe("spotLightElement.pointsAtX.baseVal", "113");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtY-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtY-prop.js
new file mode 100644
index 0000000..92ed2e9
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtY-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-pointsAtY-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'pointsAtY' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "0");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.pointsAtY.baseVal", "0");
+
+function executeTest() {
+    spotLightElement.pointsAtY.baseVal = 100;
+    shouldBe("spotLightElement.pointsAtY.baseVal", "100");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtZ-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtZ-prop.js
new file mode 100644
index 0000000..08a7129
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-pointsAtZ-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-pointsAtZ-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'pointsAtZ' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "100");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.pointsAtZ.baseVal", "100");
+
+function executeTest() {
+    spotLightElement.pointsAtZ.baseVal = 0;
+    shouldBe("spotLightElement.pointsAtZ.baseVal", "0");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-specularExponent-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-specularExponent-prop.js
new file mode 100644
index 0000000..15b3538
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-specularExponent-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-specularExponent-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'specularExponent' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "20");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.specularExponent.baseVal", "20");
+
+function executeTest() {
+    spotLightElement.specularExponent.baseVal = 1;
+    shouldBe("spotLightElement.specularExponent.baseVal", "1");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-x-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-x-prop.js
new file mode 100644
index 0000000..a27faa2
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-x-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-x-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'x' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "0");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.x.baseVal", "0");
+
+function executeTest() {
+    spotLightElement.x.baseVal = 113;
+    shouldBe("spotLightElement.x.baseVal", "113");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-y-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-y-prop.js
new file mode 100644
index 0000000..8f96c60
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-y-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-y-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'y' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "100");
+spotLightElement.setAttribute("z", "100");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.y.baseVal", "100");
+
+function executeTest() {
+    spotLightElement.y.baseVal = 0;
+    shouldBe("spotLightElement.y.baseVal", "0");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-z-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-z-prop.js
new file mode 100644
index 0000000..bf9baff
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpotLightElement-svgdom-z-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFESpotLightElement-svgdom-z-prop.js
+// [Expected rendering result] A shining cone (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'z' property of the SVGFESpotLightElement object")
+createSVGTestCase();
+
+var spotLightElement = createSVGElement("feSpotLight");
+spotLightElement.setAttribute("x", "113");
+spotLightElement.setAttribute("y", "0");
+spotLightElement.setAttribute("z", "0");
+spotLightElement.setAttribute("pointsAtX", "113");
+spotLightElement.setAttribute("pointsAtY", "100");
+spotLightElement.setAttribute("pointsAtZ", "0");
+spotLightElement.setAttribute("specularExponent", "1");
+spotLightElement.setAttribute("limitingConeAngle", "15");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("surfaceScale", "1");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "aqua");
+gradientElement.appendChild(spotLightElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("spotLightElement.z.baseVal", "0");
+
+function executeTest() {
+    spotLightElement.z.baseVal = 100;
+    shouldBe("spotLightElement.z.baseVal", "100");
+
+    completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 85c7f4b..9824048 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,47 @@
+2010-08-04  Zoltan Herczeg  <zherczeg at webkit.org>
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVGFilterElement & SVGFE*Element don't support dynamic invalidation, when attributes change
+        https://bugs.webkit.org/show_bug.cgi?id=42244
+
+        Implementing svgAttributeChanged for SVGFESpotLightElement object.
+        Furthermore, invalidateFilter has been moved to SVGFilterElement, and
+        it is a static function now.
+
+        Tests: svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop.html
+               svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop.html
+
+        * svg/SVGFEDiffuseLightingElement.cpp:
+        (WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged):
+        * svg/SVGFELightElement.cpp:
+        (WebCore::SVGFELightElement::svgAttributeChanged):
+        (WebCore::SVGFELightElement::childrenChanged):
+        * svg/SVGFELightElement.h:
+        * svg/SVGFEOffsetElement.cpp:
+        (WebCore::SVGFEOffsetElement::svgAttributeChanged):
+        * svg/SVGFESpecularLightingElement.cpp:
+        * svg/SVGFilterElement.h:
+        (WebCore::SVGFilterElement::invalidateFilter):
+        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+        (WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged):
+        (WebCore::SVGFilterPrimitiveStandardAttributes::childrenChanged):
+        * svg/SVGFilterPrimitiveStandardAttributes.h:
+
 2010-08-05  Yury Semikhatsky  <yurys at chromium.org>
 
         Reviewed by Pavel Feldman.
diff --git a/WebCore/svg/SVGFEDiffuseLightingElement.cpp b/WebCore/svg/SVGFEDiffuseLightingElement.cpp
index 96648e0..81144c6 100644
--- a/WebCore/svg/SVGFEDiffuseLightingElement.cpp
+++ b/WebCore/svg/SVGFEDiffuseLightingElement.cpp
@@ -23,7 +23,6 @@
 #include "SVGFEDiffuseLightingElement.h"
 
 #include "Attr.h"
-#include "RenderObject.h"
 #include "SVGColor.h"
 #include "SVGFEDiffuseLighting.h"
 #include "SVGFELightElement.h"
@@ -75,7 +74,7 @@ void SVGFEDiffuseLightingElement::svgAttributeChanged(const QualifiedName& attrN
         || attrName == SVGNames::diffuseConstantAttr
         || attrName == SVGNames::kernelUnitLengthAttr
         || attrName == SVGNames::lighting_colorAttr)
-        invalidateFilter();
+        SVGFilterElement::invalidateFilter(this);
 }
 
 void SVGFEDiffuseLightingElement::synchronizeProperty(const QualifiedName& attrName)
diff --git a/WebCore/svg/SVGFELightElement.cpp b/WebCore/svg/SVGFELightElement.cpp
index 7bbceeb..5975033 100644
--- a/WebCore/svg/SVGFELightElement.cpp
+++ b/WebCore/svg/SVGFELightElement.cpp
@@ -25,6 +25,7 @@
 #include "SVGFELightElement.h"
 
 #include "Attribute.h"
+#include "SVGFilterElement.h"
 #include "SVGNames.h"
 
 namespace WebCore {
@@ -66,6 +67,23 @@ void SVGFELightElement::parseMappedAttribute(Attribute* attr)
         SVGElement::parseMappedAttribute(attr);
 }
 
+void SVGFELightElement::svgAttributeChanged(const QualifiedName& attrName)
+{
+    SVGElement::svgAttributeChanged(attrName);
+
+    if (attrName == SVGNames::azimuthAttr
+        || attrName == SVGNames::elevationAttr
+        || attrName == SVGNames::xAttr
+        || attrName == SVGNames::yAttr
+        || attrName == SVGNames::zAttr
+        || attrName == SVGNames::pointsAtXAttr
+        || attrName == SVGNames::pointsAtYAttr
+        || attrName == SVGNames::pointsAtZAttr
+        || attrName == SVGNames::specularExponentAttr
+        || attrName == SVGNames::limitingConeAngleAttr)
+        SVGFilterElement::invalidateFilter(this);
+}
+
 void SVGFELightElement::synchronizeProperty(const QualifiedName& attrName)
 {
     SVGElement::synchronizeProperty(attrName);
@@ -106,6 +124,14 @@ void SVGFELightElement::synchronizeProperty(const QualifiedName& attrName)
         synchronizeLimitingConeAngle();
 }
 
+void SVGFELightElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
+{
+    SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
+
+    if (!changedByParser)
+        SVGFilterElement::invalidateFilter(this);
+}
+
 }
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGFELightElement.h b/WebCore/svg/SVGFELightElement.h
index 067e216..d0874cb 100644
--- a/WebCore/svg/SVGFELightElement.h
+++ b/WebCore/svg/SVGFELightElement.h
@@ -29,27 +29,29 @@
 
 namespace WebCore {
 
-    class SVGFELightElement : public SVGElement {
-    public:
-        SVGFELightElement(const QualifiedName&, Document*);
-        virtual ~SVGFELightElement();
+class SVGFELightElement : public SVGElement {
+public:
+    SVGFELightElement(const QualifiedName&, Document*);
+    virtual ~SVGFELightElement();
         
-        virtual PassRefPtr<LightSource> lightSource() const = 0;
-        virtual void parseMappedAttribute(Attribute*);
-        virtual void synchronizeProperty(const QualifiedName&);
+    virtual PassRefPtr<LightSource> lightSource() const = 0;
+    virtual void parseMappedAttribute(Attribute*);
+    virtual void svgAttributeChanged(const QualifiedName&);
+    virtual void synchronizeProperty(const QualifiedName&);
+    virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
 
-    private:
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::azimuthAttr, float, Azimuth, azimuth)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::elevationAttr, float, Elevation, elevation)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::xAttr, float, X, x)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::yAttr, float, Y, y)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::zAttr, float, Z, z)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::pointsAtXAttr, float, PointsAtX, pointsAtX)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::pointsAtYAttr, float, PointsAtY, pointsAtY)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::pointsAtZAttr, float, PointsAtZ, pointsAtZ)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::specularExponentAttr, float, SpecularExponent, specularExponent)
-        DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::limitingConeAngleAttr, float, LimitingConeAngle, limitingConeAngle)
-    };
+private:
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::azimuthAttr, float, Azimuth, azimuth)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::elevationAttr, float, Elevation, elevation)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::xAttr, float, X, x)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::yAttr, float, Y, y)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::zAttr, float, Z, z)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::pointsAtXAttr, float, PointsAtX, pointsAtX)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::pointsAtYAttr, float, PointsAtY, pointsAtY)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::pointsAtZAttr, float, PointsAtZ, pointsAtZ)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::specularExponentAttr, float, SpecularExponent, specularExponent)
+    DECLARE_ANIMATED_PROPERTY(SVGFELightElement, SVGNames::limitingConeAngleAttr, float, LimitingConeAngle, limitingConeAngle)
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGFEOffsetElement.cpp b/WebCore/svg/SVGFEOffsetElement.cpp
index b4fcad9..006bb3b 100644
--- a/WebCore/svg/SVGFEOffsetElement.cpp
+++ b/WebCore/svg/SVGFEOffsetElement.cpp
@@ -56,7 +56,7 @@ void SVGFEOffsetElement::svgAttributeChanged(const QualifiedName& attrName)
     if (attrName == SVGNames::inAttr
         || attrName == SVGNames::dxAttr
         || attrName == SVGNames::dyAttr)
-        invalidateFilter();
+        SVGFilterElement::invalidateFilter(this);
 }
 
 void SVGFEOffsetElement::synchronizeProperty(const QualifiedName& attrName)
diff --git a/WebCore/svg/SVGFESpecularLightingElement.cpp b/WebCore/svg/SVGFESpecularLightingElement.cpp
index c142443..afbdefe 100644
--- a/WebCore/svg/SVGFESpecularLightingElement.cpp
+++ b/WebCore/svg/SVGFESpecularLightingElement.cpp
@@ -25,7 +25,6 @@
 #include "SVGFESpecularLightingElement.h"
 
 #include "Attribute.h"
-#include "RenderObject.h"
 #include "SVGColor.h"
 #include "SVGFELightElement.h"
 #include "SVGNames.h"
diff --git a/WebCore/svg/SVGFilterElement.h b/WebCore/svg/SVGFilterElement.h
index 62876ec..ddcd953 100644
--- a/WebCore/svg/SVGFilterElement.h
+++ b/WebCore/svg/SVGFilterElement.h
@@ -55,6 +55,22 @@ public:
 
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 
+    static void invalidateFilter(SVGElement* element)
+    {
+        ASSERT(element);
+        if (!element->inDocument())
+            return;
+        Node* parent = element->parentNode();
+        while (parent && !parent->hasTagName(SVGNames::filterTag))
+            parent = parent->parentNode();
+
+        if (!parent)
+            return;
+
+        if (RenderObject* object = parent->renderer())
+            object->setNeedsLayout(true);
+    }
+
 private:
     virtual bool selfHasRelativeLengths() const;
 
diff --git a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
index cc35138..e91c0a1 100644
--- a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
+++ b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
@@ -74,7 +74,7 @@ void SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(const QualifiedNa
         || attrName == SVGNames::widthAttr
         || attrName == SVGNames::heightAttr
         || attrName == SVGNames::resultAttr)
-        invalidateFilter();
+        SVGFilterElement::invalidateFilter(this);
 }
 
 void SVGFilterPrimitiveStandardAttributes::synchronizeProperty(const QualifiedName& attrName)
@@ -107,7 +107,7 @@ void SVGFilterPrimitiveStandardAttributes::childrenChanged(bool changedByParser,
     SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
 
     if (!changedByParser)
-        invalidateFilter();
+        SVGFilterElement::invalidateFilter(this);
 }
 
 void SVGFilterPrimitiveStandardAttributes::setStandardAttributes(bool primitiveBoundingBoxMode, FilterEffect* filterEffect) const
diff --git a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
index 6f9e030..8754c6a 100644
--- a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
+++ b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
@@ -50,15 +50,6 @@ public:
 
     void setStandardAttributes(bool, FilterEffect*) const;
 
-protected:
-    void invalidateFilter()
-    {
-        if (!inDocument() || !parentNode()->hasTagName(SVGNames::filterTag))
-            return;
-        if (RenderObject* object = parentNode()->renderer())
-            object->setNeedsLayout(true);
-    }
-
 private:
     DECLARE_ANIMATED_PROPERTY(SVGFilterPrimitiveStandardAttributes, SVGNames::xAttr, SVGLength, X, x)
     DECLARE_ANIMATED_PROPERTY(SVGFilterPrimitiveStandardAttributes, SVGNames::yAttr, SVGLength, Y, y)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list