[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:23:00 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit b463861fe18423007939aec4f9274a9cbea0f23f
Author: zherczeg at webkit.org <zherczeg at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Jul 21 09:57:19 2010 +0000
WebCore: Reviewed Nikolas Zimmermann.
SVGFilterElement & SVGFE*Element don't support dynamic invalidation, when attributes change
https://bugs.webkit.org/show_bug.cgi?id=42244
The implementation was done by Nikolas Zimmermann before, but
there was no tests for it. The patch also implements the simple
setFilterRes method.
Tests: svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html
svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html
svg/dynamic-updates/SVGFilterElement-dom-height-attr.html
svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html
svg/dynamic-updates/SVGFilterElement-dom-width-attr.html
svg/dynamic-updates/SVGFilterElement-dom-x-attr.html
svg/dynamic-updates/SVGFilterElement-dom-y-attr.html
svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html
svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html
svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html
svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html
svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html
svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html
svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html
svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html
svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::setFilterRes):
(WebCore::SVGFilterElement::svgAttributeChanged):
(WebCore::SVGFilterElement::childrenChanged):
* svg/SVGFilterElement.h:
LayoutTests: SVGFilterElement & SVGFE*Element don't support dynamic invalidation, when attributes change
https://bugs.webkit.org/show_bug.cgi?id=42244
Reviewed by Nikolas Zimmermann.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.checksum: Added.
* platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png: Added.
* svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html: Added.
* svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html: Added.
* svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-dom-height-attr.html: Added.
* svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html: Added.
* svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-dom-width-attr.html: Added.
* svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-dom-x-attr.html: Added.
* svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-dom-y-attr.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html: Added.
* svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterRes-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterUnits-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-dom-height-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-dom-primitiveUnits-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-dom-width-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-dom-x-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-dom-y-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterRes-call.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResX-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResY-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterUnits-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-height-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-primitiveUnits-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-width-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-x-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-y-prop.js: Added.
(executeTest):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63809 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 38dff7e..d3407e3 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,107 @@
+2010-07-21 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/SVGFilterElement-dom-filterRes-attr-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.checksum: Added.
+ * platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-height-attr.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-width-attr.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-x-attr.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-dom-y-attr.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.txt: Added.
+ * svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html: Added.
+ * svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterRes-attr.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterUnits-attr.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-dom-height-attr.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-dom-primitiveUnits-attr.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-dom-width-attr.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-dom-x-attr.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-dom-y-attr.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterRes-call.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResX-prop.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResY-prop.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterUnits-prop.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-height-prop.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-primitiveUnits-prop.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-width-prop.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-x-prop.js: Added.
+ (executeTest):
+ * svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-y-prop.js: Added.
+ (executeTest):
+
2010-07-20 Ben Murdoch <benm at google.com>
Reviewed by Steve Block.
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.checksum
new file mode 100644
index 0000000..7aa9962
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.checksum
@@ -0,0 +1 @@
+02819f66fcc6f05c843a950a49b98ae6
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.png
new file mode 100644
index 0000000..3a1c23f
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.checksum
new file mode 100644
index 0000000..f3c563b
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.checksum
@@ -0,0 +1 @@
+c7af222224d4565811e790e68b254c0a
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
new file mode 100644
index 0000000..527c0ae
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.checksum
new file mode 100644
index 0000000..401fe1d
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.checksum
@@ -0,0 +1 @@
+76c814b04d9275419f2c7086ede1bf10
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
new file mode 100644
index 0000000..ecfe91a
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.checksum
new file mode 100644
index 0000000..cd0c78c
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.checksum
@@ -0,0 +1 @@
+a2a3ecfc4f67409ad9d3a707d913ab35
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.png
new file mode 100644
index 0000000..1a508a1
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.checksum
new file mode 100644
index 0000000..c7efcef
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.checksum
@@ -0,0 +1 @@
+2920288f74e7d0362d15356bc31dfe76
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
new file mode 100644
index 0000000..2dcf3a1
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.checksum
new file mode 100644
index 0000000..0f9903c
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.checksum
@@ -0,0 +1 @@
+2cb06b197af4b846d65a44eba0bdcfeb
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..b12155d
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.checksum
new file mode 100644
index 0000000..bf6086f
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.checksum
@@ -0,0 +1 @@
+6da9bdfff20cb8b11ed3dd6c8c7eb5c0
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..7380a55
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.checksum
new file mode 100644
index 0000000..2cf8e64
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.checksum
@@ -0,0 +1 @@
+1228fa7cdf24a815c56e670b25024079
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.png
new file mode 100644
index 0000000..d7104af
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.checksum
new file mode 100644
index 0000000..4eff0b6
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.checksum
@@ -0,0 +1 @@
+d92771870a6152183c2936d91a5a8ab7
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.png
new file mode 100644
index 0000000..8d5ffff
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.checksum
new file mode 100644
index 0000000..b0a0717
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.checksum
@@ -0,0 +1 @@
+7b32269c06914a5c240aa4e2acc4e94c
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.png
new file mode 100644
index 0000000..e3dffef
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.checksum
new file mode 100644
index 0000000..ae25501
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.checksum
@@ -0,0 +1 @@
+faee9565cdd4b756d735642b1dc08d28
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
new file mode 100644
index 0000000..ddda4e8
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.checksum
new file mode 100644
index 0000000..23fca36
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.checksum
@@ -0,0 +1 @@
+132722eb295069909a7d553e368439a4
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
new file mode 100644
index 0000000..608f9cf
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.checksum
new file mode 100644
index 0000000..301eb32
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.checksum
@@ -0,0 +1 @@
+1707d657800804eb7df48747ee9f4b80
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.png
new file mode 100644
index 0000000..6cc0276
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.checksum
new file mode 100644
index 0000000..e7da496
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.checksum
@@ -0,0 +1 @@
+3bfc2c5eed905162e24d3bdcfe3e4ef9
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
new file mode 100644
index 0000000..0d8f65a
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.checksum
new file mode 100644
index 0000000..1de6434
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.checksum
@@ -0,0 +1 @@
+68ffa07d307d856ad3c38a44a33d97ed
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..538c60e
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.checksum
new file mode 100644
index 0000000..7259302
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.checksum
@@ -0,0 +1 @@
+361f39467de935d600a8722da6d3fea9
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..343d578
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png differ
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.txt
new file mode 100644
index 0000000..e40cd02
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'filterRes' attribute of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.getAttribute('filterRes') is "400"
+PASS filterElement.getAttribute('filterRes') is "200"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html
new file mode 100644
index 0000000..e5d1ba0
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterRes-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/SVGFilterElement-dom-filterRes-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.txt
new file mode 100644
index 0000000..189720d
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'filterUnits' attribute of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.getAttribute('filterUnits') is "userSpaceOnUse"
+PASS filterElement.getAttribute('filterUnits') is "objectBoundingBox"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html
new file mode 100644
index 0000000..7ce5a48
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-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/SVGFilterElement-dom-filterUnits-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.txt
new file mode 100644
index 0000000..330aea6
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'height' attribute of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.getAttribute('height') is "100"
+PASS filterElement.getAttribute('height') is "200"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-height-attr.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-height-attr.html
new file mode 100644
index 0000000..b049ec7
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-height-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/SVGFilterElement-dom-height-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.txt
new file mode 100644
index 0000000..e0d9a2f
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'primitiveUnits' attribute of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.getAttribute('primitiveUnits') is "userSpaceOnUse"
+PASS filterElement.getAttribute('primitiveUnits') is "objectBoundingBox"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html
new file mode 100644
index 0000000..a0dc45e
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-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/SVGFilterElement-dom-primitiveUnits-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.txt
new file mode 100644
index 0000000..e9c5888
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'width' attribute of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.getAttribute('width') is "100"
+PASS filterElement.getAttribute('width') is "200"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-width-attr.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-width-attr.html
new file mode 100644
index 0000000..d61992d
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-width-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/SVGFilterElement-dom-width-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.txt
new file mode 100644
index 0000000..a994c33
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'x' attribute of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.getAttribute('x') is "100"
+PASS filterElement.getAttribute('x') is "0"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-x-attr.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-x-attr.html
new file mode 100644
index 0000000..8d529ad
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-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/SVGFilterElement-dom-x-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.txt
new file mode 100644
index 0000000..2d47601
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'y' attribute of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.getAttribute('y') is "100"
+PASS filterElement.getAttribute('y') is "0"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-y-attr.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-dom-y-attr.html
new file mode 100644
index 0000000..3be2a95
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-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/SVGFilterElement-dom-y-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.txt
new file mode 100644
index 0000000..44e4eb5
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call-expected.txt
@@ -0,0 +1,15 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'setFilterRes' call of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.filterResX.baseVal is 400
+PASS filterElement.filterResY.baseVal is 400
+PASS filterElement.filterResX.baseVal is 200
+PASS filterElement.filterResY.baseVal is 200
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html
new file mode 100644
index 0000000..745dd2e
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.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/SVGFilterElement-svgdom-filterRes-call.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.txt
new file mode 100644
index 0000000..23ebdc6
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'filterResX' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.filterResX.baseVal is 400
+PASS filterElement.filterResX.baseVal is 200
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html
new file mode 100644
index 0000000..21fe77f
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-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/SVGFilterElement-svgdom-filterResX-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.txt
new file mode 100644
index 0000000..0b2e35e
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'filterResY' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.filterResY.baseVal is 400
+PASS filterElement.filterResY.baseVal is 200
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html
new file mode 100644
index 0000000..0b14902
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-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/SVGFilterElement-svgdom-filterResY-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.txt
new file mode 100644
index 0000000..6e30184
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'filterUnits' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.filterUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS filterElement.filterUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html
new file mode 100644
index 0000000..1fcbeb4
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-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/SVGFilterElement-svgdom-filterUnits-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.txt
new file mode 100644
index 0000000..fbbf41e
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'height' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.height.baseVal.value is 100
+PASS filterElement.height.baseVal.value is 200
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html
new file mode 100644
index 0000000..172ec89
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-height-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/SVGFilterElement-svgdom-height-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.txt
new file mode 100644
index 0000000..a1a88b4
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'primitiveUnits' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.primitiveUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS filterElement.primitiveUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html
new file mode 100644
index 0000000..32dec19
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-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/SVGFilterElement-svgdom-primitiveUnits-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.txt
new file mode 100644
index 0000000..535446e
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'width' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.width.baseVal.value is 100
+PASS filterElement.width.baseVal.value is 200
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html
new file mode 100644
index 0000000..94d1b5c
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-width-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/SVGFilterElement-svgdom-width-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.txt
new file mode 100644
index 0000000..6405e9c
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'x' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.x.baseVal.value is 100
+PASS filterElement.x.baseVal.value is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html
new file mode 100644
index 0000000..e2ba7af
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-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/SVGFilterElement-svgdom-x-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.txt
new file mode 100644
index 0000000..0a435ad
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.txt
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'y' property of the SVGFilterElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS filterElement.y.baseVal.value is 100
+PASS filterElement.y.baseVal.value is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html b/LayoutTests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html
new file mode 100644
index 0000000..845895c
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFilterElement-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/SVGFilterElement-svgdom-y-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterRes-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterRes-attr.js
new file mode 100644
index 0000000..ad15a67
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterRes-attr.js
@@ -0,0 +1,52 @@
+// [Name] SVGFilterElement-dom-filterRes-attr.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'filterRes' attribute of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.setAttribute("filterRes", "400");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("filterElement.getAttribute('filterRes')", "400");
+
+function executeTest() {
+ filterElement.setAttribute("filterRes", "200");
+ shouldBeEqualToString("filterElement.getAttribute('filterRes')", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterUnits-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterUnits-attr.js
new file mode 100644
index 0000000..d8d5baf
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-filterUnits-attr.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-dom-filterUnits-attr.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'filterUnits' attribute of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "1");
+filterElement.setAttribute("height", "1");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("filterElement.getAttribute('filterUnits')", "userSpaceOnUse");
+
+function executeTest() {
+ filterElement.setAttribute("filterUnits", "objectBoundingBox");
+ shouldBeEqualToString("filterElement.getAttribute('filterUnits')", "objectBoundingBox");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-height-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-height-attr.js
new file mode 100644
index 0000000..2261187
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-height-attr.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-dom-height-attr.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'height' attribute of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "100");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("filterElement.getAttribute('height')", "100");
+
+function executeTest() {
+ filterElement.setAttribute("height", "200");
+ shouldBeEqualToString("filterElement.getAttribute('height')", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-primitiveUnits-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-primitiveUnits-attr.js
new file mode 100644
index 0000000..5dfefe3
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-primitiveUnits-attr.js
@@ -0,0 +1,56 @@
+// [Name] SVGFilterElement-dom-primitiveUnits-attr.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'primitiveUnits' attribute of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("x", "0");
+gradientElement.setAttribute("y", "0");
+gradientElement.setAttribute("width", "1");
+gradientElement.setAttribute("height", "1");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("primitiveUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+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("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("filterElement.getAttribute('primitiveUnits')", "userSpaceOnUse");
+
+function executeTest() {
+ filterElement.setAttribute("primitiveUnits", "objectBoundingBox");
+ shouldBeEqualToString("filterElement.getAttribute('primitiveUnits')", "objectBoundingBox");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-width-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-width-attr.js
new file mode 100644
index 0000000..9bc92d5
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-width-attr.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-dom-width-attr.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'width' attribute of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "100");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("filterElement.getAttribute('width')", "100");
+
+function executeTest() {
+ filterElement.setAttribute("width", "200");
+ shouldBeEqualToString("filterElement.getAttribute('width')", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-x-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-x-attr.js
new file mode 100644
index 0000000..44ddafc
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-x-attr.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-dom-x-attr.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'x' attribute of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "100");
+filterElement.setAttribute("y", "0");
+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("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("filterElement.getAttribute('x')", "100");
+
+function executeTest() {
+ filterElement.setAttribute("x", "0");
+ shouldBeEqualToString("filterElement.getAttribute('x')", "0");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-y-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-y-attr.js
new file mode 100644
index 0000000..c71c408
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-dom-y-attr.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-dom-y-attr.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'y' attribute of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "100");
+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("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("filterElement.getAttribute('y')", "100");
+
+function executeTest() {
+ filterElement.setAttribute("y", "0");
+ shouldBeEqualToString("filterElement.getAttribute('y')", "0");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterRes-call.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterRes-call.js
new file mode 100644
index 0000000..d204418
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterRes-call.js
@@ -0,0 +1,54 @@
+// [Name] SVGFilterElement-svgdom-filterRes-call.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'setFilterRes' call of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.setAttribute("filterRes", "400");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.filterResX.baseVal", "400");
+shouldBe("filterElement.filterResY.baseVal", "400");
+
+function executeTest() {
+ filterElement.setFilterRes(200, 200);
+ shouldBe("filterElement.filterResX.baseVal", "200");
+ shouldBe("filterElement.filterResY.baseVal", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResX-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResX-prop.js
new file mode 100644
index 0000000..a58fa37
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResX-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFilterElement-svgdom-filterResX-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'filterResX' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.setAttribute("filterRes", "400 200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.filterResX.baseVal", "400");
+
+function executeTest() {
+ filterElement.filterResX.baseVal = 200;
+ shouldBe("filterElement.filterResX.baseVal", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResY-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResY-prop.js
new file mode 100644
index 0000000..75307cf
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterResY-prop.js
@@ -0,0 +1,52 @@
+// [Name] SVGFilterElement-svgdom-filterResY-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'filterResY' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.setAttribute("filterRes", "200 400");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.filterResY.baseVal", "400");
+
+function executeTest() {
+ filterElement.filterResY.baseVal = 200;
+ shouldBe("filterElement.filterResY.baseVal", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterUnits-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterUnits-prop.js
new file mode 100644
index 0000000..04ddb57
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-filterUnits-prop.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-svgdom-filterUnits-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'filterUnits' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "1");
+filterElement.setAttribute("height", "1");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.filterUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+
+function executeTest() {
+ filterElement.filterUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
+ shouldBe("filterElement.filterUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-height-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-height-prop.js
new file mode 100644
index 0000000..290d27f
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-height-prop.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-svgdom-height-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'height' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "100");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.height.baseVal.value", "100");
+
+function executeTest() {
+ filterElement.height.baseVal.value = 200;
+ shouldBe("filterElement.height.baseVal.value", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-primitiveUnits-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-primitiveUnits-prop.js
new file mode 100644
index 0000000..01d699f
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-primitiveUnits-prop.js
@@ -0,0 +1,56 @@
+// [Name] SVGFilterElement-svgdom-primitiveUnits-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'primitiveUnits' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("x", "0");
+gradientElement.setAttribute("y", "0");
+gradientElement.setAttribute("width", "1");
+gradientElement.setAttribute("height", "1");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("primitiveUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+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("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.primitiveUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+
+function executeTest() {
+ filterElement.primitiveUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
+ shouldBe("filterElement.primitiveUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-width-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-width-prop.js
new file mode 100644
index 0000000..06366de
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-width-prop.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-svgdom-width-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'width' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "100");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(gradientElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.width.baseVal.value", "100");
+
+function executeTest() {
+ filterElement.width.baseVal.value = 200;
+ shouldBe("filterElement.width.baseVal.value", "200");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-x-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-x-prop.js
new file mode 100644
index 0000000..576514c
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-x-prop.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-svgdom-x-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'x' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "100");
+filterElement.setAttribute("y", "0");
+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("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.x.baseVal.value", "100");
+
+function executeTest() {
+ filterElement.x.baseVal.value = 0;
+ shouldBe("filterElement.x.baseVal.value", "0");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-y-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-y-prop.js
new file mode 100644
index 0000000..0096127
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFilterElement-svgdom-y-prop.js
@@ -0,0 +1,51 @@
+// [Name] SVGFilterElement-svgdom-y-prop.js
+// [Expected rendering result] An offseted gradient (performed by diffuse lighting) - and a series of PASS messages
+
+description("Tests dynamic updates of the 'y' property of the SVGFilterElement object")
+createSVGTestCase();
+
+var pointLight = createSVGElement("fePointLight");
+pointLight.setAttribute("x", "100");
+pointLight.setAttribute("y", "100");
+pointLight.setAttribute("z", "30");
+
+var gradientElement = createSVGElement("feDiffuseLighting");
+gradientElement.setAttribute("in", "SourceGraphic");
+gradientElement.setAttribute("diffuseConstant", "1");
+gradientElement.setAttribute("lighting-color", "yellow");
+gradientElement.appendChild(pointLight);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "100");
+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("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "200");
+rectElement.setAttribute("height", "200");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("filterElement.y.baseVal.value", "100");
+
+function executeTest() {
+ filterElement.y.baseVal.value = 0;
+ shouldBe("filterElement.y.baseVal.value", "0");
+
+ completeTest();
+}
+
+startTest(rectElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 44285c1..e0348af 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,37 @@
+2010-07-21 Zoltan Herczeg <zherczeg at webkit.org>
+
+ Reviewed Nikolas Zimmermann.
+
+ SVGFilterElement & SVGFE*Element don't support dynamic invalidation, when attributes change
+ https://bugs.webkit.org/show_bug.cgi?id=42244
+
+ The implementation was done by Nikolas Zimmermann before, but
+ there was no tests for it. The patch also implements the simple
+ setFilterRes method.
+
+ Tests: svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr.html
+ svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html
+ svg/dynamic-updates/SVGFilterElement-dom-height-attr.html
+ svg/dynamic-updates/SVGFilterElement-dom-primitiveUnits-attr.html
+ svg/dynamic-updates/SVGFilterElement-dom-width-attr.html
+ svg/dynamic-updates/SVGFilterElement-dom-x-attr.html
+ svg/dynamic-updates/SVGFilterElement-dom-y-attr.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-filterRes-call.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-filterResX-prop.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-filterResY-prop.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-height-prop.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-primitiveUnits-prop.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-width-prop.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-x-prop.html
+ svg/dynamic-updates/SVGFilterElement-svgdom-y-prop.html
+
+ * svg/SVGFilterElement.cpp:
+ (WebCore::SVGFilterElement::setFilterRes):
+ (WebCore::SVGFilterElement::svgAttributeChanged):
+ (WebCore::SVGFilterElement::childrenChanged):
+ * svg/SVGFilterElement.h:
+
2010-07-21 Ben Murdoch <benm at google.com>
Unreviewed, build fix.
diff --git a/WebCore/svg/SVGFilterElement.cpp b/WebCore/svg/SVGFilterElement.cpp
index b86b8c4..4387e71 100644
--- a/WebCore/svg/SVGFilterElement.cpp
+++ b/WebCore/svg/SVGFilterElement.cpp
@@ -62,8 +62,11 @@ SVGFilterElement::~SVGFilterElement()
{
}
-void SVGFilterElement::setFilterRes(unsigned long, unsigned long) const
+void SVGFilterElement::setFilterRes(unsigned long filterResX, unsigned long filterResY)
{
+ setFilterResXBaseValue(filterResX);
+ setFilterResYBaseValue(filterResY);
+ invalidateResourceClients();
}
void SVGFilterElement::parseMappedAttribute(Attribute* attr)
@@ -122,10 +125,10 @@ void SVGFilterElement::svgAttributeChanged(const QualifiedName& attrName)
|| attrName == SVGNames::filterUnitsAttr
|| attrName == SVGNames::primitiveUnitsAttr
|| attrName == SVGNames::filterResAttr
+ || SVGStyledElement::isKnownAttribute(attrName)
|| SVGURIReference::isKnownAttribute(attrName)
|| SVGLangSpace::isKnownAttribute(attrName)
- || SVGExternalResourcesRequired::isKnownAttribute(attrName)
- || SVGStyledElement::isKnownAttribute(attrName))
+ || SVGExternalResourcesRequired::isKnownAttribute(attrName))
invalidateResourceClients();
}
@@ -168,6 +171,14 @@ void SVGFilterElement::synchronizeProperty(const QualifiedName& attrName)
synchronizeHref();
}
+void SVGFilterElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
+{
+ SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
+
+ if (!changedByParser)
+ invalidateResourceClients();
+}
+
FloatRect SVGFilterElement::filterBoundingBox(const FloatRect& objectBoundingBox) const
{
FloatRect filterBBox;
diff --git a/WebCore/svg/SVGFilterElement.h b/WebCore/svg/SVGFilterElement.h
index 85679c7..7b0192c 100644
--- a/WebCore/svg/SVGFilterElement.h
+++ b/WebCore/svg/SVGFilterElement.h
@@ -43,12 +43,13 @@ public:
SVGFilterElement(const QualifiedName&, Document*);
virtual ~SVGFilterElement();
- void setFilterRes(unsigned long filterResX, unsigned long filterResY) const;
+ void setFilterRes(unsigned long filterResX, unsigned long filterResY);
FloatRect filterBoundingBox(const FloatRect&) const;
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);
virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list