diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 5930c26..f5be57d 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,10 @@
+2008-04-03  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by NOBODY (Rollout).
+
+        Rollout layout test changes for r31566
+
+
 2008-04-03  Brady Eidson  <beidson@apple.com>
 
         Fix a tab into 4-spaces instead
diff --git a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.checksum b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.checksum
index c17300e..469d982 100644
--- a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.checksum
@@ -1 +1 @@
-b4183e31dcf131ee4ade7f14d58f420a
\ No newline at end of file
+e5bd08b6261d0aafb4c682fbebc1e10b
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.png b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.png
index 218c069..2069f27 100644
--- a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum
index 12a506e..d878ce7 100644
--- a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum
@@ -1 +1 @@
-b000de55597cde3e3284c2a1c4d12619
\ No newline at end of file
+f30a937adf48816c5814b5f2169ec0f2
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.png b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.png
index 2790114..c6d067f 100644
--- a/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/W3C-SVG-1.1/text-text-06-t-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/custom/marker-getPropertyValue-expected.checksum b/LayoutTests/platform/mac-leopard/svg/custom/marker-getPropertyValue-expected.checksum
deleted file mode 100644
index 02fb24c..0000000
--- a/LayoutTests/platform/mac-leopard/svg/custom/marker-getPropertyValue-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-5f6832d43af886a4980fcad57bb1fb59
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/custom/marker-getPropertyValue-expected.png b/LayoutTests/platform/mac-leopard/svg/custom/marker-getPropertyValue-expected.png
deleted file mode 100644
index 5930238..0000000
--- a/LayoutTests/platform/mac-leopard/svg/custom/marker-getPropertyValue-expected.png
+++ /dev/null
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/custom/svg-xml-dom-sync-expected.checksum b/LayoutTests/platform/mac-leopard/svg/custom/svg-xml-dom-sync-expected.checksum
deleted file mode 100644
index 073b5b2..0000000
--- a/LayoutTests/platform/mac-leopard/svg/custom/svg-xml-dom-sync-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-2618d16bf325ac468218c8ffec1fbdc2
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/custom/svg-xml-dom-sync-expected.png b/LayoutTests/platform/mac-leopard/svg/custom/svg-xml-dom-sync-expected.png
deleted file mode 100644
index 1d83518..0000000
--- a/LayoutTests/platform/mac-leopard/svg/custom/svg-xml-dom-sync-expected.png
+++ /dev/null
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/custom/text-xy-updates-expected.checksum b/LayoutTests/platform/mac-leopard/svg/custom/text-xy-updates-expected.checksum
deleted file mode 100644
index 7862509..0000000
--- a/LayoutTests/platform/mac-leopard/svg/custom/text-xy-updates-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-25079a7dbd73870e844aeeba5c58600f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/custom/text-xy-updates-expected.png b/LayoutTests/platform/mac-leopard/svg/custom/text-xy-updates-expected.png
deleted file mode 100644
index 2f01e8d..0000000
--- a/LayoutTests/platform/mac-leopard/svg/custom/text-xy-updates-expected.png
+++ /dev/null
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.checksum
index 3ee1b01..0804816 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.checksum
@@ -1 +1 @@
-c95dc0c462f00fd731956a4a4d16ff99
\ No newline at end of file
+2ae4763de8889e894d23e5ef31b860d8
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.png
index e27b310..b676046 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.checksum
index 16a73a1..3ef66ae 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.checksum
@@ -1 +1 @@
-98856d6253b8c1713bafe337114cefa8
\ No newline at end of file
+e246b4d65233afbf7b162fa12821a5d3
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.png
index 420d45b..4c522e5 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.checksum
index 956238a..47b331d 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.checksum
@@ -1 +1 @@
-133385d44b6f6531192ba0e59cf320fe
\ No newline at end of file
+6267f719ea45cda54254679934254957
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.png
index 520fa47..8679bfd 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.checksum
index e5b9841..80a73e8 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.checksum
@@ -1 +1 @@
-6c4d711593840e406b97678ac782778c
\ No newline at end of file
+01a3847e49f67c182f05a5c8487a061e
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.png
index 33f1fe2..4e46b32 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.checksum
index 60cce58..dd6aab6 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.checksum
@@ -1 +1 @@
-6b9f64e6fdefa143aa4685e7389bee2c
\ No newline at end of file
+336a313a4a38970e7127c243b3158265
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.png
index 3923938..60d5596 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.checksum
index d636db2..5001cc2 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.checksum
@@ -1 +1 @@
-e52c877e73e3282a1b3d2a288ba23d1a
\ No newline at end of file
+b75a7b4d136962959636452d92a29936
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.png
index 8603dbe..ed8f58f 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.checksum
index 0fd79ca..a422b79 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.checksum
@@ -1 +1 @@
-1f0204314ef13a64ad7a6b7a7cb8b5c7
\ No newline at end of file
+8e67fa9748c9b67802e5dac8ca50ecf7
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.png
index 9cfc76c..1952cba 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.checksum
index e2eed31..4e7a5a5 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.checksum
@@ -1 +1 @@
-3de8d2f44695fdda531dfc29f3526dff
\ No newline at end of file
+1db314cae7af4bcafda5666b2544e60f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.png
index 0047559..fc73bb5 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.checksum
index 33f51b5..70b484f 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.checksum
@@ -1 +1 @@
-a94d313ee128c531ac3fdfeaeb3e9686
\ No newline at end of file
+5de052260bd89c1e2ed2db17c212b2b6
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.png
index 9be0398..bdb0d15 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.checksum
index 6638053..3d9ff94 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.checksum
@@ -1 +1 @@
-2a4b9d74c2fc9d586d1e482995d63b35
\ No newline at end of file
+c726cd30e185c71b196c6591dfe73da5
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.png
index 8b51c47..89936a7 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.checksum
index ccff2ae..dfd21b1 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.checksum
@@ -1 +1 @@
-f580f0262ffef5e9c6b0584eecc1a78d
\ No newline at end of file
+1cb86b370f57d51522d501c221bd0732
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.png
index 0367f87..235e71b 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.checksum
index fe2a3f2..09d7bc7 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.checksum
@@ -1 +1 @@
-4007ab364b0dc775124830a6988c1297
\ No newline at end of file
+078e504ace28196399cc79a3f3fc9588
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.png
index 92a244f..3ff675a 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.checksum
index 7cfe499..0414c83 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.checksum
@@ -1 +1 @@
-367aaea43af49f03fea86e4b66a7b7ad
\ No newline at end of file
+424f96972ef8e74a81d73dbcb0b11354
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.png
index 784a5ce..c408943 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.checksum
index 6fcd72c..e5786e0 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.checksum
@@ -1 +1 @@
-6d08ebc58efe545eaf8c143b024ea554
\ No newline at end of file
+00f34fabd2e95b432b3f37a46ae7287f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.png
index b68a6c8..5b072c2 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.checksum
index 362ce6d..bd8593d 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.checksum
@@ -1 +1 @@
-f273def4a2525ee1ab6f71b227a37a30
\ No newline at end of file
+528557769c6784bcf61849c480f68113
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.png
index b862622..bf1c996 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.checksum
index 9a9fdb1..8892547 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.checksum
@@ -1 +1 @@
-6e8ea7a5ad7c91fa3d67626496fa7649
\ No newline at end of file
+33849147e5f0ab99316957d84b397f0b
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.png
index bf10334..8e90f05 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.checksum
index fd196e3..b1790f3 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.checksum
@@ -1 +1 @@
-a8bda405f655d66c65c50863481646ad
\ No newline at end of file
+49e924ee40b8c54ded58265253256b09
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.png
index b3c7b6b..3ba4e7b1 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.checksum b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.checksum
index 242aa03..9b4d60b 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.checksum
@@ -1 +1 @@
-e01b6ad3e304f21d2209e8d780069725
\ No newline at end of file
+bbc9a0a1f14f91ccb637bcdc7fb4f365
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.png b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.png
index 7428527..81528f2 100644
--- a/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/text/kerning-expected.checksum b/LayoutTests/platform/mac-leopard/svg/text/kerning-expected.checksum
deleted file mode 100644
index ca5a4f8..0000000
--- a/LayoutTests/platform/mac-leopard/svg/text/kerning-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-eb117cda68116b7a8704766cf0a11571
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/text/kerning-expected.png b/LayoutTests/platform/mac-leopard/svg/text/kerning-expected.png
deleted file mode 100644
index b8b0665..0000000
--- a/LayoutTests/platform/mac-leopard/svg/text/kerning-expected.png
+++ /dev/null
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/text/multichar-glyph-expected.checksum b/LayoutTests/platform/mac-leopard/svg/text/multichar-glyph-expected.checksum
deleted file mode 100644
index ee8a696..0000000
--- a/LayoutTests/platform/mac-leopard/svg/text/multichar-glyph-expected.checksum
+++ /dev/null
@@ -1 +0,0 @@
-3f70533f64c404e93d20b4931dba290f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/text/multichar-glyph-expected.png b/LayoutTests/platform/mac-leopard/svg/text/multichar-glyph-expected.png
deleted file mode 100644
index b4ea418..0000000
--- a/LayoutTests/platform/mac-leopard/svg/text/multichar-glyph-expected.png
+++ /dev/null
Binary files differ
diff --git a/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.checksum b/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.checksum
index d5d26ba..9b280f2 100644
--- a/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.checksum
+++ b/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.checksum
@@ -1 +1 @@
-f2dab2c087f0426d584c4e7ebbf87661
\ No newline at end of file
+488dd3808eec078fdea553117565c490
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.png b/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.png
index 1d3fef0..9f3a493 100644
--- a/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.png
+++ b/LayoutTests/platform/mac-leopard/svg/text/text-text-06-t-expected.png
Binary files differ
diff --git a/LayoutTests/svg/custom/resources/svg-xml-dom-sync.js b/LayoutTests/svg/custom/resources/svg-xml-dom-sync.js
deleted file mode 100644
index 6c17b35..0000000
--- a/LayoutTests/svg/custom/resources/svg-xml-dom-sync.js
+++ /dev/null
@@ -1,21 +0,0 @@
-description("Tests whether changes to SVG through native objects and the DOM stay in sync.");
-
-var svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", null);
-var rect = svgDoc.createElementNS("http://www.w3.org/2000/svg", "rect");
-rect.setAttribute("x", 100);
-rect.setAttribute("y", 100);
-
-shouldBe("rect.x.baseVal.value", "100");
-shouldBe("rect.getAttribute('x')", "'100'");
-shouldBe("rect.y.baseVal.value", "100");
-shouldBe("rect.getAttribute('y')", "'100'");
-
-rect.x.baseVal.value = 200;
-rect.setAttribute("y", 200);
-
-shouldBe("rect.x.baseVal.value", "200");
-shouldBe("rect.getAttribute('x')", "'200'");
-shouldBe("rect.y.baseVal.value", "200");
-shouldBe("rect.getAttribute('y')", "'200'");
-
-var successfullyParsed = true;
diff --git a/LayoutTests/svg/custom/svg-xml-dom-sync-expected.txt b/LayoutTests/svg/custom/svg-xml-dom-sync-expected.txt
deleted file mode 100644
index 080f11a..0000000
--- a/LayoutTests/svg/custom/svg-xml-dom-sync-expected.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Tests whether changes to SVG through native objects and the DOM stay in sync.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS rect.x.baseVal.value is 100
-PASS rect.getAttribute('x') is '100'
-PASS rect.y.baseVal.value is 100
-PASS rect.getAttribute('y') is '100'
-PASS rect.x.baseVal.value is 200
-PASS rect.getAttribute('x') is '200'
-PASS rect.y.baseVal.value is 200
-PASS rect.getAttribute('y') is '200'
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/custom/svg-xml-dom-sync.html b/LayoutTests/svg/custom/svg-xml-dom-sync.html
deleted file mode 100644
index 97d15e1..0000000
--- a/LayoutTests/svg/custom/svg-xml-dom-sync.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-<head>
-<link rel="stylesheet" href="../../../LayoutTests/fast/js/resources/js-test-style.css">
-<script src="../../../LayoutTests/fast/js/resources/js-test-pre.js"></script>
-</head>
-<body>
-<p id="description"></p>
-<div id="console"></div>
-<script src="resources/svg-xml-dom-sync.js"></script> 
-<script src="../../../LayoutTests/fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGAElement-dom-href-attr.html b/LayoutTests/svg/dynamic-updates/SVGAElement-dom-href-attr.html
index a58a347..d73bdca 100644
--- a/LayoutTests/svg/dynamic-updates/SVGAElement-dom-href-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGAElement-dom-href-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGAElement-dom-href-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGAElement-dom-target-attr.html b/LayoutTests/svg/dynamic-updates/SVGAElement-dom-target-attr.html
index 1b684ef..43053cb 100644
--- a/LayoutTests/svg/dynamic-updates/SVGAElement-dom-target-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGAElement-dom-target-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGAElement-dom-target-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-href-prop.html b/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-href-prop.html
index 1fc40ae..7a37ec3 100644
--- a/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-href-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-href-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGAElement-svgdom-href-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-target-prop.html b/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-target-prop.html
index e029958..cbc6ed9 100644
--- a/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-target-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGAElement-svgdom-target-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGAElement-svgdom-target-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.txt
index accb1f6..f2d0ab9 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS circleElement.getAttribute('cx') is "-50"
+PASS circleElement.getAttribute('cx') is "-150"
 PASS circleElement.getAttribute('cx') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr.html b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr.html
index ecaad94..62717dc 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cx-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGCircleElement-dom-cx-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.txt
index 4c397b2..575fb1e 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS circleElement.getAttribute('cy') is "-50"
+PASS circleElement.getAttribute('cy') is "-150"
 PASS circleElement.getAttribute('cy') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr.html b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr.html
index fbd4e34..5cd9a1f 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-cy-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGCircleElement-dom-cy-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.txt
index 56d8e40..df74a60 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS circleElement.getAttribute('r') is "1"
+PASS circleElement.getAttribute('r') is "0"
 PASS circleElement.getAttribute('r') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr.html b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr.html
index 7e4792d..15a4062 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-dom-r-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGCircleElement-dom-r-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.txt
index 2cd0f55..5bbb0b7 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS circleElement.cx.baseVal.value is -50
+PASS circleElement.cx.baseVal.value is -150
 PASS circleElement.cx.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop.html b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop.html
index d945e8f..571ff7a 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cx-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGCircleElement-svgdom-cx-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.txt
index e6df89e..9812f49 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS circleElement.cy.baseVal.value is -50
+PASS circleElement.cy.baseVal.value is -150
 PASS circleElement.cy.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop.html b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop.html
index 3bb047b..aad94b5 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-cy-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGCircleElement-svgdom-cy-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.txt
index d2d270b..9a5ae8b 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS circleElement.r.baseVal.value is 1
+PASS circleElement.r.baseVal.value is 0
 PASS circleElement.r.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop.html b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop.html
index 22577e0..fb95745 100644
--- a/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGCircleElement-svgdom-r-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGCircleElement-svgdom-r-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGClipPathElement-dom-clipPathUnits-attr.html b/LayoutTests/svg/dynamic-updates/SVGClipPathElement-dom-clipPathUnits-attr.html
index b0c0264..10d542d 100644
--- a/LayoutTests/svg/dynamic-updates/SVGClipPathElement-dom-clipPathUnits-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGClipPathElement-dom-clipPathUnits-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGClipPathElement-dom-clipPathUnits-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGClipPathElement-svgdom-clipPathUnits-prop.html b/LayoutTests/svg/dynamic-updates/SVGClipPathElement-svgdom-clipPathUnits-prop.html
index 9c92873d..78a7804 100644
--- a/LayoutTests/svg/dynamic-updates/SVGClipPathElement-svgdom-clipPathUnits-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGClipPathElement-svgdom-clipPathUnits-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGClipPathElement-svgdom-clipPathUnits-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.txt
index 3171fc9..034b7bd 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.getAttribute('cx') is "-50"
+PASS ellipseElement.getAttribute('cx') is "-150"
 PASS ellipseElement.getAttribute('cx') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr.html
index b792736..15c5005 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cx-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-dom-cx-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.txt
index 2665f33..9579a99 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.getAttribute('cy') is "-50"
+PASS ellipseElement.getAttribute('cy') is "-150"
 PASS ellipseElement.getAttribute('cy') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr.html
index bb52fb4..5f94f9c 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-cy-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-dom-cy-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.txt
index d2f7b2e..00d25ce 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr-expected.txt
@@ -5,8 +5,8 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.getAttribute('rx') is "10"
-PASS ellipseElement.getAttribute('rx') is "150"
+PASS ellipseElement.getAttribute('rx') is "0"
+PASS ellipseElement.getAttribute('rx') is "100"
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr.html
index dfae77f..6fcba92 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-rx-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-dom-rx-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.txt
index 2875677..4b876b5 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.getAttribute('ry') is "10"
+PASS ellipseElement.getAttribute('ry') is "0"
 PASS ellipseElement.getAttribute('ry') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr.html
index ffd7899..584349e 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-dom-ry-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-dom-ry-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.txt
index 48a181d..54d18e2 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.cx.baseVal.value is -50
+PASS ellipseElement.cx.baseVal.value is -150
 PASS ellipseElement.cx.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop.html
index fafca03..c86e494 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cx-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-svgdom-cx-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.txt
index 56048c1..fc6c33f 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.cy.baseVal.value is -50
+PASS ellipseElement.cy.baseVal.value is -150
 PASS ellipseElement.cy.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop.html
index 14d6f07..bc50c47 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-cy-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-svgdom-cy-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.txt
index 06b092b..7a30df1 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop-expected.txt
@@ -5,8 +5,8 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.rx.baseVal.value is 10
-PASS ellipseElement.rx.baseVal.value is 150
+PASS ellipseElement.rx.baseVal.value is 0
+PASS ellipseElement.rx.baseVal.value is 100
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop.html
index 5b0a9bc..be095d3 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-rx-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-svgdom-rx-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.txt
index a975897..a85fdd0 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop-expected.txt
@@ -5,7 +5,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ellipseElement.ry.baseVal.value is 10
+PASS ellipseElement.ry.baseVal.value is 0
 PASS ellipseElement.ry.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop.html b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop.html
index 7b4270f..04521de 100644
--- a/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGEllipseElement-svgdom-ry-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGEllipseElement-svgdom-ry-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.txt
index 655bde3..881e0af 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr-expected.txt
@@ -6,7 +6,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS foreignObjectElement.getAttribute('height') is "2"
+PASS foreignObjectElement.getAttribute('height') is "0"
 PASS foreignObjectElement.getAttribute('height') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr.html
index 6aac8ab..6986373 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-height-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-dom-height-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.txt
index 5036fac..37c531c 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr-expected.txt
@@ -6,7 +6,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS foreignObjectElement.getAttribute('width') is "2"
+PASS foreignObjectElement.getAttribute('width') is "0"
 PASS foreignObjectElement.getAttribute('width') is "150"
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr.html
index 789252e..f409cff 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-width-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-dom-width-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-x-attr.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-x-attr.html
index 9e32ba6..f8b365d 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-x-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-x-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-dom-x-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-y-attr.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-y-attr.html
index 467053f..1216bc7 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-y-attr.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-dom-y-attr.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-dom-y-attr.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.txt
index b83eb9f..db38144 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop-expected.txt
@@ -6,7 +6,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS foreignObjectElement.height.baseVal.value is 2
+PASS foreignObjectElement.height.baseVal.value is 0
 PASS foreignObjectElement.height.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop.html
index 6a931c8..4a352ae 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-height-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-svgdom-height-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.txt
index 824e264..34ecbb1 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.txt
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop-expected.txt
@@ -6,7 +6,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS foreignObjectElement.width.baseVal.value is 2
+PASS foreignObjectElement.width.baseVal.value is 0
 PASS foreignObjectElement.width.baseVal.value is 150
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop.html
index f48b5e0..20e7ed6 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-width-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-svgdom-width-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-x-prop.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-x-prop.html
index 308cd25..80d53ae 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-x-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-x-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-svgdom-x-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-y-prop.html b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-y-prop.html
index 531f0fe..e447e35 100644
--- a/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-y-prop.html
+++ b/LayoutTests/svg/dynamic-updates/SVGForeignObjectElement-svgdom-y-prop.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="resources/SVGForeignObjectElement-svgdom-y-prop.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-href-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-href-attr.js
index 0299920..6c631c1 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-href-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-href-attr.js
@@ -20,8 +20,8 @@
 
 function executeTest() {
     anchorElement.setAttributeNS(xlinkNS, "xlink:href", "resources/linkTarget.svg");
-    completeTest();
     triggerUpdate();
 }
 
 executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-target-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-target-attr.js
index 6880ee8d..f6fd78d 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-target-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-dom-target-attr.js
@@ -21,8 +21,8 @@
 
 function executeTest() {
     anchorElement.setAttribute("target", "_self");
-    completeTest();
     triggerUpdate();
 }
 
 executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-href-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-href-prop.js
index 2e46976..b0886f2 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-href-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-href-prop.js
@@ -20,8 +20,8 @@
 
 function executeTest() {
     anchorElement.href.baseVal = "resources/linkTarget.svg";
-    completeTest();
     triggerUpdate();
 }
 
 executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-target-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-target-prop.js
index c13fb39..57093e6 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-target-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGAElement-svgdom-target-prop.js
@@ -21,8 +21,8 @@
 
 function executeTest() {
     anchorElement.target.baseVal = "_self";
-    completeTest();
     triggerUpdate();
 }
 
 executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cx-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cx-attr.js
index 9cf2a08..59d6dbd 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cx-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cx-attr.js
@@ -1,23 +1,25 @@
 // [Name] SVGCircleElement-dom-cx-attr.js
-// [Expected rendering result] unclipped green circle - and a series of PASS mesages
+// [Expected rendering result] green circle - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cx' attribute of the SVGCircleElement object")
 createSVGTestCase();
 
 var circleElement = createSVGElement("circle");
-circleElement.setAttribute("cx", "-50");
+circleElement.setAttribute("cx", "-150");
 circleElement.setAttribute("cy", "150");
 circleElement.setAttribute("r", "150");
 circleElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(circleElement);
-shouldBeEqualToString("circleElement.getAttribute('cx')", "-50");
+shouldBeEqualToString("circleElement.getAttribute('cx')", "-150");
 
 function executeTest() {
     circleElement.setAttribute("cx", "150");
     shouldBeEqualToString("circleElement.getAttribute('cx')", "150");
 
-    completeTest();
+    waitForClickEvent(circleElement);
+    triggerUpdate();
 }
 
-startTest(circleElement, 50, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cy-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cy-attr.js
index 81716be..3753a30 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cy-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-cy-attr.js
@@ -1,23 +1,25 @@
 // [Name] SVGCircleElement-dom-cy-attr.js
-// [Expected rendering result] unclipped green circle - and a series of PASS mesages
+// [Expected rendering result] green circle - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cy' attribute of the SVGCircleElement object")
 createSVGTestCase();
 
 var circleElement = createSVGElement("circle");
 circleElement.setAttribute("cx", "150");
-circleElement.setAttribute("cy", "-50");
+circleElement.setAttribute("cy", "-150");
 circleElement.setAttribute("r", "150");
 circleElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(circleElement);
-shouldBeEqualToString("circleElement.getAttribute('cy')", "-50");
+shouldBeEqualToString("circleElement.getAttribute('cy')", "-150");
 
 function executeTest() {
     circleElement.setAttribute("cy", "150");
     shouldBeEqualToString("circleElement.getAttribute('cy')", "150");
 
-    completeTest();
+    waitForClickEvent(circleElement);
+    triggerUpdate();
 }
 
-startTest(circleElement, 150, 50);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-r-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-r-attr.js
index f76bf5e..598bf2a 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-r-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-dom-r-attr.js
@@ -7,17 +7,19 @@
 var circleElement = createSVGElement("circle");
 circleElement.setAttribute("cx", "150");
 circleElement.setAttribute("cy", "150");
-circleElement.setAttribute("r", "1");
+circleElement.setAttribute("r", "0");
 circleElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(circleElement);
-shouldBeEqualToString("circleElement.getAttribute('r')", "1");
+shouldBeEqualToString("circleElement.getAttribute('r')", "0");
 
 function executeTest() {
     circleElement.setAttribute("r", "150");
     shouldBeEqualToString("circleElement.getAttribute('r')", "150");
 
-    completeTest();
+    waitForClickEvent(circleElement);
+    triggerUpdate();
 }
 
-startTest(circleElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cx-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cx-prop.js
index 9e97f6d..a15e0f9 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cx-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cx-prop.js
@@ -1,23 +1,25 @@
 // [Name] SVGCircleElement-svgdom-cx-prop.js
-// [Expected rendering result] unclipped green circle - and a series of PASS mesages
+// [Expected rendering result] green circle - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cx' property of the SVGCircleElement object")
 createSVGTestCase();
 
 var circleElement = createSVGElement("circle");
-circleElement.setAttribute("cx", "-50");
+circleElement.setAttribute("cx", "-150");
 circleElement.setAttribute("cy", "150");
 circleElement.setAttribute("r", "150");
 circleElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(circleElement);
-shouldBe("circleElement.cx.baseVal.value", "-50");
+shouldBe("circleElement.cx.baseVal.value", "-150");
 
 function executeTest() {
     circleElement.cx.baseVal.value = "150";
     shouldBe("circleElement.cx.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(circleElement);
+    triggerUpdate();
 }
 
-startTest(circleElement, 50, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cy-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cy-prop.js
index 1f8d297..dc75f3e 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cy-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-cy-prop.js
@@ -1,23 +1,25 @@
 // [Name] SVGCircleElement-svgdom-cy-prop.js
-// [Expected rendering result] unclipped green circle - and a series of PASS mesages
+// [Expected rendering result] green circle - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cy' property of the SVGCircleElement object")
 createSVGTestCase();
 
 var circleElement = createSVGElement("circle");
 circleElement.setAttribute("cx", "150");
-circleElement.setAttribute("cy", "-50");
+circleElement.setAttribute("cy", "-150");
 circleElement.setAttribute("r", "150");
 circleElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(circleElement);
-shouldBe("circleElement.cy.baseVal.value", "-50");
+shouldBe("circleElement.cy.baseVal.value", "-150");
 
 function executeTest() {
     circleElement.cy.baseVal.value = "150";
     shouldBe("circleElement.cy.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(circleElement);
+    triggerUpdate();
 }
 
-startTest(circleElement, 150, 50);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-r-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-r-prop.js
index 88783d5..09eddbd 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-r-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGCircleElement-svgdom-r-prop.js
@@ -7,17 +7,19 @@
 var circleElement = createSVGElement("circle");
 circleElement.setAttribute("cx", "150");
 circleElement.setAttribute("cy", "150");
-circleElement.setAttribute("r", "1");
+circleElement.setAttribute("r", "0");
 circleElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(circleElement);
-shouldBe("circleElement.r.baseVal.value", "1");
+shouldBe("circleElement.r.baseVal.value", "0");
 
 function executeTest() {
     circleElement.r.baseVal.value = "150";
     shouldBe("circleElement.r.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(circleElement); 
+    triggerUpdate();
 }
 
-startTest(circleElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-dom-clipPathUnits-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-dom-clipPathUnits-attr.js
index f6b3b70..ef9ad05 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-dom-clipPathUnits-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-dom-clipPathUnits-attr.js
@@ -17,7 +17,7 @@
 circleElement.setAttribute("r", "150");
 clipPathElement.appendChild(circleElement);
 
-defsElement.appendChild(clipPathElement);
+defsElement.appendChild(clipPathElement);;
 
 var rectElement = createSVGElement("rect");
 rectElement.setAttribute("width", "300");
@@ -32,7 +32,9 @@
     clipPathElement.setAttribute("clipPathUnits", "userSpaceOnUse");
     shouldBeEqualToString("clipPathElement.getAttribute('clipPathUnits')", "userSpaceOnUse");
 
-    completeTest();
+    waitForClickEvent(rectElement);
+    triggerUpdate();
 }
 
-startTest(rectElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-svgdom-clipPathUnits-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-svgdom-clipPathUnits-prop.js
index a01cf5c..003968d 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-svgdom-clipPathUnits-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGClipPathElement-svgdom-clipPathUnits-prop.js
@@ -32,7 +32,9 @@
     clipPathElement.clipPathUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE;
     shouldBe("clipPathElement.clipPathUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
 
-    completeTest();
+    waitForClickEvent(rectElement);
+    triggerUpdate();
 }
 
-startTest(rectElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cx-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cx-attr.js
index 18cf0d7..0a33605 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cx-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cx-attr.js
@@ -1,24 +1,26 @@
 // [Name] SVGEllipseElement-dom-cx-attr.js
-// [Expected rendering result] unclipped green ellipse - and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cx' attribute of the SVGEllipseElement object")
 createSVGTestCase();
 
 var ellipseElement = createSVGElement("ellipse");
-ellipseElement.setAttribute("cx", "-50");
+ellipseElement.setAttribute("cx", "-150");
 ellipseElement.setAttribute("cy", "150");
 ellipseElement.setAttribute("rx", "100");
 ellipseElement.setAttribute("ry", "150");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBeEqualToString("ellipseElement.getAttribute('cx')", "-50");
+shouldBeEqualToString("ellipseElement.getAttribute('cx')", "-150");
 
 function executeTest() {
     ellipseElement.setAttribute("cx", "150");
     shouldBeEqualToString("ellipseElement.getAttribute('cx')", "150");
 
-    completeTest();
+    waitForClickEvent(ellipseElement);
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 25, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cy-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cy-attr.js
index 680172e..ba96935 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cy-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-cy-attr.js
@@ -1,24 +1,26 @@
 // [Name] SVGEllipseElement-dom-cy-attr.js
-// [Expected rendering result] unclipped green ellipse - and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cy' attribute of the SVGEllipseElement object")
 createSVGTestCase();
 
 var ellipseElement = createSVGElement("ellipse");
 ellipseElement.setAttribute("cx", "150");
-ellipseElement.setAttribute("cy", "-50");
+ellipseElement.setAttribute("cy", "-150");
 ellipseElement.setAttribute("rx", "100");
 ellipseElement.setAttribute("ry", "150");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBeEqualToString("ellipseElement.getAttribute('cy')", "-50");
+shouldBeEqualToString("ellipseElement.getAttribute('cy')", "-150");
 
 function executeTest() {
     ellipseElement.setAttribute("cy", "150");
     shouldBeEqualToString("ellipseElement.getAttribute('cy')", "150");
 
-    completeTest();
+    waitForClickEvent(ellipseElement);
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 150, 50);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-rx-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-rx-attr.js
index 6baa959..2f975ba 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-rx-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-rx-attr.js
@@ -1,5 +1,5 @@
 // [Name] SVGEllipseElement-dom-rx-attr.js
-// [Expected rendering result] green ellipse with rx = ry (in fact a circle)- and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'rx' attribute of the SVGEllipseElement object")
 createSVGTestCase();
@@ -7,18 +7,20 @@
 var ellipseElement = createSVGElement("ellipse");
 ellipseElement.setAttribute("cx", "150");
 ellipseElement.setAttribute("cy", "150");
-ellipseElement.setAttribute("rx", "10");
+ellipseElement.setAttribute("rx", "0");
 ellipseElement.setAttribute("ry", "150");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBeEqualToString("ellipseElement.getAttribute('rx')", "10");
+shouldBeEqualToString("ellipseElement.getAttribute('rx')", "0");
 
 function executeTest() {
-    ellipseElement.setAttribute("rx", "150");
-    shouldBeEqualToString("ellipseElement.getAttribute('rx')", "150");
+    ellipseElement.setAttribute("rx", "100");
+    shouldBeEqualToString("ellipseElement.getAttribute('rx')", "100");
 
-    completeTest();
+    waitForClickEvent(ellipseElement);
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-ry-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-ry-attr.js
index 3006575..1bec14b 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-ry-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-dom-ry-attr.js
@@ -1,5 +1,5 @@
 // [Name] SVGEllipseElement-dom-ry-attr.js
-// [Expected rendering result] with rx = ry (in fact a circle) - and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'ry' attribute of the SVGEllipseElement object")
 createSVGTestCase();
@@ -7,18 +7,20 @@
 var ellipseElement = createSVGElement("ellipse");
 ellipseElement.setAttribute("cx", "150");
 ellipseElement.setAttribute("cy", "150");
-ellipseElement.setAttribute("rx", "150");
-ellipseElement.setAttribute("ry", "10");
+ellipseElement.setAttribute("rx", "100");
+ellipseElement.setAttribute("ry", "0");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBeEqualToString("ellipseElement.getAttribute('ry')", "10");
+shouldBeEqualToString("ellipseElement.getAttribute('ry')", "0");
 
 function executeTest() {
     ellipseElement.setAttribute("ry", "150");
     shouldBeEqualToString("ellipseElement.getAttribute('ry')", "150");
 
-    completeTest();
+    waitForClickEvent(ellipseElement);
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cx-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cx-prop.js
index 23f17e4..da19b0c 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cx-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cx-prop.js
@@ -1,24 +1,26 @@
 // [Name] SVGEllipseElement-svgdom-cx-prop.js
-// [Expected rendering result] unclipped green ellipse - and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cx' property of the SVGEllipseElement object")
 createSVGTestCase();
 
 var ellipseElement = createSVGElement("ellipse");
-ellipseElement.setAttribute("cx", "-50");
+ellipseElement.setAttribute("cx", "-150");
 ellipseElement.setAttribute("cy", "150");
 ellipseElement.setAttribute("rx", "100");
 ellipseElement.setAttribute("ry", "150");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBe("ellipseElement.cx.baseVal.value", "-50");
+shouldBe("ellipseElement.cx.baseVal.value", "-150");
 
 function executeTest() {
     ellipseElement.cx.baseVal.value = "150";
     shouldBe("ellipseElement.cx.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(ellipseElement);
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 25, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cy-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cy-prop.js
index f641a44..2dd7a94 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cy-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-cy-prop.js
@@ -1,24 +1,26 @@
 // [Name] SVGEllipseElement-svgdom-cy-prop.js
-// [Expected rendering result] unclipped green ellipse - and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'cy' property of the SVGEllipseElement object")
 createSVGTestCase();
 
 var ellipseElement = createSVGElement("ellipse");
 ellipseElement.setAttribute("cx", "150");
-ellipseElement.setAttribute("cy", "-50");
+ellipseElement.setAttribute("cy", "-150");
 ellipseElement.setAttribute("rx", "100");
 ellipseElement.setAttribute("ry", "150");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBe("ellipseElement.cy.baseVal.value", "-50");
+shouldBe("ellipseElement.cy.baseVal.value", "-150");
 
 function executeTest() {
     ellipseElement.cy.baseVal.value = "150";
     shouldBe("ellipseElement.cy.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(ellipseElement);
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 150, 50);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-rx-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-rx-prop.js
index 65905f2..c0710ae 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-rx-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-rx-prop.js
@@ -1,5 +1,5 @@
 // [Name] SVGEllipseElement-svgdom-rx-prop.js
-// [Expected rendering result] green ellipse with rx = ry (in fact a circle)- and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'rx' property of the SVGEllipseElement object")
 createSVGTestCase();
@@ -7,18 +7,20 @@
 var ellipseElement = createSVGElement("ellipse");
 ellipseElement.setAttribute("cx", "150");
 ellipseElement.setAttribute("cy", "150");
-ellipseElement.setAttribute("rx", "10");
+ellipseElement.setAttribute("rx", "0");
 ellipseElement.setAttribute("ry", "150");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBe("ellipseElement.rx.baseVal.value", "10");
+shouldBe("ellipseElement.rx.baseVal.value", "0");
 
 function executeTest() {
-    ellipseElement.rx.baseVal.value = "150";
-    shouldBe("ellipseElement.rx.baseVal.value", "150");
+    ellipseElement.rx.baseVal.value = "100";
+    shouldBe("ellipseElement.rx.baseVal.value", "100");
 
-    completeTest();
+    waitForClickEvent(ellipseElement); 
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-ry-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-ry-prop.js
index 7a0aa2d..c61b664 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-ry-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGEllipseElement-svgdom-ry-prop.js
@@ -1,5 +1,5 @@
 // [Name] SVGEllipseElement-svgdom-ry-prop.js
-// [Expected rendering result] green ellipse with rx = ry (in fact a circle)- and a series of PASS mesages
+// [Expected rendering result] green ellipse - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'ry' property of the SVGEllipseElement object")
 createSVGTestCase();
@@ -7,18 +7,20 @@
 var ellipseElement = createSVGElement("ellipse");
 ellipseElement.setAttribute("cx", "150");
 ellipseElement.setAttribute("cy", "150");
-ellipseElement.setAttribute("rx", "150");
-ellipseElement.setAttribute("ry", "10");
+ellipseElement.setAttribute("rx", "100");
+ellipseElement.setAttribute("ry", "0");
 ellipseElement.setAttribute("fill", "green");
 
 rootSVGElement.appendChild(ellipseElement);
-shouldBe("ellipseElement.ry.baseVal.value", "10");
+shouldBe("ellipseElement.ry.baseVal.value", "0");
 
 function executeTest() {
     ellipseElement.ry.baseVal.value = "150";
     shouldBe("ellipseElement.ry.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(ellipseElement); 
+    triggerUpdate();
 }
 
-startTest(ellipseElement, 150, 150);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-height-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-height-attr.js
index fd81594..adc58b1 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-height-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-height-attr.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-dom-height-attr.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'height' attribute of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -8,7 +8,7 @@
 foreignObjectElement.setAttribute("x", "100");
 foreignObjectElement.setAttribute("y", "80");
 foreignObjectElement.setAttribute("width", "150");
-foreignObjectElement.setAttribute("height", "2");
+foreignObjectElement.setAttribute("height", "0");
 
 var htmlDivElement = document.createElementNS(xhtmlNS, "xhtml:div");
 htmlDivElement.setAttribute("style", "background-color: green; color: white; text-align: center");
@@ -17,13 +17,15 @@
 foreignObjectElement.appendChild(htmlDivElement);
 rootSVGElement.appendChild(foreignObjectElement);
 
-shouldBeEqualToString("foreignObjectElement.getAttribute('height')", "2");
+shouldBeEqualToString("foreignObjectElement.getAttribute('height')", "0");
 
 function executeTest() {
     foreignObjectElement.setAttribute("height", "150");
     shouldBeEqualToString("foreignObjectElement.getAttribute('height')", "150");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 150, 81);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-width-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-width-attr.js
index 43a22a6..453526c 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-width-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-width-attr.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-dom-width-attr.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'width' attribute of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -7,7 +7,7 @@
 var foreignObjectElement = createSVGElement("foreignObject");
 foreignObjectElement.setAttribute("x", "100");
 foreignObjectElement.setAttribute("y", "80");
-foreignObjectElement.setAttribute("width", "2");
+foreignObjectElement.setAttribute("width", "0");
 foreignObjectElement.setAttribute("height", "150");
 
 var htmlDivElement = document.createElementNS(xhtmlNS, "xhtml:div");
@@ -17,13 +17,15 @@
 foreignObjectElement.appendChild(htmlDivElement);
 rootSVGElement.appendChild(foreignObjectElement);
 
-shouldBeEqualToString("foreignObjectElement.getAttribute('width')", "2");
+shouldBeEqualToString("foreignObjectElement.getAttribute('width')", "0");
 
 function executeTest() {
     foreignObjectElement.setAttribute("width", "150");
     shouldBeEqualToString("foreignObjectElement.getAttribute('width')", "150");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 101, 100);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-x-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-x-attr.js
index 7b66ba9..4cbae01 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-x-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-x-attr.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-dom-x-attr.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'x' attribute of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -23,7 +23,9 @@
     foreignObjectElement.setAttribute("x", "100");
     shouldBeEqualToString("foreignObjectElement.getAttribute('x')", "100");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 10, 100);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-y-attr.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-y-attr.js
index 9322a7b..69e5ed4 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-y-attr.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-dom-y-attr.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-dom-y-attr.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'y' attribute of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -23,7 +23,9 @@
     foreignObjectElement.setAttribute("y", "80");
     shouldBeEqualToString("foreignObjectElement.getAttribute('y')", "80");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 150, 50);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-height-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-height-prop.js
index 778b744..ccf644c 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-height-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-height-prop.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-svgdom-height-prop.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'height' property of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -8,7 +8,7 @@
 foreignObjectElement.setAttribute("x", "100");
 foreignObjectElement.setAttribute("y", "80");
 foreignObjectElement.setAttribute("width", "150");
-foreignObjectElement.setAttribute("height", "2");
+foreignObjectElement.setAttribute("height", "0");
 
 var htmlDivElement = document.createElementNS(xhtmlNS, "xhtml:div");
 htmlDivElement.setAttribute("style", "background-color: green; color: white; text-align: center");
@@ -17,13 +17,15 @@
 foreignObjectElement.appendChild(htmlDivElement);
 rootSVGElement.appendChild(foreignObjectElement);
 
-shouldBe("foreignObjectElement.height.baseVal.value", "2");
+shouldBe("foreignObjectElement.height.baseVal.value", "0");
 
 function executeTest() {
     foreignObjectElement.height.baseVal.value = "150";
     shouldBe("foreignObjectElement.height.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 150, 81);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-width-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-width-prop.js
index 37bf6b2..6b7ea87 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-width-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-width-prop.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-svgdom-width-prop.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'width' property of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -7,7 +7,7 @@
 var foreignObjectElement = createSVGElement("foreignObject");
 foreignObjectElement.setAttribute("x", "100");
 foreignObjectElement.setAttribute("y", "80");
-foreignObjectElement.setAttribute("width", "2");
+foreignObjectElement.setAttribute("width", "0");
 foreignObjectElement.setAttribute("height", "150");
 
 var htmlDivElement = document.createElementNS(xhtmlNS, "xhtml:div");
@@ -17,13 +17,15 @@
 foreignObjectElement.appendChild(htmlDivElement);
 rootSVGElement.appendChild(foreignObjectElement);
 
-shouldBe("foreignObjectElement.width.baseVal.value", "2");
+shouldBe("foreignObjectElement.width.baseVal.value", "0");
 
 function executeTest() {
     foreignObjectElement.width.baseVal.value = "150";
     shouldBe("foreignObjectElement.width.baseVal.value", "150");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 101, 100);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-x-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-x-prop.js
index e80ca22..5a54140 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-x-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-x-prop.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-svgdom-x-prop.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'x' property of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -23,7 +23,9 @@
     foreignObjectElement.x.baseVal.value = "100";
     shouldBe("foreignObjectElement.x.baseVal.value", "100");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 10, 100);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-y-prop.js b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-y-prop.js
index 1fd62d6..5655d8a 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-y-prop.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGForeignObjectElement-svgdom-y-prop.js
@@ -1,5 +1,5 @@
 // [Name] SVGForeignObjectElement-svgdom-y-prop.js
-// [Expected rendering result] unclipped 'Test passed' text - and a series of PASS mesages
+// [Expected rendering result] 'Test passed' text - and a series of PASS mesages
 
 description("Tests dynamic updates of the 'y' property of the SVGForeignObjectElement object")
 createSVGTestCase();
@@ -23,7 +23,9 @@
     foreignObjectElement.y.baseVal.value = "80";
     shouldBe("foreignObjectElement.y.baseVal.value", "80");
 
-    completeTest();
+    waitForClickEvent(foreignObjectElement);
+    triggerUpdate();
 }
 
-startTest(foreignObjectElement, 150, 50);
+executeTest();
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/resources/SVGTestCase.js b/LayoutTests/svg/dynamic-updates/resources/SVGTestCase.js
index 846fd7f..72bc810 100644
--- a/LayoutTests/svg/dynamic-updates/resources/SVGTestCase.js
+++ b/LayoutTests/svg/dynamic-updates/resources/SVGTestCase.js
@@ -20,44 +20,15 @@
     bodyElement.insertBefore(rootSVGElement, document.getElementById("description"));
 }
 
-function triggerUpdate(x, y) {
-    // Default x position
-    if (!x) {
-        x = 150;
-    }
-
-    // Default y position
-    if (!y) {
-        y = 200;
-    }
-
-    // Translation as we live in a XHTML document
-    x = x + rootSVGElement.offsetLeft;
-    y = y + rootSVGElement.offsetTop;
-
+function triggerUpdate() {
     if (window.eventSender) {
-        eventSender.mouseMoveTo(x, y);
+        eventSender.mouseMoveTo(150, 200);
         eventSender.mouseDown();
         eventSender.mouseUp();
     }
 }
 
-function startTest(obj, x, y) {
-    obj.setAttribute("onclick", "executeTest()");
-
-    // Assure first layout finished
-    window.setTimeout("triggerUpdate(" + x + ", " + y + ")", 0);
-}
-
-function completeTest() {
-    var script = document.createElement("script");
-
-    script.onload = function() {
-        if (window.layoutTestController)
-            layoutTestController.notifyDone();
-    };
-
-    script.src = "../../fast/js/resources/js-test-post.js";
-    successfullyParsed = true;
-    document.body.appendChild(script);
+function waitForClickEvent(obj) {
+    if (window.layoutTestController)
+        obj.setAttribute("onclick", "layoutTestController.notifyDone()");
 }
diff --git a/LayoutTests/svg/dynamic-updates/resources/TEMPLATE.html b/LayoutTests/svg/dynamic-updates/resources/TEMPLATE.html
index 25dfc05..aeed90a 100644
--- a/LayoutTests/svg/dynamic-updates/resources/TEMPLATE.html
+++ b/LayoutTests/svg/dynamic-updates/resources/TEMPLATE.html
@@ -10,5 +10,6 @@
 <p id="description"></p>
 <div id="console"></div>
 <script src="YOUR_JS_FILE_HERE"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 73227fc..54366c5 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,169 @@
+2008-04-03  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by NOBODY (Rollout).
+
+        Rollout r31566 as there were a few issues i missed during review (thanks to antti for pointing them out)
+
+        * dom/Element.h:
+        * dom/NamedAttrMap.h:
+        * rendering/SVGRootInlineBox.cpp:
+        (WebCore::SVGRootInlineBox::buildLayoutInformation):
+        (WebCore::SVGRootInlineBox::buildTextChunks):
+        * svg/SVGAElement.h:
+        (WebCore::SVGAElement::contextElement):
+        * svg/SVGAltGlyphElement.h:
+        (WebCore::SVGAltGlyphElement::contextElement):
+        * svg/SVGAnimateColorElement.h:
+        * svg/SVGAnimateElement.h:
+        * svg/SVGAnimateMotionElement.h:
+        * svg/SVGAnimateTransformElement.h:
+        * svg/SVGAnimatedTemplate.h:
+        (WebCore::SVGAnimatedTemplate::associatedAttributeName):
+        (WebCore::lookupOrCreateWrapper):
+        * svg/SVGAnimationElement.h:
+        * svg/SVGCircleElement.h:
+        (WebCore::SVGCircleElement::contextElement):
+        * svg/SVGClipPathElement.h:
+        (WebCore::SVGClipPathElement::contextElement):
+        * svg/SVGComponentTransferFunctionElement.cpp:
+        * svg/SVGComponentTransferFunctionElement.h:
+        * svg/SVGCursorElement.cpp:
+        (WebCore::SVGCursorElement::SVGCursorElement):
+        * svg/SVGCursorElement.h:
+        (WebCore::SVGCursorElement::contextElement):
+        * svg/SVGDefsElement.h:
+        (WebCore::SVGDefsElement::contextElement):
+        * svg/SVGElement.cpp:
+        * svg/SVGElement.h:
+        (WebCore::SVGElement::svgAttributeChanged):
+        * svg/SVGEllipseElement.cpp:
+        (WebCore::SVGEllipseElement::SVGEllipseElement):
+        * svg/SVGEllipseElement.h:
+        (WebCore::SVGEllipseElement::contextElement):
+        * svg/SVGExternalResourcesRequired.h:
+        * svg/SVGFEBlendElement.h:
+        * svg/SVGFEColorMatrixElement.cpp:
+        * svg/SVGFEColorMatrixElement.h:
+        * svg/SVGFEComponentTransferElement.h:
+        * svg/SVGFECompositeElement.h:
+        * svg/SVGFEDiffuseLightingElement.h:
+        * svg/SVGFEDisplacementMapElement.h:
+        * svg/SVGFEFloodElement.h:
+        * svg/SVGFEGaussianBlurElement.h:
+        * svg/SVGFEImageElement.cpp:
+        * svg/SVGFEImageElement.h:
+        (WebCore::SVGFEImageElement::contextElement):
+        * svg/SVGFELightElement.h:
+        * svg/SVGFEMergeElement.h:
+        * svg/SVGFEMergeNodeElement.h:
+        * svg/SVGFEOffsetElement.h:
+        * svg/SVGFESpecularLightingElement.h:
+        * svg/SVGFETileElement.h:
+        * svg/SVGFETurbulenceElement.h:
+        * svg/SVGFilterElement.cpp:
+        (WebCore::SVGFilterElement::SVGFilterElement):
+        * svg/SVGFilterElement.h:
+        (WebCore::SVGFilterElement::contextElement):
+        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+        (WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
+        * svg/SVGFilterPrimitiveStandardAttributes.h:
+        * svg/SVGFitToViewBox.cpp:
+        * svg/SVGFitToViewBox.h:
+        * svg/SVGFontElement.h:
+        * svg/SVGForeignObjectElement.cpp:
+        (WebCore::SVGForeignObjectElement::SVGForeignObjectElement):
+        * svg/SVGForeignObjectElement.h:
+        (WebCore::SVGForeignObjectElement::contextElement):
+        * svg/SVGGElement.h:
+        (WebCore::SVGGElement::contextElement):
+        * svg/SVGGradientElement.cpp:
+        * svg/SVGGradientElement.h:
+        * svg/SVGImageElement.cpp:
+        (WebCore::SVGImageElement::SVGImageElement):
+        * svg/SVGImageElement.h:
+        (WebCore::SVGImageElement::contextElement):
+        * svg/SVGLength.cpp:
+        * svg/SVGLength.h:
+        * svg/SVGLengthList.cpp:
+        * svg/SVGLengthList.h:
+        * svg/SVGLineElement.cpp:
+        (WebCore::SVGLineElement::SVGLineElement):
+        * svg/SVGLineElement.h:
+        (WebCore::SVGLineElement::contextElement):
+        * svg/SVGLinearGradientElement.cpp:
+        (WebCore::SVGLinearGradientElement::SVGLinearGradientElement):
+        (WebCore::SVGLinearGradientElement::collectGradientProperties):
+        * svg/SVGLinearGradientElement.h:
+        * svg/SVGMPathElement.h:
+        * svg/SVGMarkerElement.cpp:
+        (WebCore::SVGMarkerElement::SVGMarkerElement):
+        * svg/SVGMarkerElement.h:
+        (WebCore::SVGMarkerElement::contextElement):
+        * svg/SVGMaskElement.cpp:
+        (WebCore::SVGMaskElement::SVGMaskElement):
+        * svg/SVGMaskElement.h:
+        * svg/SVGNumberList.cpp:
+        * svg/SVGNumberList.h:
+        * svg/SVGPathElement.h:
+        (WebCore::SVGPathElement::contextElement):
+        * svg/SVGPatternElement.cpp:
+        (WebCore::SVGPatternElement::SVGPatternElement):
+        (WebCore::SVGPatternElement::collectPatternProperties):
+        * svg/SVGPatternElement.h:
+        * svg/SVGPolyElement.h:
+        (WebCore::SVGPolyElement::contextElement):
+        * svg/SVGPreserveAspectRatio.cpp:
+        * svg/SVGPreserveAspectRatio.h:
+        * svg/SVGRadialGradientElement.cpp:
+        (WebCore::SVGRadialGradientElement::SVGRadialGradientElement):
+        (WebCore::SVGRadialGradientElement::svgAttributeChanged):
+        (WebCore::SVGRadialGradientElement::collectGradientProperties):
+        * svg/SVGRadialGradientElement.h:
+        * svg/SVGRectElement.cpp:
+        (WebCore::SVGRectElement::SVGRectElement):
+        * svg/SVGRectElement.h:
+        (WebCore::SVGRectElement::contextElement):
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::SVGSVGElement):
+        (WebCore::SVGSVGElement::currentView):
+        * svg/SVGSVGElement.h:
+        * svg/SVGScriptElement.h:
+        (WebCore::SVGScriptElement::contextElement):
+        * svg/SVGSetElement.h:
+        * svg/SVGStyledElement.h:
+        * svg/SVGStyledTransformableElement.cpp:
+        * svg/SVGStyledTransformableElement.h:
+        * svg/SVGSwitchElement.h:
+        (WebCore::SVGSwitchElement::contextElement):
+        * svg/SVGSymbolElement.h:
+        (WebCore::SVGSymbolElement::contextElement):
+        * svg/SVGTRefElement.h:
+        (WebCore::SVGTRefElement::contextElement):
+        * svg/SVGTSpanElement.h:
+        * svg/SVGTextContentElement.cpp:
+        (WebCore::SVGTextContentElement::SVGTextContentElement):
+        * svg/SVGTextContentElement.h:
+        * svg/SVGTextElement.cpp:
+        * svg/SVGTextElement.h:
+        (WebCore::SVGTextElement::contextElement):
+        * svg/SVGTextPathElement.cpp:
+        (WebCore::SVGTextPathElement::SVGTextPathElement):
+        * svg/SVGTextPathElement.h:
+        (WebCore::SVGTextPathElement::contextElement):
+        * svg/SVGTextPositioningElement.cpp:
+        * svg/SVGTextPositioningElement.h:
+        * svg/SVGTransformList.cpp:
+        * svg/SVGTransformList.h:
+        * svg/SVGURIReference.h:
+        * svg/SVGUseElement.cpp:
+        (WebCore::SVGUseElement::SVGUseElement):
+        * svg/SVGUseElement.h:
+        (WebCore::SVGUseElement::contextElement):
+        * svg/SVGViewElement.h:
+        (WebCore::SVGViewElement::contextElement):
+        * svg/SVGViewSpec.cpp:
+        * svg/SVGViewSpec.h:
+
 2008-04-03  Holger Hans Peter Freyther  <holger.freyther@trolltech.com>
 
         Reviewed by Simon.
diff --git a/WebCore/dom/Element.h b/WebCore/dom/Element.h
index 4b5ed6d..fbb73c4 100644
--- a/WebCore/dom/Element.h
+++ b/WebCore/dom/Element.h
@@ -44,7 +44,7 @@
 
     const AtomicString& getIDAttribute() const;
     bool hasAttribute(const QualifiedName&) const;
-    virtual const AtomicString& getAttribute(const QualifiedName&) const;
+    const AtomicString& getAttribute(const QualifiedName&) const;
     void setAttribute(const QualifiedName&, const AtomicString& value, ExceptionCode&);
     void removeAttribute(const QualifiedName&, ExceptionCode&);
 
@@ -53,7 +53,7 @@
     bool hasAttribute(const String& name) const;
     bool hasAttributeNS(const String& namespaceURI, const String& localName) const;
 
-    virtual const AtomicString& getAttribute(const String& name) const;
+    const AtomicString& getAttribute(const String& name) const;
     const AtomicString& getAttributeNS(const String& namespaceURI, const String& localName) const;
 
     void setAttribute(const AtomicString& name, const AtomicString& value, ExceptionCode&);
diff --git a/WebCore/dom/NamedAttrMap.h b/WebCore/dom/NamedAttrMap.h
index f0d5bbd..52e385a 100644
--- a/WebCore/dom/NamedAttrMap.h
+++ b/WebCore/dom/NamedAttrMap.h
@@ -90,11 +90,11 @@
     
     bool mapsEquivalent(const NamedAttrMap* otherMap) const;
 
+protected:
     // These functions are internal, and do no error checking.
     void addAttribute(PassRefPtr<Attribute>);
     void removeAttribute(const QualifiedName& name);
 
-protected:
     virtual void clearAttributes();
 
     void detachFromElement();
diff --git a/WebCore/rendering/SVGRootInlineBox.cpp b/WebCore/rendering/SVGRootInlineBox.cpp
index 9b5ff63..ca60ba7 100644
--- a/WebCore/rendering/SVGRootInlineBox.cpp
+++ b/WebCore/rendering/SVGRootInlineBox.cpp
@@ -319,41 +319,6 @@
     return FloatPoint(lowX, lowY);
 }
 
-static inline SVGTextContentElement* nodeToTextContentElement(Node* node)
-{
-    if (!node || !node->isSVGElement())
-        return 0;
-
-    if (node->hasTagName(SVGNames::textTag)
-        || node->hasTagName(SVGNames::trefTag)
-        || node->hasTagName(SVGNames::tspanTag)
-        || node->hasTagName(SVGNames::textPathTag)
-#if ENABLE(SVG_FONTS)
-        || node->hasTagName(SVGNames::altGlyphTag)
-#endif
-        )
-         return static_cast<SVGTextContentElement*>(node);
-
-    return 0;
-}
-
-static inline SVGTextPositioningElement* nodeToTextPositioningElement(Node* node)
-{
-    if (!node || !node->isSVGElement())
-        return 0;
-
-    if (node->hasTagName(SVGNames::textTag)
-        || node->hasTagName(SVGNames::trefTag)
-        || node->hasTagName(SVGNames::tspanTag)
-#if ENABLE(SVG_FONTS)
-        || node->hasTagName(SVGNames::altGlyphTag)
-#endif
-        )
-         return static_cast<SVGTextPositioningElement*>(node);
-
-    return 0;
-}
-
 // Helper function
 static float calculateKerning(RenderObject* item)
 {
@@ -934,7 +899,7 @@
     if (start->isRootInlineBox()) {
         ASSERT(start->object()->element()->hasTagName(SVGNames::textTag));
 
-        SVGTextPositioningElement* positioningElement = nodeToTextPositioningElement(start->object()->element());
+        SVGTextPositioningElement* positioningElement = static_cast<SVGTextPositioningElement*>(start->object()->element());
         ASSERT(positioningElement);
         ASSERT(positioningElement->parentNode());
 
@@ -954,7 +919,7 @@
             bool isTextPath = flowBox->object()->element()->hasTagName(SVGNames::textPathTag);
 
             if (!isTextPath && !isAnchor) {
-                SVGTextPositioningElement* positioningElement = nodeToTextPositioningElement(flowBox->object()->element());
+                SVGTextPositioningElement* positioningElement = static_cast<SVGTextPositioningElement*>(flowBox->object()->element());
                 ASSERT(positioningElement);
                 ASSERT(positioningElement->parentNode());
 
@@ -963,7 +928,10 @@
                 info.setInPathLayout(true);
 
                 // Handle text-anchor/textLength on path, which is special.
-                SVGTextContentElement* textContent = nodeToTextContentElement(flowBox->object()->element());
+                SVGTextContentElement* textContent = 0;
+                Node* node = flowBox->object()->element();
+                if (node && node->isSVGElement())
+                    textContent = static_cast<SVGTextContentElement*>(node);
                 ASSERT(textContent);
 
                 ELengthAdjust lengthAdjust = (ELengthAdjust) textContent->lengthAdjust();
@@ -1410,15 +1378,11 @@
             ASSERT(text);
             ASSERT(text->element());
 
-            SVGTextContentElement* textContent = nodeToTextContentElement(text->element()->parent());
-            if (!textContent) {
-                // text->element()->parent() can point to a <a> element. Ask for its parent.
-                textContent = nodeToTextContentElement(text->element()->parent()->parent());
-                ASSERT(textContent);
-            }
-
-            if (!textContent)
-                continue;
+            SVGTextContentElement* textContent = 0;
+            Node* node = text->element()->parent();
+            if (node && node->isSVGElement())
+                textContent = static_cast<SVGTextContentElement*>(node);
+            ASSERT(textContent);
 
             // Start new character range for the first chunk
             bool isFirstCharacter = info.svgTextChunks.isEmpty() && info.chunk.start == info.it && info.chunk.start == info.chunk.end;
diff --git a/WebCore/svg/SVGAElement.h b/WebCore/svg/SVGAElement.h
index d5a85da..a1509fd 100644
--- a/WebCore/svg/SVGAElement.h
+++ b/WebCore/svg/SVGAElement.h
@@ -61,11 +61,11 @@
         virtual bool childShouldCreateRenderer(Node*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGAElement, SVGURIReference, String, Href, href)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGAElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGAElement, String, String, Target, target)
     };
diff --git a/WebCore/svg/SVGAltGlyphElement.h b/WebCore/svg/SVGAltGlyphElement.h
index d2a9a63..2361049 100644
--- a/WebCore/svg/SVGAltGlyphElement.h
+++ b/WebCore/svg/SVGAltGlyphElement.h
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org>
+    Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
                   2004, 2005, 2006 Rob Buis <buis@kde.org>
     Copyright (C) 2008 Apple Computer, Inc.
 
@@ -21,18 +21,17 @@
 
 #ifndef SVGAltGlyphElement_h
 #define SVGAltGlyphElement_h
-
 #if ENABLE(SVG_FONTS)
+
 #include "AtomicString.h"
 #include "SVGTextPositioningElement.h"
 #include "SVGURIReference.h"
 
-namespace WebCore {
-
+namespace WebCore
+{
     class SVGGlyphElement;
 
-    class SVGAltGlyphElement : public SVGTextPositioningElement,
-                               public SVGURIReference
+    class SVGAltGlyphElement : public SVGTextPositioningElement, public SVGURIReference
     {
     public:
         SVGAltGlyphElement(const QualifiedName&, Document*);
@@ -49,10 +48,12 @@
         SVGGlyphElement* glyphElement() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
     };
 
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGAnimateColorElement.h b/WebCore/svg/SVGAnimateColorElement.h
index b8947da..1a9a841 100644
--- a/WebCore/svg/SVGAnimateColorElement.h
+++ b/WebCore/svg/SVGAnimateColorElement.h
@@ -42,7 +42,7 @@
         virtual void applyAnimatedValueToElement();
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         
         virtual bool updateAnimatedValue(EAnimationMode, float timePercentage, unsigned valueIndex, float percentagePast);
         virtual bool calculateFromAndToValues(EAnimationMode, unsigned valueIndex);
diff --git a/WebCore/svg/SVGAnimateElement.h b/WebCore/svg/SVGAnimateElement.h
index eabb36d..2b7cf14 100644
--- a/WebCore/svg/SVGAnimateElement.h
+++ b/WebCore/svg/SVGAnimateElement.h
@@ -35,7 +35,7 @@
         virtual ~SVGAnimateElement();
     
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         
         virtual bool updateAnimatedValue(EAnimationMode, float timePercentage, unsigned valueIndex, float percentagePast) { return false; }
         virtual bool calculateFromAndToValues(EAnimationMode, unsigned valueIndex) { return false; }
diff --git a/WebCore/svg/SVGAnimateMotionElement.h b/WebCore/svg/SVGAnimateMotionElement.h
index 5d27527..6d9632c 100644
--- a/WebCore/svg/SVGAnimateMotionElement.h
+++ b/WebCore/svg/SVGAnimateMotionElement.h
@@ -44,7 +44,7 @@
         Path animationPath();
         
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         
         virtual bool updateAnimatedValue(EAnimationMode, float timePercentage, unsigned valueIndex, float percentagePast);
         virtual bool calculateFromAndToValues(EAnimationMode, unsigned valueIndex);
diff --git a/WebCore/svg/SVGAnimateTransformElement.h b/WebCore/svg/SVGAnimateTransformElement.h
index 2ba51dd..520e927 100644
--- a/WebCore/svg/SVGAnimateTransformElement.h
+++ b/WebCore/svg/SVGAnimateTransformElement.h
@@ -46,7 +46,7 @@
         virtual void applyAnimatedValueToElement();
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         
         virtual bool updateAnimatedValue(EAnimationMode, float timePercentage, unsigned valueIndex, float percentagePast);
         virtual bool calculateFromAndToValues(EAnimationMode, unsigned valueIndex);
diff --git a/WebCore/svg/SVGAnimatedTemplate.h b/WebCore/svg/SVGAnimatedTemplate.h
index e20856e..20c508e 100644
--- a/WebCore/svg/SVGAnimatedTemplate.h
+++ b/WebCore/svg/SVGAnimatedTemplate.h
@@ -24,21 +24,22 @@
 #define SVGAnimatedTemplate_h
 
 #if ENABLE(SVG)
-#include "AtomicString.h"
-#include "FloatRect.h"
-#include "Attribute.h"
-#include "SVGAngle.h"
-#include "SVGLength.h"
-#include "SVGLengthList.h"
-#include "SVGNumberList.h"
-#include "SVGTransformList.h"
-#include "SVGPreserveAspectRatio.h"
-
 #include <wtf/RefCounted.h>
+#include "AtomicString.h"
+#include "Attribute.h"
 
 namespace WebCore {
 
+    class FloatRect;
+    class SVGAngle;
     class SVGElement;
+    class SVGLength;
+    class SVGLengthList;
+    class SVGNumberList;
+    class SVGPreserveAspectRatio;
+    class SVGTransformList;
+    class String;
+    class QualifiedName;
 
     struct SVGAnimatedTypeWrapperKey {            
         // Empty value
@@ -118,8 +119,6 @@
         virtual BareType animVal() const = 0;
         virtual void setAnimVal(BareType newAnimVal) = 0;
 
-        virtual AtomicString toString() const { ASSERT_NOT_REACHED(); return AtomicString(); }
-
         typedef HashMap<SVGAnimatedTypeWrapperKey, SVGAnimatedTemplate<BareType>*, SVGAnimatedTypeWrapperKeyHash, SVGAnimatedTypeWrapperKeyHashTraits > ElementToWrapperMap;
         typedef typename ElementToWrapperMap::const_iterator ElementToWrapperMapIterator;
 
@@ -128,7 +127,7 @@
             static ElementToWrapperMap* s_wrapperCache = new ElementToWrapperMap;                
             return s_wrapperCache;
         }
-
+        
         static void forgetWrapper(SVGAnimatedTemplate<BareType>* wrapper)
         {
             ElementToWrapperMap* cache = wrapperCache();
@@ -142,196 +141,36 @@
             }
         }
 
-        const QualifiedName& associatedAttributeName() const { return m_associatedAttributeName; }
+       const QualifiedName& associatedAttributeName() const { return m_associatedAttributeName; }
 
     private:
-        const QualifiedName& m_associatedAttributeName;
+       const QualifiedName& m_associatedAttributeName;
     };
 
     template <class Type, class SVGElementSubClass>
-    Type* lookupOrCreateWrapper(SVGElementSubClass* element, const QualifiedName& domAttrName,
-                                const AtomicString& attrIdentifier, void (SVGElement::*synchronizer)()) {
+    Type* lookupOrCreateWrapper(const SVGElementSubClass* element, const QualifiedName& domAttrName, const AtomicString& attrIdentifier) {
         SVGAnimatedTypeWrapperKey key(element, attrIdentifier);
         Type* wrapper = static_cast<Type*>(Type::wrapperCache()->get(key));
-        if (wrapper)
-            return wrapper;
-
-        wrapper = new Type(element, domAttrName);
-        element->addSVGPropertySynchronizer(domAttrName, synchronizer);
-
-        Type::wrapperCache()->set(key, wrapper);
+        if (!wrapper) {
+            wrapper = new Type(element, domAttrName);
+            Type::wrapperCache()->set(key, wrapper);
+        }
         return wrapper;
     }
 
-    // Define SVG 1.1 standard animated properties (these SVGAnimated* classes area slo able to convert themselves to strings)
-    // Note: If we'd just specialize the SVGAnimatedTemplate<> we'd have to duplicate a lot of code above. Hence choosing
-    // the solution, to inherit from the SVGAnimatedTemplate<> classes, and implementing the virtual toString() function.
-    class SVGAnimatedAngle : public SVGAnimatedTemplate<SVGAngle*> {
-    public:
-        SVGAnimatedAngle(const QualifiedName& attributeName) : SVGAnimatedTemplate<SVGAngle*>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            if (SVGAngle* angle = baseVal())
-                return angle->valueAsString();
-
-            return nullAtom;
-        }
-    };
-
-    class SVGAnimatedBoolean : public SVGAnimatedTemplate<bool> {
-    public:
-        SVGAnimatedBoolean(const QualifiedName& attributeName) : SVGAnimatedTemplate<bool>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            return baseVal() ? "true" : "false";
-        }
-    };
-
-    class SVGAnimatedEnumeration : public SVGAnimatedTemplate<int> {
-    public:
-        SVGAnimatedEnumeration(const QualifiedName& attributeName) : SVGAnimatedTemplate<int>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            return String::number(baseVal());
-        }
-    };
-
-    class SVGAnimatedInteger : public SVGAnimatedTemplate<long> {
-    public:
-        SVGAnimatedInteger(const QualifiedName& attributeName) : SVGAnimatedTemplate<long>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            return String::number(baseVal());
-        }
-    };
-
-    class SVGAnimatedLength : public SVGAnimatedTemplate<SVGLength> {
-    public:
-        SVGAnimatedLength(const QualifiedName& attributeName) : SVGAnimatedTemplate<SVGLength>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            return baseVal().valueAsString();
-        }
-    };
-
-    class SVGAnimatedLengthList : public SVGAnimatedTemplate<SVGLengthList*> {
-    public:
-        SVGAnimatedLengthList(const QualifiedName& attributeName) : SVGAnimatedTemplate<SVGLengthList*>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            if (SVGLengthList* list = baseVal())
-                return list->valueAsString();
-
-            return nullAtom;
-        }
-    };
-
-    class SVGAnimatedNumber : public SVGAnimatedTemplate<float> {
-    public:
-        SVGAnimatedNumber(const QualifiedName& attributeName) : SVGAnimatedTemplate<float>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            return String::number(baseVal());
-        }
-    };
-
-    class SVGAnimatedNumberList : public SVGAnimatedTemplate<SVGNumberList*> {
-    public:
-        SVGAnimatedNumberList(const QualifiedName& attributeName) : SVGAnimatedTemplate<SVGNumberList*>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            if (SVGNumberList* list = baseVal())
-                return list->valueAsString();
-
-            return nullAtom;
-        }
-    };
-
-    class SVGAnimatedPreserveAspectRatio : public SVGAnimatedTemplate<SVGPreserveAspectRatio*> {
-    public:
-        SVGAnimatedPreserveAspectRatio(const QualifiedName& attributeName) : SVGAnimatedTemplate<SVGPreserveAspectRatio*>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            if (SVGPreserveAspectRatio* ratio = baseVal())
-                return ratio->valueAsString();
-
-            return nullAtom;
-        }
-    };
-
-    class SVGAnimatedRect : public SVGAnimatedTemplate<FloatRect> {
-    public:
-        SVGAnimatedRect(const QualifiedName& attributeName) : SVGAnimatedTemplate<FloatRect>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            FloatRect rect = baseVal();
-            return String::format("%f %f %f %f", rect.x(), rect.y(), rect.width(), rect.height());
-        }
-    };
-
-    class SVGAnimatedString : public SVGAnimatedTemplate<String> {
-    public:
-        SVGAnimatedString(const QualifiedName& attributeName) : SVGAnimatedTemplate<String>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            return baseVal();
-        }
-    };
-
-    class SVGAnimatedTransformList : public SVGAnimatedTemplate<SVGTransformList*> {
-    public:
-        SVGAnimatedTransformList(const QualifiedName& attributeName) : SVGAnimatedTemplate<SVGTransformList*>(attributeName) { }
-
-        virtual AtomicString toString() const
-        {
-            if (SVGTransformList* list = baseVal())
-                return list->valueAsString();
-
-            return nullAtom;
-        }
-    };
-
-    // Helper for ANIMATED_PROPERTY* macros, whose helper classes SVGAnimatedTemplate##UpperProperty.. can't
-    // inherit from SVGAnimatedTemplate<xxx> as they rely on a working toString() implementation. So instead
-    // create a new helper type SVGAnimatedType, which gets specialized for the support datatypes and in turn inherits
-    // from the SVGAnimatedTEmplate<xxx> macros. Looks a bit complicated, but makes sense if you check the macros.
-    template<typename T>
-    class SVGAnimatedType : public SVGAnimatedTemplate<T> {
-    public:
-        SVGAnimatedType(const QualifiedName& attributeName) : SVGAnimatedTemplate<T>(attributeName) { ASSERT_NOT_REACHED(); }
-    };
-
-#define ADD_ANIMATED_TYPE_HELPER(DataType, SuperClass) \
-    template<> \
-    class SVGAnimatedType<DataType> : public SuperClass { \
-    public: \
-        SVGAnimatedType(const QualifiedName& attributeName) : SuperClass(attributeName) { } \
-    };
-
-    ADD_ANIMATED_TYPE_HELPER(SVGAngle*, SVGAnimatedAngle)
-    ADD_ANIMATED_TYPE_HELPER(bool, SVGAnimatedBoolean)
-    ADD_ANIMATED_TYPE_HELPER(int, SVGAnimatedEnumeration)
-    ADD_ANIMATED_TYPE_HELPER(long, SVGAnimatedInteger)
-    ADD_ANIMATED_TYPE_HELPER(SVGLength, SVGAnimatedLength)
-    ADD_ANIMATED_TYPE_HELPER(SVGLengthList*, SVGAnimatedLengthList)
-    ADD_ANIMATED_TYPE_HELPER(float, SVGAnimatedNumber)
-    ADD_ANIMATED_TYPE_HELPER(SVGNumberList*, SVGAnimatedNumberList)
-    ADD_ANIMATED_TYPE_HELPER(SVGPreserveAspectRatio*, SVGAnimatedPreserveAspectRatio)
-    ADD_ANIMATED_TYPE_HELPER(FloatRect, SVGAnimatedRect)
-    ADD_ANIMATED_TYPE_HELPER(String, SVGAnimatedString)
-    ADD_ANIMATED_TYPE_HELPER(SVGTransformList*, SVGAnimatedTransformList)
-
+    // Common type definitions, to ease IDL generation...
+    typedef SVGAnimatedTemplate<SVGAngle*> SVGAnimatedAngle;
+    typedef SVGAnimatedTemplate<bool> SVGAnimatedBoolean;
+    typedef SVGAnimatedTemplate<int> SVGAnimatedEnumeration;
+    typedef SVGAnimatedTemplate<long> SVGAnimatedInteger;
+    typedef SVGAnimatedTemplate<SVGLength> SVGAnimatedLength;
+    typedef SVGAnimatedTemplate<SVGLengthList*> SVGAnimatedLengthList;
+    typedef SVGAnimatedTemplate<float> SVGAnimatedNumber;
+    typedef SVGAnimatedTemplate<SVGNumberList*> SVGAnimatedNumberList; 
+    typedef SVGAnimatedTemplate<SVGPreserveAspectRatio*> SVGAnimatedPreserveAspectRatio;
+    typedef SVGAnimatedTemplate<FloatRect> SVGAnimatedRect;
+    typedef SVGAnimatedTemplate<String> SVGAnimatedString;
+    typedef SVGAnimatedTemplate<SVGTransformList*> SVGAnimatedTransformList;
 }
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGAnimationElement.h b/WebCore/svg/SVGAnimationElement.h
index 62ad1f8..6517d87 100644
--- a/WebCore/svg/SVGAnimationElement.h
+++ b/WebCore/svg/SVGAnimationElement.h
@@ -151,8 +151,7 @@
         static void parseKeyNumbers(Vector<float>& keyNumbers, const String& value);
         static void parseBeginOrEndValue(double& number, const String& value);
 
-        ANIMATED_PROPERTY_START_DECLARATIONS(SVGAnimationElement)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGAnimationElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
 
         bool m_connectedToTimer : 1;
         
diff --git a/WebCore/svg/SVGCircleElement.h b/WebCore/svg/SVGCircleElement.h
index b41bec5..2e0e8c8 100644
--- a/WebCore/svg/SVGCircleElement.h
+++ b/WebCore/svg/SVGCircleElement.h
@@ -47,11 +47,11 @@
         virtual Path toPathData() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         virtual bool hasRelativeValues() const;
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGCircleElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGCircleElement, SVGLength, SVGLength, Cx, cx)
         ANIMATED_PROPERTY_DECLARATIONS(SVGCircleElement, SVGLength, SVGLength, Cy, cy)
diff --git a/WebCore/svg/SVGClipPathElement.h b/WebCore/svg/SVGClipPathElement.h
index bce0d6b..845aea6 100644
--- a/WebCore/svg/SVGClipPathElement.h
+++ b/WebCore/svg/SVGClipPathElement.h
@@ -51,10 +51,11 @@
         virtual SVGResource* canvasResource();
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGClipPathElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+
         ANIMATED_PROPERTY_DECLARATIONS(SVGClipPathElement, int, int, ClipPathUnits, clipPathUnits)
 
         RefPtr<SVGResourceClipper> m_clipper;
diff --git a/WebCore/svg/SVGComponentTransferFunctionElement.cpp b/WebCore/svg/SVGComponentTransferFunctionElement.cpp
index 3aa6c59..e0872a7 100644
--- a/WebCore/svg/SVGComponentTransferFunctionElement.cpp
+++ b/WebCore/svg/SVGComponentTransferFunctionElement.cpp
@@ -48,7 +48,7 @@
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGComponentTransferFunctionElement, int, Enumeration, enumeration, Type, type, SVGNames::typeAttr, m_type)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGComponentTransferFunctionElement, SVGNumberList, NumberList, numberList, TableValues, tableValues, SVGNames::tableValuesAttr, m_tableValues)
+ANIMATED_PROPERTY_DEFINITIONS(SVGComponentTransferFunctionElement, SVGNumberList*, NumberList, numberList, TableValues, tableValues, SVGNames::tableValuesAttr, m_tableValues.get())
 ANIMATED_PROPERTY_DEFINITIONS(SVGComponentTransferFunctionElement, float, Number, number, Slope, slope, SVGNames::slopeAttr, m_slope)
 ANIMATED_PROPERTY_DEFINITIONS(SVGComponentTransferFunctionElement, float, Number, number, Intercept, intercept, SVGNames::interceptAttr, m_intercept)
 ANIMATED_PROPERTY_DEFINITIONS(SVGComponentTransferFunctionElement, float, Number, number, Amplitude, amplitude, SVGNames::amplitudeAttr, m_amplitude)
diff --git a/WebCore/svg/SVGComponentTransferFunctionElement.h b/WebCore/svg/SVGComponentTransferFunctionElement.h
index d3d4e32..eadff18 100644
--- a/WebCore/svg/SVGComponentTransferFunctionElement.h
+++ b/WebCore/svg/SVGComponentTransferFunctionElement.h
@@ -44,7 +44,6 @@
         SVGComponentTransferFunction transferFunction() const;
 
     private:
-        ANIMATED_PROPERTY_START_DECLARATIONS(SVGComponentTransferFunctionElement)
         ANIMATED_PROPERTY_DECLARATIONS(SVGComponentTransferFunctionElement, int, int, Type, type)
         ANIMATED_PROPERTY_DECLARATIONS(SVGComponentTransferFunctionElement, SVGNumberList*, RefPtr<SVGNumberList>, TableValues, tableValues)
         ANIMATED_PROPERTY_DECLARATIONS(SVGComponentTransferFunctionElement, float, float, Slope, slope)
diff --git a/WebCore/svg/SVGCursorElement.cpp b/WebCore/svg/SVGCursorElement.cpp
index 2dad6b8..ec1c994 100644
--- a/WebCore/svg/SVGCursorElement.cpp
+++ b/WebCore/svg/SVGCursorElement.cpp
@@ -36,8 +36,8 @@
     , SVGTests()
     , SVGExternalResourcesRequired()
     , SVGURIReference()
-    , m_x(SVGLength(0, LengthModeWidth))
-    , m_y(SVGLength(0, LengthModeHeight))
+    , m_x(0, LengthModeWidth)
+    , m_y(0, LengthModeHeight)
 {
 }
 
diff --git a/WebCore/svg/SVGCursorElement.h b/WebCore/svg/SVGCursorElement.h
index 63996e4..a646a9a 100644
--- a/WebCore/svg/SVGCursorElement.h
+++ b/WebCore/svg/SVGCursorElement.h
@@ -51,13 +51,12 @@
         virtual void getSubresourceAttributeStrings(Vector<String>&) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGCursorElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGCursorElement, SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
 
-        ANIMATED_PROPERTY_START_DECLARATIONS(SVGCursorElement)
         ANIMATED_PROPERTY_DECLARATIONS(SVGCursorElement, SVGLength, SVGLength, X, x)
         ANIMATED_PROPERTY_DECLARATIONS(SVGCursorElement, SVGLength, SVGLength, Y, y)
 
diff --git a/WebCore/svg/SVGDefsElement.h b/WebCore/svg/SVGDefsElement.h
index 85c796d..8113a99 100644
--- a/WebCore/svg/SVGDefsElement.h
+++ b/WebCore/svg/SVGDefsElement.h
@@ -44,10 +44,10 @@
         virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
     
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGDefsElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGElement.cpp b/WebCore/svg/SVGElement.cpp
index e6c6746..41a62c3 100644
--- a/WebCore/svg/SVGElement.cpp
+++ b/WebCore/svg/SVGElement.cpp
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
+    Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
                   2004, 2005, 2006 Rob Buis <buis@kde.org>
 
     This file is part of the KDE project
@@ -254,18 +254,6 @@
     svgAttributeChanged(attr->name());
 }
 
-const AtomicString& SVGElement::getAttribute(const String& name) const
-{
-    invokeSVGPropertySynchronizer(name.impl());
-    return StyledElement::getAttribute(name);
-}
-
-const AtomicString& SVGElement::getAttribute(const QualifiedName& name) const
-{
-    invokeSVGPropertySynchronizer(name.localName().impl());
-    return StyledElement::getAttribute(name);
-}
-
 }
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGElement.h b/WebCore/svg/SVGElement.h
index cf80957..a4672be 100644
--- a/WebCore/svg/SVGElement.h
+++ b/WebCore/svg/SVGElement.h
@@ -31,99 +31,30 @@
 #include "SVGDocumentExtensions.h"
 #include "SVGNames.h"
 
-// Helper class for ANIMATED_PROPERTY* macros
-template<typename StoredType>
-class LazilyUpdatedType {
-public:
-    LazilyUpdatedType()
-        : value()
-        , dirty(false)
-    {
-    }
-
-    LazilyUpdatedType(const StoredType& other)
-        : value(other)
-        , dirty(false)
-    {
-    }
-
-    LazilyUpdatedType(const LazilyUpdatedType& other)
-        : value(other.value)
-        , dirty(other.dirty)
-    {
-    }
-
-    StoredType& operator=(const StoredType& other)
-    {
-        value = other;
-        dirty = true;
-        return value;
-    }
-
-    LazilyUpdatedType& operator=(const LazilyUpdatedType& other)
-    {
-        value = other.value;
-        dirty = other.dirty;
-        return (*this);
-    }
-
-    bool operator==(const StoredType& other) const
-    {
-        return value == other.value;
-    }
-
-    bool operator!=(const StoredType& other) const
-    {
-        return !((*this) == other);
-    }
-
-    bool operator==(const LazilyUpdatedType& other) const
-    {
-        return dirty == other.dirty && value == other.value;
-    }
-
-    bool operator!=(const LazilyUpdatedType& other) const
-    {
-        return !((*this) == other);
-    }
-
-    operator StoredType() const
-    {
-        return value;    
-    }
-
-    StoredType value;
-    bool dirty;
-};
-
 #define ANIMATED_PROPERTY_EMPTY_DECLARATIONS(BareType, NullType, UpperProperty, LowerProperty) \
 public: \
     virtual BareType LowerProperty() const { ASSERT_NOT_REACHED(); return NullType; } \
     virtual void set##UpperProperty(BareType newValue) { ASSERT_NOT_REACHED(); }\
     virtual BareType LowerProperty##BaseValue() const { ASSERT_NOT_REACHED(); return NullType; } \
     virtual void set##UpperProperty##BaseValue(BareType newValue) { ASSERT_NOT_REACHED(); } \
-    virtual void synchronize##UpperProperty() { ASSERT_NOT_REACHED(); } \
-    virtual SVGElement::AnimatedPropertySynchronizer synchronizerFor##UpperProperty() { ASSERT_NOT_REACHED(); return 0; } \
-    virtual void start##UpperProperty() { ASSERT_NOT_REACHED(); } \
+    virtual void start##UpperProperty() const { ASSERT_NOT_REACHED(); } \
     virtual void stop##UpperProperty() { ASSERT_NOT_REACHED(); }
 
-#define ANIMATED_PROPERTY_FORWARD_DECLARATIONS(ClassType, ForwardClass, BareType, UpperProperty, LowerProperty) \
+#define ANIMATED_PROPERTY_FORWARD_DECLARATIONS(ForwardClass, BareType, UpperProperty, LowerProperty) \
 public: \
     virtual BareType LowerProperty() const { return ForwardClass::LowerProperty(); } \
     virtual void set##UpperProperty(BareType newValue) { ForwardClass::set##UpperProperty(newValue); } \
     virtual BareType LowerProperty##BaseValue() const { return ForwardClass::LowerProperty##BaseValue(); } \
     virtual void set##UpperProperty##BaseValue(BareType newValue) { ForwardClass::set##UpperProperty##BaseValue(newValue); } \
-    virtual void synchronize##UpperProperty() { ForwardClass::synchronize##UpperProperty(); } \
-    virtual SVGElement::AnimatedPropertySynchronizer synchronizerFor##UpperProperty() { return static_cast<SVGElement::AnimatedPropertySynchronizer>(&ClassType::synchronize##UpperProperty); } \
-    virtual void start##UpperProperty() { ForwardClass::start##UpperProperty(); } \
+    virtual void start##UpperProperty() const { ForwardClass::start##UpperProperty(); } \
     virtual void stop##UpperProperty() { ForwardClass::stop##UpperProperty(); }
 
 #define ANIMATED_PROPERTY_DECLARATIONS_INTERNAL(ClassType, ClassStorageType, BareType, StorageType, UpperProperty, LowerProperty) \
 class SVGAnimatedTemplate##UpperProperty \
-: public SVGAnimatedType<BareType> \
+: public SVGAnimatedTemplate<BareType> \
 { \
 public: \
-    SVGAnimatedTemplate##UpperProperty(ClassType*, const QualifiedName&); \
+    SVGAnimatedTemplate##UpperProperty(const ClassType*, const QualifiedName&); \
     virtual ~SVGAnimatedTemplate##UpperProperty() { } \
     virtual BareType baseVal() const; \
     virtual void setBaseVal(BareType); \
@@ -138,36 +69,16 @@
     void set##UpperProperty(BareType); \
     BareType LowerProperty##BaseValue() const; \
     void set##UpperProperty##BaseValue(BareType); \
-    PassRefPtr<SVGAnimatedTemplate##UpperProperty> LowerProperty##Animated(); \
-    void synchronize##UpperProperty(); \
-    SVGElement::AnimatedPropertySynchronizer synchronizerFor##UpperProperty(); \
-    void start##UpperProperty(); \
+    PassRefPtr<SVGAnimatedTemplate##UpperProperty> LowerProperty##Animated() const; \
+    void start##UpperProperty() const; \
     void stop##UpperProperty(); \
 \
 private: \
-    LazilyUpdatedType<StorageType> m_##LowerProperty;
-
-#define ANIMATED_PROPERTY_START_DECLARATIONS(ClassType) \
-public: \
-    virtual void invokeSVGPropertySynchronizer(StringImpl* stringImpl) const \
-    { \
-        if (m_svgPropertyUpdateMap.contains(stringImpl)) { \
-            SVGElement::AnimatedPropertySynchronizer updateMethod = m_svgPropertyUpdateMap.get(stringImpl); \
-            (const_cast<ClassType*>(this)->*updateMethod)(); \
-        } \
-    } \
-\
-    virtual void addSVGPropertySynchronizer(const QualifiedName& attrName, SVGElement::AnimatedPropertySynchronizer method) \
-    { \
-        m_svgPropertyUpdateMap.set(attrName.localName().impl(), method); \
-    } \
-\
-private: \
-    HashMap<StringImpl*, SVGElement::AnimatedPropertySynchronizer> m_svgPropertyUpdateMap;
+    StorageType m_##LowerProperty;
 
 #define ANIMATED_PROPERTY_DEFINITIONS_INTERNAL(ClassName, ClassType, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, StorageGetter, ContextElement) \
-ClassName::SVGAnimatedTemplate##UpperProperty::SVGAnimatedTemplate##UpperProperty(ClassType* element, const QualifiedName& attributeName) \
-: SVGAnimatedType<BareType>(attributeName), m_element(element) { } \
+ClassName::SVGAnimatedTemplate##UpperProperty::SVGAnimatedTemplate##UpperProperty(const ClassType* element, const QualifiedName& attributeName) \
+: SVGAnimatedTemplate<BareType>(attributeName), m_element(const_cast<ClassType*>(element)) { } \
 \
 BareType ClassName::SVGAnimatedTemplate##UpperProperty::baseVal() const \
 { \
@@ -195,67 +106,46 @@
 } \
 BareType ClassName::LowerProperty##BaseValue() const \
 { \
-    SVGElement* context = ContextElement; \
+    const SVGElement* context = ContextElement; \
     ASSERT(context); \
     SVGDocumentExtensions* extensions = (context->document() ? context->document()->accessSVGExtensions() : 0); \
-    if (extensions && extensions->hasBaseValue<BareType>(context, AttrName.localName())) \
-         return extensions->baseValue<BareType>(context, AttrName.localName()); \
+    if (extensions && extensions->hasBaseValue<BareType>(context, AttrName)) \
+         return extensions->baseValue<BareType>(context, AttrName); \
     return LowerProperty(); \
 } \
-\
 void ClassName::set##UpperProperty##BaseValue(BareType newValue) \
 { \
-    SVGElement* context = ContextElement; \
+    const SVGElement* context = ContextElement; \
     ASSERT(context); \
     SVGDocumentExtensions* extensions = (context->document() ? context->document()->accessSVGExtensions() : 0); \
-    if (extensions && extensions->hasBaseValue<BareType>(context, AttrName.localName())) { \
-        extensions->setBaseValue<BareType>(context, AttrName.localName(), newValue); \
+    if (extensions && extensions->hasBaseValue<BareType>(context, AttrName)) { \
+        extensions->setBaseValue<BareType>(context, AttrName, newValue); \
         return; \
     } \
     /* Only update stored property, if not animating */ \
     set##UpperProperty(newValue); \
 } \
 \
-void ClassName::synchronize##UpperProperty() \
+void ClassName::start##UpperProperty() const \
 { \
-    if (!m_##LowerProperty.dirty) \
-        return; \
-    SVGElement* context = ContextElement; \
-    ASSERT(context); \
-    RefPtr<ClassName::SVGAnimatedTemplate##UpperProperty> animatedClass(LowerProperty##Animated()); \
-    AtomicString value(animatedClass->toString()); \
-    NamedAttrMap* namedAttrMap = context->attributes(false); \
-    ASSERT(!namedAttrMap->isReadOnlyNode()); \
-    Attribute* old = namedAttrMap->getAttributeItem(AttrName); \
-    if (old && value.isNull()) \
-        namedAttrMap->removeAttribute(old->name()); \
-    else if (!old && !value.isNull()) \
-        namedAttrMap->addAttribute(context->createAttribute(QualifiedName(nullAtom, AttrName.localName(), nullAtom), value.impl())); \
-    else if (old && !value.isNull()) \
-        old->setValue(value); \
-    m_##LowerProperty.dirty = false; \
-} \
-\
-void ClassName::start##UpperProperty() \
-{ \
-    SVGElement* context = ContextElement; \
+    const SVGElement* context = ContextElement; \
     ASSERT(context); \
     SVGDocumentExtensions* extensions = (context->document() ? context->document()->accessSVGExtensions() : 0); \
     if (extensions) { \
-        ASSERT(!extensions->hasBaseValue<BareType>(context, AttrName.localName())); \
-        extensions->setBaseValue<BareType>(context, AttrName.localName(), LowerProperty()); \
+        ASSERT(!extensions->hasBaseValue<BareType>(context, AttrName)); \
+        extensions->setBaseValue<BareType>(context, AttrName, LowerProperty()); \
     } \
 } \
 \
 void ClassName::stop##UpperProperty() \
 { \
-    SVGElement* context = ContextElement; \
+    const SVGElement* context = ContextElement; \
     ASSERT(context); \
     SVGDocumentExtensions* extensions = (context->document() ? context->document()->accessSVGExtensions() : 0); \
     if (extensions) { \
-        ASSERT(extensions->hasBaseValue<BareType>(context, AttrName.localName())); \
-        set##UpperProperty(extensions->baseValue<BareType>(context, AttrName.localName())); \
-        extensions->removeBaseValue<BareType>(context, AttrName.localName()); \
+        ASSERT(extensions->hasBaseValue<BareType>(context, AttrName)); \
+        set##UpperProperty(extensions->baseValue<BareType>(context, AttrName)); \
+        extensions->removeBaseValue<BareType>(context, AttrName); \
     } \
 }
 
@@ -267,44 +157,24 @@
 ANIMATED_PROPERTY_DECLARATIONS_INTERNAL(ClassName, RefPtr<ClassName>, BareType, StorageType, UpperProperty, LowerProperty)
 
 #define ANIMATED_PROPERTY_DEFINITIONS_WITH_CONTEXT(ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, StorageGetter) \
-ANIMATED_PROPERTY_DEFINITIONS_INTERNAL(ClassName, SVGElement, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, StorageGetter, const_cast<ClassName*>(this)->contextElement()) \
-PassRefPtr<ClassName::SVGAnimatedTemplate##UpperProperty> ClassName::LowerProperty##Animated() \
+ANIMATED_PROPERTY_DEFINITIONS_INTERNAL(ClassName, SVGElement, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName.localName(), StorageGetter, contextElement()) \
+PassRefPtr<ClassName::SVGAnimatedTemplate##UpperProperty> ClassName::LowerProperty##Animated() const \
 { \
-    SVGElement* context = contextElement(); \
+    const SVGElement* context = contextElement(); \
     ASSERT(context); \
-    return lookupOrCreateWrapper<ClassName::SVGAnimatedTemplate##UpperProperty, SVGElement>(context, AttrName, AttrName.localName(), context->synchronizerFor##UpperProperty()); \
-} \
-\
-SVGElement::AnimatedPropertySynchronizer ClassName::synchronizerFor##UpperProperty() \
-{ \
-    ASSERT_NOT_REACHED(); \
-    return 0; \
+    return lookupOrCreateWrapper<ClassName::SVGAnimatedTemplate##UpperProperty, SVGElement>(context, AttrName, AttrName.localName()); \
 }
 
-#define ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED_WITH_CONTEXT(ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, StorageGetter) \
-ANIMATED_PROPERTY_DEFINITIONS_WITH_CONTEXT(ClassName, BareType*, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, static_cast<RefPtr<BareType> >(StorageGetter).get())
-
 #define ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, AttrIdentifier, StorageGetter) \
-ANIMATED_PROPERTY_DEFINITIONS_INTERNAL(ClassName, ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, StorageGetter, const_cast<ClassName*>(this)) \
-PassRefPtr<ClassName::SVGAnimatedTemplate##UpperProperty> ClassName::LowerProperty##Animated() \
+ANIMATED_PROPERTY_DEFINITIONS_INTERNAL(ClassName, ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName.localName(), StorageGetter, this) \
+PassRefPtr<ClassName::SVGAnimatedTemplate##UpperProperty> ClassName::LowerProperty##Animated() const \
 { \
-    return lookupOrCreateWrapper<ClassName::SVGAnimatedTemplate##UpperProperty, ClassName>(this, AttrName, AttrIdentifier, synchronizerFor##UpperProperty()); \
-} \
-\
-SVGElement::AnimatedPropertySynchronizer ClassName::synchronizerFor##UpperProperty() \
-{ \
-    return static_cast<SVGElement::AnimatedPropertySynchronizer>(&ClassName::synchronize##UpperProperty); \
+    return lookupOrCreateWrapper<ClassName::SVGAnimatedTemplate##UpperProperty, ClassName>(this, AttrName, AttrIdentifier); \
 }
 
-#define ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED_WITH_CUSTOM_IDENTIFIER(ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, AttrIdentifier, StorageGetter) \
-ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(ClassName, BareType*, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, AttrIdentifier, static_cast<RefPtr<BareType> >(StorageGetter).get())
-
 #define ANIMATED_PROPERTY_DEFINITIONS(ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, StorageGetter) \
 ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, AttrName.localName(), StorageGetter)
 
-#define ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(ClassName, BareType, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, StorageGetter) \
-ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(ClassName, BareType*, UpperClassName, LowerClassName, UpperProperty, LowerProperty, AttrName, AttrName.localName(), static_cast<RefPtr<BareType> >(StorageGetter).get())
-
 namespace WebCore {
 
     class SVGPreserveAspectRatio;
@@ -350,17 +220,12 @@
         virtual void insertedIntoDocument();
         virtual void buildPendingResource() { }
 
-        virtual const AtomicString& getAttribute(const String&) const;
-        virtual const AtomicString& getAttribute(const QualifiedName&) const;
-
         virtual void svgAttributeChanged(const QualifiedName&) { }
         virtual void attributeChanged(Attribute*, bool preserveDecls = false);
 
         void sendSVGLoadEventIfPossible(bool sendParentLoadEvents = false);
-        virtual bool dispatchEvent(PassRefPtr<Event> e, ExceptionCode& ec, bool tempEvent = false);
 
         // Forwarded properties (declared/defined anywhere else in the inheritance structure)
-        typedef void (SVGElement::*AnimatedPropertySynchronizer)();
 
         // -> For SVGURIReference
         ANIMATED_PROPERTY_EMPTY_DECLARATIONS(String, String(), Href, href)
@@ -372,8 +237,7 @@
         // -> For SVGExternalResourcesRequired
         ANIMATED_PROPERTY_EMPTY_DECLARATIONS(bool, false, ExternalResourcesRequired, externalResourcesRequired)
 
-        virtual void invokeSVGPropertySynchronizer(StringImpl*) const { }
-        virtual void addSVGPropertySynchronizer(const QualifiedName&, AnimatedPropertySynchronizer) { ASSERT_NOT_REACHED(); }
+        virtual bool dispatchEvent(PassRefPtr<Event> e, ExceptionCode& ec, bool tempEvent = false);
 
     private:
         void addSVGEventListener(const AtomicString& eventType, const Attribute*);
diff --git a/WebCore/svg/SVGEllipseElement.cpp b/WebCore/svg/SVGEllipseElement.cpp
index a8d1bc4..0f32ed2 100644
--- a/WebCore/svg/SVGEllipseElement.cpp
+++ b/WebCore/svg/SVGEllipseElement.cpp
@@ -37,10 +37,10 @@
     , SVGTests()
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
-    , m_cx(SVGLength(this, LengthModeWidth))
-    , m_cy(SVGLength(this, LengthModeHeight))
-    , m_rx(SVGLength(this, LengthModeWidth))
-    , m_ry(SVGLength(this, LengthModeHeight))
+    , m_cx(this, LengthModeWidth)
+    , m_cy(this, LengthModeHeight)
+    , m_rx(this, LengthModeWidth)
+    , m_ry(this, LengthModeHeight)
 {
 }    
 
diff --git a/WebCore/svg/SVGEllipseElement.h b/WebCore/svg/SVGEllipseElement.h
index 473edb6..01e8ef5 100644
--- a/WebCore/svg/SVGEllipseElement.h
+++ b/WebCore/svg/SVGEllipseElement.h
@@ -47,11 +47,11 @@
         virtual Path toPathData() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         virtual bool hasRelativeValues() const;
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGEllipseElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
  
         ANIMATED_PROPERTY_DECLARATIONS(SVGEllipseElement, SVGLength, SVGLength, Cx, cx)
         ANIMATED_PROPERTY_DECLARATIONS(SVGEllipseElement, SVGLength, SVGLength, Cy, cy)
diff --git a/WebCore/svg/SVGExternalResourcesRequired.h b/WebCore/svg/SVGExternalResourcesRequired.h
index ca207b2..4078794 100644
--- a/WebCore/svg/SVGExternalResourcesRequired.h
+++ b/WebCore/svg/SVGExternalResourcesRequired.h
@@ -50,7 +50,7 @@
         bool isKnownAttribute(const QualifiedName&);
 
     protected:
-        virtual SVGElement* contextElement() = 0;
+        virtual const SVGElement* contextElement() const = 0;
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS_WITH_CONTEXT(SVGExternalResourcesRequired, bool, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGFEBlendElement.h b/WebCore/svg/SVGFEBlendElement.h
index 2d55cd9..88d2e6f 100644
--- a/WebCore/svg/SVGFEBlendElement.h
+++ b/WebCore/svg/SVGFEBlendElement.h
@@ -39,7 +39,7 @@
         virtual SVGFEBlend* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEBlendElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFEColorMatrixElement.cpp b/WebCore/svg/SVGFEColorMatrixElement.cpp
index 60ef0cf..d0648a8 100644
--- a/WebCore/svg/SVGFEColorMatrixElement.cpp
+++ b/WebCore/svg/SVGFEColorMatrixElement.cpp
@@ -46,7 +46,7 @@
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, String, String, string, In1, in1, SVGNames::inAttr, m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, int, Enumeration, enumeration, Type, type, SVGNames::typeAttr, m_type)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGFEColorMatrixElement, SVGNumberList, NumberList, numberList, Values, values, SVGNames::valuesAttr, m_values)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, SVGNumberList*, NumberList, numberList, Values, values, SVGNames::valuesAttr, m_values.get())
 
 void SVGFEColorMatrixElement::parseMappedAttribute(MappedAttribute* attr)
 {
diff --git a/WebCore/svg/SVGFEColorMatrixElement.h b/WebCore/svg/SVGFEColorMatrixElement.h
index bea19c6..0015002 100644
--- a/WebCore/svg/SVGFEColorMatrixElement.h
+++ b/WebCore/svg/SVGFEColorMatrixElement.h
@@ -41,7 +41,7 @@
         virtual SVGFEColorMatrix* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEColorMatrixElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFEComponentTransferElement.h b/WebCore/svg/SVGFEComponentTransferElement.h
index f52a54b..74827c5 100644
--- a/WebCore/svg/SVGFEComponentTransferElement.h
+++ b/WebCore/svg/SVGFEComponentTransferElement.h
@@ -40,7 +40,7 @@
         virtual SVGFEComponentTransfer* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEComponentTransferElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFECompositeElement.h b/WebCore/svg/SVGFECompositeElement.h
index 2426617..24fe6ae 100644
--- a/WebCore/svg/SVGFECompositeElement.h
+++ b/WebCore/svg/SVGFECompositeElement.h
@@ -40,7 +40,7 @@
         virtual SVGFEComposite* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFEDiffuseLightingElement.h b/WebCore/svg/SVGFEDiffuseLightingElement.h
index 9f80cc9..4d038b3 100644
--- a/WebCore/svg/SVGFEDiffuseLightingElement.h
+++ b/WebCore/svg/SVGFEDiffuseLightingElement.h
@@ -39,7 +39,7 @@
         virtual SVGFilterEffect* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFEDisplacementMapElement.h b/WebCore/svg/SVGFEDisplacementMapElement.h
index 0370e78..7f6a109 100644
--- a/WebCore/svg/SVGFEDisplacementMapElement.h
+++ b/WebCore/svg/SVGFEDisplacementMapElement.h
@@ -37,7 +37,7 @@
         virtual SVGFEDisplacementMap* filterEffect(SVGResourceFilter*) const;
         
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFEFloodElement.h b/WebCore/svg/SVGFEFloodElement.h
index 9010744..9094d5e 100644
--- a/WebCore/svg/SVGFEFloodElement.h
+++ b/WebCore/svg/SVGFEFloodElement.h
@@ -39,7 +39,7 @@
         virtual SVGFEFlood* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEFloodElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFEGaussianBlurElement.h b/WebCore/svg/SVGFEGaussianBlurElement.h
index 28ea8e6..c1e9292 100644
--- a/WebCore/svg/SVGFEGaussianBlurElement.h
+++ b/WebCore/svg/SVGFEGaussianBlurElement.h
@@ -42,7 +42,7 @@
         virtual SVGFEGaussianBlur* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEGaussianBlurElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFEImageElement.cpp b/WebCore/svg/SVGFEImageElement.cpp
index ac1e80d..052717d 100644
--- a/WebCore/svg/SVGFEImageElement.cpp
+++ b/WebCore/svg/SVGFEImageElement.cpp
@@ -54,7 +54,7 @@
         m_cachedImage->deref(this);
 }
 
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGFEImageElement, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, SVGNames::preserveAspectRatioAttr, m_preserveAspectRatio)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEImageElement, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, SVGNames::preserveAspectRatioAttr, m_preserveAspectRatio.get())
 
 void SVGFEImageElement::parseMappedAttribute(MappedAttribute* attr)
 {
diff --git a/WebCore/svg/SVGFEImageElement.h b/WebCore/svg/SVGFEImageElement.h
index 2da86a7..e977937 100644
--- a/WebCore/svg/SVGFEImageElement.h
+++ b/WebCore/svg/SVGFEImageElement.h
@@ -52,11 +52,11 @@
         virtual SVGFEImage* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFEImageElement, SVGURIReference, String, Href, href)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFEImageElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
  
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEImageElement, SVGPreserveAspectRatio*, RefPtr<SVGPreserveAspectRatio>, PreserveAspectRatio, preserveAspectRatio)
 
@@ -68,3 +68,5 @@
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGFELightElement.h b/WebCore/svg/SVGFELightElement.h
index 673472d..e0b28e7 100644
--- a/WebCore/svg/SVGFELightElement.h
+++ b/WebCore/svg/SVGFELightElement.h
@@ -40,7 +40,6 @@
         virtual void parseMappedAttribute(MappedAttribute*);
 
     private:
-        ANIMATED_PROPERTY_START_DECLARATIONS(SVGFELightElement)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFELightElement, float, float, Azimuth, azimuth)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFELightElement, float, float, Elevation, elevation)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFELightElement, float, float, X, x)
diff --git a/WebCore/svg/SVGFEMergeElement.h b/WebCore/svg/SVGFEMergeElement.h
index fffb39c..59898bb 100644
--- a/WebCore/svg/SVGFEMergeElement.h
+++ b/WebCore/svg/SVGFEMergeElement.h
@@ -38,7 +38,7 @@
         virtual SVGFEMerge* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         mutable SVGFEMerge* m_filterEffect;
diff --git a/WebCore/svg/SVGFEMergeNodeElement.h b/WebCore/svg/SVGFEMergeNodeElement.h
index 68ca5f3..c601fde 100644
--- a/WebCore/svg/SVGFEMergeNodeElement.h
+++ b/WebCore/svg/SVGFEMergeNodeElement.h
@@ -37,10 +37,9 @@
         virtual void parseMappedAttribute(MappedAttribute*);
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_START_DECLARATIONS(SVGFEMergeNodeElement)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEMergeNodeElement, String, String, In1, in1)
     };
 
diff --git a/WebCore/svg/SVGFEOffsetElement.h b/WebCore/svg/SVGFEOffsetElement.h
index 8794bb8..01ee9ea 100644
--- a/WebCore/svg/SVGFEOffsetElement.h
+++ b/WebCore/svg/SVGFEOffsetElement.h
@@ -40,7 +40,7 @@
         virtual SVGFEOffset* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEOffsetElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFESpecularLightingElement.h b/WebCore/svg/SVGFESpecularLightingElement.h
index c169884..435882e 100644
--- a/WebCore/svg/SVGFESpecularLightingElement.h
+++ b/WebCore/svg/SVGFESpecularLightingElement.h
@@ -40,7 +40,7 @@
         virtual SVGFESpecularLighting* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFETileElement.h b/WebCore/svg/SVGFETileElement.h
index d71710d..256e8a0 100644
--- a/WebCore/svg/SVGFETileElement.h
+++ b/WebCore/svg/SVGFETileElement.h
@@ -40,7 +40,7 @@
         virtual SVGFETile* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFETileElement, String, String, In1, in1)
diff --git a/WebCore/svg/SVGFETurbulenceElement.h b/WebCore/svg/SVGFETurbulenceElement.h
index 963d1c5..a62bf15 100644
--- a/WebCore/svg/SVGFETurbulenceElement.h
+++ b/WebCore/svg/SVGFETurbulenceElement.h
@@ -45,7 +45,7 @@
         virtual SVGFETurbulence* filterEffect(SVGResourceFilter*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFETurbulenceElement, float, float, BaseFrequencyX, baseFrequencyX)
diff --git a/WebCore/svg/SVGFilterElement.cpp b/WebCore/svg/SVGFilterElement.cpp
index 890d912..a7dacea 100644
--- a/WebCore/svg/SVGFilterElement.cpp
+++ b/WebCore/svg/SVGFilterElement.cpp
@@ -42,10 +42,10 @@
     , SVGExternalResourcesRequired()
     , m_filterUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
     , m_primitiveUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE)
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
     , m_filterResX(0)
     , m_filterResY(0)
 {
diff --git a/WebCore/svg/SVGFilterElement.h b/WebCore/svg/SVGFilterElement.h
index d892c1a..f2d9773a 100644
--- a/WebCore/svg/SVGFilterElement.h
+++ b/WebCore/svg/SVGFilterElement.h
@@ -51,11 +51,11 @@
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFilterElement, SVGURIReference, String, Href, href)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFilterElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
  
         ANIMATED_PROPERTY_DECLARATIONS(SVGFilterElement, int, int, FilterUnits, filterUnits)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFilterElement, int, int, PrimitiveUnits, primitiveUnits)
@@ -73,3 +73,5 @@
 
 #endif // ENABLE(SVG)
 #endif
+
+// vim:ts=4:noet
diff --git a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
index 4512db8..eae0434 100644
--- a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
+++ b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
@@ -36,10 +36,10 @@
 
 SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes(const QualifiedName& tagName, Document* doc)
     : SVGStyledElement(tagName, doc)
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
 {
     // Spec: If the attribute is not specified, the effect is as if a value of "0%" were specified.
     setXBaseValue(SVGLength(this, LengthModeWidth, "0%"));
diff --git a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
index 6259959..b639282 100644
--- a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
+++ b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
@@ -47,7 +47,7 @@
         void setStandardAttributes(SVGFilterEffect*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGFilterPrimitiveStandardAttributes, SVGLength, SVGLength, X, x)
diff --git a/WebCore/svg/SVGFitToViewBox.cpp b/WebCore/svg/SVGFitToViewBox.cpp
index 013cd07..2cf3dd7 100644
--- a/WebCore/svg/SVGFitToViewBox.cpp
+++ b/WebCore/svg/SVGFitToViewBox.cpp
@@ -46,7 +46,7 @@
 }
 
 ANIMATED_PROPERTY_DEFINITIONS_WITH_CONTEXT(SVGFitToViewBox, FloatRect, Rect, rect, ViewBox, viewBox, SVGNames::viewBoxAttr, m_viewBox)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED_WITH_CONTEXT(SVGFitToViewBox, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, SVGNames::preserveAspectRatioAttr, m_preserveAspectRatio)
+ANIMATED_PROPERTY_DEFINITIONS_WITH_CONTEXT(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, SVGNames::preserveAspectRatioAttr, m_preserveAspectRatio.get())
 
 bool SVGFitToViewBox::parseViewBox(const UChar*& c, const UChar* end, float& x, float& y, float& w, float& h, bool validate)
 {
diff --git a/WebCore/svg/SVGFitToViewBox.h b/WebCore/svg/SVGFitToViewBox.h
index bd62fec..16ea1c2 100644
--- a/WebCore/svg/SVGFitToViewBox.h
+++ b/WebCore/svg/SVGFitToViewBox.h
@@ -25,11 +25,11 @@
 
 #if ENABLE(SVG)
 #include "SVGElement.h"
-#include "SVGPreserveAspectRatio.h"
 
 namespace WebCore {
 
     class AffineTransform;
+    class SVGPreserveAspectRatio;
 
     class SVGFitToViewBox {
     public:
@@ -44,7 +44,7 @@
         bool isKnownAttribute(const QualifiedName&);
 
     protected:
-        virtual SVGElement* contextElement() = 0;
+        virtual const SVGElement* contextElement() const = 0;
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS_WITH_CONTEXT(SVGFitToViewBox, FloatRect, FloatRect, ViewBox, viewBox)
diff --git a/WebCore/svg/SVGFontElement.h b/WebCore/svg/SVGFontElement.h
index 4bf17e6..4d0370b 100644
--- a/WebCore/svg/SVGFontElement.h
+++ b/WebCore/svg/SVGFontElement.h
@@ -38,7 +38,7 @@
         virtual ~SVGFontElement();
 
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }    
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
         void invalidateGlyphCache();
 
diff --git a/WebCore/svg/SVGForeignObjectElement.cpp b/WebCore/svg/SVGForeignObjectElement.cpp
index 49fc464..d48a1f8 100644
--- a/WebCore/svg/SVGForeignObjectElement.cpp
+++ b/WebCore/svg/SVGForeignObjectElement.cpp
@@ -39,10 +39,10 @@
     , SVGTests()
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
 {
 }
 
diff --git a/WebCore/svg/SVGForeignObjectElement.h b/WebCore/svg/SVGForeignObjectElement.h
index 56144d4..f0c9830 100644
--- a/WebCore/svg/SVGForeignObjectElement.h
+++ b/WebCore/svg/SVGForeignObjectElement.h
@@ -49,11 +49,11 @@
         virtual RenderObject* createRenderer(RenderArena* arena, RenderStyle* style);
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGForeignObjectElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGForeignObjectElement, SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGForeignObjectElement, SVGLength, SVGLength, X, x)
         ANIMATED_PROPERTY_DECLARATIONS(SVGForeignObjectElement, SVGLength, SVGLength, Y, y)
diff --git a/WebCore/svg/SVGGElement.h b/WebCore/svg/SVGGElement.h
index 9dfaa21..9237ef8 100644
--- a/WebCore/svg/SVGGElement.h
+++ b/WebCore/svg/SVGGElement.h
@@ -48,10 +48,10 @@
         virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGGElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
 
     private:
         friend class SVGUseElement;
diff --git a/WebCore/svg/SVGGradientElement.cpp b/WebCore/svg/SVGGradientElement.cpp
index 0805a38..4cd527f 100644
--- a/WebCore/svg/SVGGradientElement.cpp
+++ b/WebCore/svg/SVGGradientElement.cpp
@@ -53,7 +53,7 @@
 }
 
 ANIMATED_PROPERTY_DEFINITIONS(SVGGradientElement, int, Enumeration, enumeration, GradientUnits, gradientUnits, SVGNames::gradientUnitsAttr, m_gradientUnits)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGGradientElement, SVGTransformList, TransformList, transformList, GradientTransform, gradientTransform, SVGNames::gradientTransformAttr, m_gradientTransform)
+ANIMATED_PROPERTY_DEFINITIONS(SVGGradientElement, SVGTransformList*, TransformList, transformList, GradientTransform, gradientTransform, SVGNames::gradientTransformAttr, m_gradientTransform.get())
 ANIMATED_PROPERTY_DEFINITIONS(SVGGradientElement, int, Enumeration, enumeration, SpreadMethod, spreadMethod, SVGNames::spreadMethodAttr, m_spreadMethod)
 
 void SVGGradientElement::parseMappedAttribute(MappedAttribute* attr)
diff --git a/WebCore/svg/SVGGradientElement.h b/WebCore/svg/SVGGradientElement.h
index db902d0..25579d0 100644
--- a/WebCore/svg/SVGGradientElement.h
+++ b/WebCore/svg/SVGGradientElement.h
@@ -24,15 +24,15 @@
 #define SVGGradientElement_h
 
 #if ENABLE(SVG)
-#include "SVGExternalResourcesRequired.h"
 #include "SVGPaintServerGradient.h"
+#include "SVGExternalResourcesRequired.h"
 #include "SVGStyledElement.h"
-#include "SVGTransformList.h"
 #include "SVGURIReference.h"
 
 namespace WebCore {
 
     class SVGGradientElement;
+    class SVGTransformList;
 
     class SVGGradientElement : public SVGStyledElement,
                                public SVGURIReference,
@@ -68,8 +68,8 @@
         mutable RefPtr<SVGPaintServerGradient> m_resource;
  
     protected:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGGradientElement, SVGURIReference, String, Href, href)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGGradientElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
  
         ANIMATED_PROPERTY_DECLARATIONS(SVGGradientElement, int, int, SpreadMethod, spreadMethod)
         ANIMATED_PROPERTY_DECLARATIONS(SVGGradientElement, int, int, GradientUnits, gradientUnits)
diff --git a/WebCore/svg/SVGImageElement.cpp b/WebCore/svg/SVGImageElement.cpp
index 5293133..b7c6aea 100644
--- a/WebCore/svg/SVGImageElement.cpp
+++ b/WebCore/svg/SVGImageElement.cpp
@@ -43,10 +43,10 @@
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
     , SVGURIReference()
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
     , m_preserveAspectRatio(SVGPreserveAspectRatio::create())
     , m_imageLoader(this)
 {
@@ -60,7 +60,7 @@
 ANIMATED_PROPERTY_DEFINITIONS(SVGImageElement, SVGLength, Length, length, Y, y, SVGNames::yAttr, m_y)
 ANIMATED_PROPERTY_DEFINITIONS(SVGImageElement, SVGLength, Length, length, Width, width, SVGNames::widthAttr, m_width)
 ANIMATED_PROPERTY_DEFINITIONS(SVGImageElement, SVGLength, Length, length, Height, height, SVGNames::heightAttr, m_height)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGImageElement, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, SVGNames::preserveAspectRatioAttr, m_preserveAspectRatio)
+ANIMATED_PROPERTY_DEFINITIONS(SVGImageElement, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio, PreserveAspectRatio, preserveAspectRatio, SVGNames::preserveAspectRatioAttr, m_preserveAspectRatio.get())
 
 void SVGImageElement::parseMappedAttribute(MappedAttribute *attr)
 {
diff --git a/WebCore/svg/SVGImageElement.h b/WebCore/svg/SVGImageElement.h
index b30dc3e..483d0fd 100644
--- a/WebCore/svg/SVGImageElement.h
+++ b/WebCore/svg/SVGImageElement.h
@@ -25,15 +25,15 @@
 
 #if ENABLE(SVG)
 #include "SVGExternalResourcesRequired.h"
-#include "SVGImageLoader.h"
 #include "SVGLangSpace.h"
-#include "SVGPreserveAspectRatio.h"
+#include "SVGImageLoader.h"
 #include "SVGStyledTransformableElement.h"
 #include "SVGTests.h"
 #include "SVGURIReference.h"
 
 namespace WebCore {
 
+    class SVGPreserveAspectRatio;
     class SVGLength;
 
     class SVGImageElement : public SVGStyledTransformableElement,
@@ -62,11 +62,11 @@
         virtual bool hasRelativeValues() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGImageElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGImageElement, SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGImageElement, SVGLength, SVGLength, X, x)
         ANIMATED_PROPERTY_DECLARATIONS(SVGImageElement, SVGLength, SVGLength, Y, y)
diff --git a/WebCore/svg/SVGLength.cpp b/WebCore/svg/SVGLength.cpp
index 010911d..e6ecb82 100644
--- a/WebCore/svg/SVGLength.cpp
+++ b/WebCore/svg/SVGLength.cpp
@@ -122,33 +122,6 @@
     setValueAsString(valueAsString);
 }
 
-SVGLength::SVGLength(const SVGLength& other)
-    : m_valueInSpecifiedUnits(other.m_valueInSpecifiedUnits)
-    , m_unit(other.m_unit)
-    , m_context(other.m_context)
-{
-}
-
-SVGLength& SVGLength::operator=(const SVGLength& other)
-{
-    m_valueInSpecifiedUnits = other.m_valueInSpecifiedUnits;
-    m_unit = other.m_unit;
-    m_context = other.m_context;
-    return (*this);
-}
-
-bool SVGLength::operator==(const SVGLength& other) const
-{
-    return m_valueInSpecifiedUnits == other.m_valueInSpecifiedUnits &&
-           m_unit == other.m_unit &&
-           m_context == other.m_context;
-}
-
-bool SVGLength::operator!=(const SVGLength& other) const
-{
-    return !((*this) == other);
-}
-
 SVGLengthType SVGLength::unitType() const
 {
     return extractType(m_unit);
diff --git a/WebCore/svg/SVGLength.h b/WebCore/svg/SVGLength.h
index 579f763..543221f 100644
--- a/WebCore/svg/SVGLength.h
+++ b/WebCore/svg/SVGLength.h
@@ -69,11 +69,6 @@
         };
 
         SVGLength(const SVGStyledElement* context = 0, SVGLengthMode mode = LengthModeOther, const String& valueAsString = String());
-        SVGLength(const SVGLength&);
-
-        SVGLength& operator=(const SVGLength&);
-        bool operator==(const SVGLength&) const;
-        bool operator!=(const SVGLength&) const;
 
         // 'SVGLength' functions
         SVGLengthType unitType() const;
diff --git a/WebCore/svg/SVGLengthList.cpp b/WebCore/svg/SVGLengthList.cpp
index dfff47f..c2d8160 100644
--- a/WebCore/svg/SVGLengthList.cpp
+++ b/WebCore/svg/SVGLengthList.cpp
@@ -59,22 +59,6 @@
     }
 }
 
-String SVGLengthList::valueAsString() const
-{
-    String result;
-
-    ExceptionCode ec = 0;
-    for (unsigned int i = 0; i < numberOfItems(); ++i) {
-        if (i > 0)
-            result += ", ";
-
-        result += getItem(i, ec).valueAsString();
-        ASSERT(ec == 0);
-    }
-
-    return result;
-}
-
 }
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGLengthList.h b/WebCore/svg/SVGLengthList.h
index d295a79..a2c615d 100644
--- a/WebCore/svg/SVGLengthList.h
+++ b/WebCore/svg/SVGLengthList.h
@@ -35,9 +35,7 @@
         virtual ~SVGLengthList();
 
         void parse(const String& value, const SVGStyledElement* context, SVGLengthMode mode);
- 
-        String valueAsString() const;
-
+        
     private:
         SVGLengthList(const QualifiedName&);
     };
diff --git a/WebCore/svg/SVGLineElement.cpp b/WebCore/svg/SVGLineElement.cpp
index c006360..3b664d1 100644
--- a/WebCore/svg/SVGLineElement.cpp
+++ b/WebCore/svg/SVGLineElement.cpp
@@ -37,10 +37,10 @@
     , SVGTests()
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
-    , m_x1(SVGLength(this, LengthModeWidth))
-    , m_y1(SVGLength(this, LengthModeHeight))
-    , m_x2(SVGLength(this, LengthModeWidth))
-    , m_y2(SVGLength(this, LengthModeHeight))
+    , m_x1(this, LengthModeWidth)
+    , m_y1(this, LengthModeHeight)
+    , m_x2(this, LengthModeWidth)
+    , m_y2(this, LengthModeHeight)
 {
 }
 
diff --git a/WebCore/svg/SVGLineElement.h b/WebCore/svg/SVGLineElement.h
index e6e8329..c6dbc08 100644
--- a/WebCore/svg/SVGLineElement.h
+++ b/WebCore/svg/SVGLineElement.h
@@ -51,11 +51,11 @@
         virtual bool supportsMarkers() const { return true; }
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         virtual bool hasRelativeValues() const;
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGLineElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
  
         ANIMATED_PROPERTY_DECLARATIONS(SVGLineElement, SVGLength, SVGLength, X1, x1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGLineElement, SVGLength, SVGLength, Y1, y1)
diff --git a/WebCore/svg/SVGLinearGradientElement.cpp b/WebCore/svg/SVGLinearGradientElement.cpp
index 385910a..6cddf07 100644
--- a/WebCore/svg/SVGLinearGradientElement.cpp
+++ b/WebCore/svg/SVGLinearGradientElement.cpp
@@ -38,10 +38,10 @@
 
 SVGLinearGradientElement::SVGLinearGradientElement(const QualifiedName& tagName, Document* doc)
     : SVGGradientElement(tagName, doc)
-    , m_x1(SVGLength(this, LengthModeWidth))
-    , m_y1(SVGLength(this, LengthModeHeight))
-    , m_x2(SVGLength(this, LengthModeWidth))
-    , m_y2(SVGLength(this, LengthModeHeight))
+    , m_x1(this, LengthModeWidth)
+    , m_y1(this, LengthModeHeight)
+    , m_x2(this, LengthModeWidth)
+    , m_y2(this, LengthModeHeight)
 {
     // Spec: If the attribute is not specified, the effect is as if a value of "100%" were specified.
     setX2BaseValue(SVGLength(this, LengthModeWidth, "100%"));
@@ -113,7 +113,7 @@
             attributes.setSpreadMethod((SVGGradientSpreadMethod) current->spreadMethod());
 
         if (!attributes.hasBoundingBoxMode() && current->hasAttribute(SVGNames::gradientUnitsAttr))
-            attributes.setBoundingBoxMode(current->gradientUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            attributes.setBoundingBoxMode(current->getAttribute(SVGNames::gradientUnitsAttr) == "objectBoundingBox");
 
         if (!attributes.hasGradientTransform() && current->hasAttribute(SVGNames::gradientTransformAttr))
             attributes.setGradientTransform(current->gradientTransform()->consolidate().matrix());
diff --git a/WebCore/svg/SVGLinearGradientElement.h b/WebCore/svg/SVGLinearGradientElement.h
index 6153d73..496585e 100644
--- a/WebCore/svg/SVGLinearGradientElement.h
+++ b/WebCore/svg/SVGLinearGradientElement.h
@@ -46,7 +46,7 @@
         LinearGradientAttributes collectGradientProperties() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGLinearGradientElement, SVGLength, SVGLength, X1, x1)
diff --git a/WebCore/svg/SVGMPathElement.h b/WebCore/svg/SVGMPathElement.h
index 4f0c71b..1e84cc7 100644
--- a/WebCore/svg/SVGMPathElement.h
+++ b/WebCore/svg/SVGMPathElement.h
@@ -43,7 +43,7 @@
         SVGPathElement* pathElement();
         
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGMarkerElement.cpp b/WebCore/svg/SVGMarkerElement.cpp
index c54f3d7..60d6a51 100644
--- a/WebCore/svg/SVGMarkerElement.cpp
+++ b/WebCore/svg/SVGMarkerElement.cpp
@@ -41,10 +41,10 @@
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
     , SVGFitToViewBox()
-    , m_refX(SVGLength(this, LengthModeWidth))
-    , m_refY(SVGLength(this, LengthModeHeight))
-    , m_markerWidth(SVGLength(this, LengthModeWidth))
-    , m_markerHeight(SVGLength(this, LengthModeHeight))
+    , m_refX(this, LengthModeWidth)
+    , m_refY(this, LengthModeHeight)
+    , m_markerWidth(this, LengthModeWidth)
+    , m_markerHeight(this, LengthModeHeight) 
     , m_markerUnits(SVG_MARKERUNITS_STROKEWIDTH)
     , m_orientType(0)
     , m_orientAngle(new SVGAngle())
@@ -64,7 +64,7 @@
 ANIMATED_PROPERTY_DEFINITIONS(SVGMarkerElement, SVGLength, Length, length, MarkerWidth, markerWidth, SVGNames::markerWidthAttr, m_markerWidth)
 ANIMATED_PROPERTY_DEFINITIONS(SVGMarkerElement, SVGLength, Length, length, MarkerHeight, markerHeight, SVGNames::markerHeightAttr, m_markerHeight)
 ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(SVGMarkerElement, int, Enumeration, enumeration, OrientType, orientType, SVGNames::orientAttr, "orientType", m_orientType)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED_WITH_CUSTOM_IDENTIFIER(SVGMarkerElement, SVGAngle, Angle, angle, OrientAngle, orientAngle, SVGNames::orientAttr, "orientAngle", m_orientAngle)
+ANIMATED_PROPERTY_DEFINITIONS_WITH_CUSTOM_IDENTIFIER(SVGMarkerElement, SVGAngle*, Angle, angle, OrientAngle, orientAngle, SVGNames::orientAttr, "orientAngle", m_orientAngle.get())
 
 void SVGMarkerElement::parseMappedAttribute(MappedAttribute* attr)
 {
diff --git a/WebCore/svg/SVGMarkerElement.h b/WebCore/svg/SVGMarkerElement.h
index 56eb87d..3e6cf25 100644
--- a/WebCore/svg/SVGMarkerElement.h
+++ b/WebCore/svg/SVGMarkerElement.h
@@ -24,15 +24,17 @@
 #define SVGMarkerElement_h
 
 #if ENABLE(SVG)
-#include "SVGAngle.h"
+#include "SVGResourceMarker.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFitToViewBox.h"
 #include "SVGLangSpace.h"
-#include "SVGResourceMarker.h"
 #include "SVGStyledElement.h"
 
 namespace WebCore {
 
+    class Document;
+    class SVGAngle;
+    
     class SVGMarkerElement : public SVGStyledElement,
                              public SVGLangSpace,
                              public SVGExternalResourcesRequired,
@@ -64,12 +66,12 @@
         virtual SVGResource* canvasResource();
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGMarkerElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGMarkerElement, SVGFitToViewBox, FloatRect, ViewBox, viewBox)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGMarkerElement, SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired) 
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, FloatRect, ViewBox, viewBox)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, SVGLength, SVGLength, RefX, refX)
         ANIMATED_PROPERTY_DECLARATIONS(SVGMarkerElement, SVGLength, SVGLength, RefY, refY)
diff --git a/WebCore/svg/SVGMaskElement.cpp b/WebCore/svg/SVGMaskElement.cpp
index 393afb7..723fefa 100644
--- a/WebCore/svg/SVGMaskElement.cpp
+++ b/WebCore/svg/SVGMaskElement.cpp
@@ -50,10 +50,10 @@
     , SVGExternalResourcesRequired()
     , m_maskUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
     , m_maskContentUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE)
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
 {
     // Spec: If the attribute is not specified, the effect is as if a value of "-10%" were specified.
     setXBaseValue(SVGLength(this, LengthModeWidth, "-10%"));
diff --git a/WebCore/svg/SVGMaskElement.h b/WebCore/svg/SVGMaskElement.h
index 2a66ac6..cd44baf 100644
--- a/WebCore/svg/SVGMaskElement.h
+++ b/WebCore/svg/SVGMaskElement.h
@@ -54,9 +54,9 @@
         std::auto_ptr<ImageBuffer> drawMaskerContent(const FloatRect& targetRect, FloatRect& maskRect) const;
 
     protected:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGMaskElement, SVGURIReference, String, Href, href)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGMaskElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
-
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+            
         ANIMATED_PROPERTY_DECLARATIONS(SVGMaskElement, int, int, MaskUnits, maskUnits)
         ANIMATED_PROPERTY_DECLARATIONS(SVGMaskElement, int, int, MaskContentUnits, maskContentUnits)
  
@@ -65,7 +65,7 @@
         ANIMATED_PROPERTY_DECLARATIONS(SVGMaskElement, SVGLength, SVGLength, Width, width)
         ANIMATED_PROPERTY_DECLARATIONS(SVGMaskElement, SVGLength, SVGLength, Height, height)
 
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         RefPtr<SVGResourceMasker> m_masker;
diff --git a/WebCore/svg/SVGNumberList.cpp b/WebCore/svg/SVGNumberList.cpp
index be1e895..7931eca 100644
--- a/WebCore/svg/SVGNumberList.cpp
+++ b/WebCore/svg/SVGNumberList.cpp
@@ -54,22 +54,6 @@
     }
 }
 
-String SVGNumberList::valueAsString() const
-{
-    String result;
-
-    ExceptionCode ec = 0;
-    for (unsigned int i = 0; i < numberOfItems(); ++i) {
-        if (i > 0)
-            result += ", ";
-
-        result += String::number(getItem(i, ec));
-        ASSERT(ec == 0);
-    }
-
-    return result;
-}
-
 }
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGNumberList.h b/WebCore/svg/SVGNumberList.h
index 6cd43ff..cd5957b 100644
--- a/WebCore/svg/SVGNumberList.h
+++ b/WebCore/svg/SVGNumberList.h
@@ -37,9 +37,7 @@
         virtual ~SVGNumberList();
 
         void parse(const String& value);
- 
-        String valueAsString() const;
-
+        
     private:
         SVGNumberList(const QualifiedName&);
     };
diff --git a/WebCore/svg/SVGPathElement.h b/WebCore/svg/SVGPathElement.h
index 6258fa9..140e8b1 100644
--- a/WebCore/svg/SVGPathElement.h
+++ b/WebCore/svg/SVGPathElement.h
@@ -101,12 +101,13 @@
         virtual bool supportsMarkers() const { return true; }
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         mutable RefPtr<SVGPathSegList> m_pathSegList;
 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGPathElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+ 
         ANIMATED_PROPERTY_DECLARATIONS(SVGPathElement, float, float, PathLength, pathLength)
     };
 
diff --git a/WebCore/svg/SVGPatternElement.cpp b/WebCore/svg/SVGPatternElement.cpp
index add64d7..dda42d7 100644
--- a/WebCore/svg/SVGPatternElement.cpp
+++ b/WebCore/svg/SVGPatternElement.cpp
@@ -57,10 +57,10 @@
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
     , SVGFitToViewBox()
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
     , m_patternUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
     , m_patternContentUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE)
     , m_patternTransform(SVGTransformList::create(SVGNames::patternTransformAttr))
@@ -77,7 +77,7 @@
 ANIMATED_PROPERTY_DEFINITIONS(SVGPatternElement, SVGLength, Length, length, Y, y, SVGNames::yAttr, m_y)
 ANIMATED_PROPERTY_DEFINITIONS(SVGPatternElement, SVGLength, Length, length, Width, width, SVGNames::widthAttr, m_width)
 ANIMATED_PROPERTY_DEFINITIONS(SVGPatternElement, SVGLength, Length, length, Height, height, SVGNames::heightAttr, m_height)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGPatternElement, SVGTransformList, TransformList, transformList, PatternTransform, patternTransform, SVGNames::patternTransformAttr, m_patternTransform)
+ANIMATED_PROPERTY_DEFINITIONS(SVGPatternElement, SVGTransformList*, TransformList, transformList, PatternTransform, patternTransform, SVGNames::patternTransformAttr, m_patternTransform.get())
 
 void SVGPatternElement::parseMappedAttribute(MappedAttribute* attr)
 {
@@ -297,10 +297,10 @@
             attributes.setHeight(current->height());
 
         if (!attributes.hasBoundingBoxMode() && current->hasAttribute(SVGNames::patternUnitsAttr))
-            attributes.setBoundingBoxMode(current->patternUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            attributes.setBoundingBoxMode(current->getAttribute(SVGNames::patternUnitsAttr) == "objectBoundingBox");
 
         if (!attributes.hasBoundingBoxModeContent() && current->hasAttribute(SVGNames::patternContentUnitsAttr))
-            attributes.setBoundingBoxModeContent(current->patternContentUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            attributes.setBoundingBoxModeContent(current->getAttribute(SVGNames::patternContentUnitsAttr) == "objectBoundingBox");
 
         if (!attributes.hasPatternTransform() && current->hasAttribute(SVGNames::patternTransformAttr))
             attributes.setPatternTransform(current->patternTransform()->consolidate().matrix());
diff --git a/WebCore/svg/SVGPatternElement.h b/WebCore/svg/SVGPatternElement.h
index 18161b2..6b00a62 100644
--- a/WebCore/svg/SVGPatternElement.h
+++ b/WebCore/svg/SVGPatternElement.h
@@ -24,20 +24,21 @@
 #define SVGPatternElement_h
 
 #if ENABLE(SVG)
+#include "SVGPaintServerPattern.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFitToViewBox.h"
 #include "SVGLangSpace.h"
-#include "SVGPaintServerPattern.h"
 #include "SVGStyledElement.h"
 #include "SVGTests.h"
-#include "SVGTransformList.h"
 #include "SVGURIReference.h"
 
+
 namespace WebCore {
 
     struct PatternAttributes;
  
     class SVGLength;
+    class SVGTransformList;
 
     class SVGPatternElement : public SVGStyledElement,
                               public SVGURIReference,
@@ -59,10 +60,10 @@
         virtual SVGResource* canvasResource();
 
     protected:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGPatternElement, SVGURIReference, String, Href, href)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGPatternElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGPatternElement, SVGFitToViewBox, FloatRect, ViewBox, viewBox)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGPatternElement, SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, FloatRect, ViewBox, viewBox)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, SVGLength, SVGLength, X, x)
         ANIMATED_PROPERTY_DECLARATIONS(SVGPatternElement, SVGLength, SVGLength, Y, y)
@@ -74,7 +75,7 @@
 
         mutable RefPtr<SVGPaintServerPattern> m_resource;
 
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         friend class SVGPaintServerPattern;
diff --git a/WebCore/svg/SVGPolyElement.h b/WebCore/svg/SVGPolyElement.h
index 9fadd7d..09ce1df 100644
--- a/WebCore/svg/SVGPolyElement.h
+++ b/WebCore/svg/SVGPolyElement.h
@@ -53,13 +53,13 @@
         virtual bool supportsMarkers() const { return true; }
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         bool m_ignoreAttributeChanges : 1;
         mutable RefPtr<SVGPointList> m_points;
 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGPolyElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGPreserveAspectRatio.cpp b/WebCore/svg/SVGPreserveAspectRatio.cpp
index 0388939..0709b9d 100644
--- a/WebCore/svg/SVGPreserveAspectRatio.cpp
+++ b/WebCore/svg/SVGPreserveAspectRatio.cpp
@@ -202,59 +202,6 @@
     return temp;
 }
 
-String SVGPreserveAspectRatio::valueAsString() const
-{
-    String result;
-
-    switch ((SVGPreserveAspectRatioType) align()) {
-    default:
-    case SVG_PRESERVEASPECTRATIO_NONE:
-        result = "none";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMINYMIN:
-        result = "xMinYMin";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMIDYMIN:
-        result = "xMidYMin";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMAXYMIN:
-        result = "xMaxYMin";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMINYMID:
-        result = "xMinYMid";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMIDYMID:
-        result = "xMidYMid";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMAXYMID:
-        result = "xMaxYMid";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMINYMAX:
-        result = "xMinYMax";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMIDYMAX:
-        result = "xMidYMax";
-        break;
-    case SVG_PRESERVEASPECTRATIO_XMAXYMAX:
-        result = "xMaxYMax";
-        break;
-    };
-
-    switch ((SVGMeetOrSliceType) meetOrSlice()) {
-    default:
-    case SVG_MEETORSLICE_UNKNOWN:
-        break;
-    case SVG_MEETORSLICE_MEET:
-        result += " meet";
-        break;
-    case SVG_MEETORSLICE_SLICE:
-        result += " slice";
-        break;
-    };
-
-    return result;
-}
-
 }
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGPreserveAspectRatio.h b/WebCore/svg/SVGPreserveAspectRatio.h
index 0dfe940..a1bed65 100644
--- a/WebCore/svg/SVGPreserveAspectRatio.h
+++ b/WebCore/svg/SVGPreserveAspectRatio.h
@@ -74,7 +74,6 @@
 
         // Helper
         bool parsePreserveAspectRatio(const UChar*& currParam, const UChar* end, bool validate = true);
-        String valueAsString() const;
 
         const QualifiedName& associatedAttributeName() const { return SVGNames::preserveAspectRatioAttr; }
 
diff --git a/WebCore/svg/SVGRadialGradientElement.cpp b/WebCore/svg/SVGRadialGradientElement.cpp
index 78b984d..9ec5eb8 100644
--- a/WebCore/svg/SVGRadialGradientElement.cpp
+++ b/WebCore/svg/SVGRadialGradientElement.cpp
@@ -41,11 +41,11 @@
 
 SVGRadialGradientElement::SVGRadialGradientElement(const QualifiedName& tagName, Document* doc)
     : SVGGradientElement(tagName, doc)
-    , m_cx(SVGLength(this, LengthModeWidth))
-    , m_cy(SVGLength(this, LengthModeHeight))
-    , m_r(SVGLength(this, LengthModeOther))
-    , m_fx(SVGLength(this, LengthModeWidth))
-    , m_fy(SVGLength(this, LengthModeHeight))
+    , m_cx(this, LengthModeWidth)
+    , m_cy(this, LengthModeHeight)
+    , m_r(this, LengthModeOther)
+    , m_fx(this, LengthModeWidth)
+    , m_fy(this, LengthModeHeight)
 {
     // Spec: If the attribute is not specified, the effect is as if a value of "50%" were specified.
     setCxBaseValue(SVGLength(this, LengthModeWidth, "50%"));
@@ -89,7 +89,7 @@
         return;
 
     if (attrName == SVGNames::cxAttr || attrName == SVGNames::cyAttr ||
-        attrName == SVGNames::fxAttr || attrName == SVGNames::fyAttr ||
+        attrName == SVGNames::fyAttr || attrName == SVGNames::fyAttr ||
         attrName == SVGNames::rAttr)
         m_resource->invalidate();
 }
@@ -126,7 +126,7 @@
             attributes.setSpreadMethod((SVGGradientSpreadMethod) current->spreadMethod());
 
         if (!attributes.hasBoundingBoxMode() && current->hasAttribute(SVGNames::gradientUnitsAttr))
-            attributes.setBoundingBoxMode(current->gradientUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            attributes.setBoundingBoxMode(current->getAttribute(SVGNames::gradientUnitsAttr) == "objectBoundingBox");
 
         if (!attributes.hasGradientTransform() && current->hasAttribute(SVGNames::gradientTransformAttr))
             attributes.setGradientTransform(current->gradientTransform()->consolidate().matrix());
diff --git a/WebCore/svg/SVGRadialGradientElement.h b/WebCore/svg/SVGRadialGradientElement.h
index d243464..7007ea5 100644
--- a/WebCore/svg/SVGRadialGradientElement.h
+++ b/WebCore/svg/SVGRadialGradientElement.h
@@ -46,7 +46,7 @@
         RadialGradientAttributes collectGradientProperties() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS(SVGRadialGradientElement, SVGLength, SVGLength, Cx, cx)
diff --git a/WebCore/svg/SVGRectElement.cpp b/WebCore/svg/SVGRectElement.cpp
index 485dfaf..6820b9d 100644
--- a/WebCore/svg/SVGRectElement.cpp
+++ b/WebCore/svg/SVGRectElement.cpp
@@ -36,12 +36,12 @@
     , SVGTests()
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
-    , m_rx(SVGLength(this, LengthModeWidth))
-    , m_ry(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
+    , m_rx(this, LengthModeWidth)
+    , m_ry(this, LengthModeHeight)
 {
 }
 
diff --git a/WebCore/svg/SVGRectElement.h b/WebCore/svg/SVGRectElement.h
index 8fbe430..244a6ef 100644
--- a/WebCore/svg/SVGRectElement.h
+++ b/WebCore/svg/SVGRectElement.h
@@ -47,11 +47,11 @@
         virtual Path toPathData() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         virtual bool hasRelativeValues() const;
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGRectElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGRectElement, SVGLength, SVGLength, X, x)
         ANIMATED_PROPERTY_DECLARATIONS(SVGRectElement, SVGLength, SVGLength, Y, y)
diff --git a/WebCore/svg/SVGSVGElement.cpp b/WebCore/svg/SVGSVGElement.cpp
index e1a84b9..99289f7 100644
--- a/WebCore/svg/SVGSVGElement.cpp
+++ b/WebCore/svg/SVGSVGElement.cpp
@@ -63,10 +63,10 @@
     , SVGExternalResourcesRequired()
     , SVGFitToViewBox()
     , SVGZoomAndPan()
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
     , m_useCurrentView(false)
     , m_timeScheduler(new TimeScheduler(doc))
     , m_viewSpec(0)
@@ -187,7 +187,7 @@
 SVGViewSpec* SVGSVGElement::currentView() const
 {
     if (!m_viewSpec)
-        m_viewSpec.set(new SVGViewSpec(const_cast<SVGSVGElement*>(this)));
+        m_viewSpec.set(new SVGViewSpec(this));
 
     return m_viewSpec.get();
 }
diff --git a/WebCore/svg/SVGSVGElement.h b/WebCore/svg/SVGSVGElement.h
index 0af8077..4296938 100644
--- a/WebCore/svg/SVGSVGElement.h
+++ b/WebCore/svg/SVGSVGElement.h
@@ -135,7 +135,7 @@
         void inheritViewAttributes(SVGViewElement*);
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
         friend class RenderSVGRoot;
         friend class RenderSVGViewportContainer;
@@ -147,9 +147,9 @@
     private:
         void addSVGWindowEventListener(const AtomicString& eventType, const Attribute* attr);   
 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGSVGElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGSVGElement, SVGFitToViewBox, FloatRect, ViewBox, viewBox)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGSVGElement, SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, FloatRect, ViewBox, viewBox)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGSVGElement, SVGLength, SVGLength, X, x)
         ANIMATED_PROPERTY_DECLARATIONS(SVGSVGElement, SVGLength, SVGLength, Y, y)
diff --git a/WebCore/svg/SVGScriptElement.h b/WebCore/svg/SVGScriptElement.h
index 1a05dd0..8ea374a6 100644
--- a/WebCore/svg/SVGScriptElement.h
+++ b/WebCore/svg/SVGScriptElement.h
@@ -48,12 +48,11 @@
         virtual void getSubresourceAttributeStrings(Vector<String>&) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_START_DECLARATIONS(SVGScriptElement)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGScriptElement, SVGURIReference, String, Href, href)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGScriptElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
 
         String m_type;
     };
diff --git a/WebCore/svg/SVGSetElement.h b/WebCore/svg/SVGSetElement.h
index 51f4154..91fc380 100644
--- a/WebCore/svg/SVGSetElement.h
+++ b/WebCore/svg/SVGSetElement.h
@@ -35,7 +35,7 @@
         virtual ~SVGSetElement();
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
         
         virtual bool updateAnimatedValue(EAnimationMode, float timePercentage, unsigned valueIndex, float percentagePast);
         virtual bool calculateFromAndToValues(EAnimationMode, unsigned valueIndex);
diff --git a/WebCore/svg/SVGStyledElement.h b/WebCore/svg/SVGStyledElement.h
index 35d9eb9..0d798ab 100644
--- a/WebCore/svg/SVGStyledElement.h
+++ b/WebCore/svg/SVGStyledElement.h
@@ -69,7 +69,6 @@
         static int cssPropertyIdForSVGAttributeName(const QualifiedName&);
 
     private:
-        ANIMATED_PROPERTY_START_DECLARATIONS(SVGStyledElement)
         ANIMATED_PROPERTY_DECLARATIONS(SVGStyledElement, String, String, ClassName, className)
 
         void updateElementInstance(SVGDocumentExtensions*) const;
diff --git a/WebCore/svg/SVGStyledTransformableElement.cpp b/WebCore/svg/SVGStyledTransformableElement.cpp
index b37d519..28ce33c 100644
--- a/WebCore/svg/SVGStyledTransformableElement.cpp
+++ b/WebCore/svg/SVGStyledTransformableElement.cpp
@@ -46,7 +46,7 @@
 {
 }
 
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGStyledTransformableElement, SVGTransformList, TransformList, transformList, Transform, transform, SVGNames::transformAttr, m_transform)
+ANIMATED_PROPERTY_DEFINITIONS(SVGStyledTransformableElement, SVGTransformList*, TransformList, transformList, Transform, transform, SVGNames::transformAttr, m_transform.get())
 
 AffineTransform SVGStyledTransformableElement::getCTM() const
 {
diff --git a/WebCore/svg/SVGStyledTransformableElement.h b/WebCore/svg/SVGStyledTransformableElement.h
index 5f5bec4..8e23a514 100644
--- a/WebCore/svg/SVGStyledTransformableElement.h
+++ b/WebCore/svg/SVGStyledTransformableElement.h
@@ -26,11 +26,11 @@
 #if ENABLE(SVG)
 #include "SVGStyledLocatableElement.h"
 #include "SVGTransformable.h"
-#include "SVGTransformList.h"
 
 namespace WebCore {
 
     class AffineTransform;
+    class SVGTransformList;
 
     class SVGStyledTransformableElement : public SVGStyledLocatableElement,
                                           public SVGTransformable {
diff --git a/WebCore/svg/SVGSwitchElement.h b/WebCore/svg/SVGSwitchElement.h
index 7c442be..3bfc275 100644
--- a/WebCore/svg/SVGSwitchElement.h
+++ b/WebCore/svg/SVGSwitchElement.h
@@ -47,12 +47,12 @@
         virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         mutable bool m_insideRenderSection;
 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGSwitchElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGSymbolElement.h b/WebCore/svg/SVGSymbolElement.h
index c52fe69..eaa0b94 100644
--- a/WebCore/svg/SVGSymbolElement.h
+++ b/WebCore/svg/SVGSymbolElement.h
@@ -46,11 +46,11 @@
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
  
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGSymbolElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)       
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGSymbolElement, SVGFitToViewBox, FloatRect, ViewBox, viewBox)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGSymbolElement, SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)       
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, FloatRect, ViewBox, viewBox)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGTRefElement.h b/WebCore/svg/SVGTRefElement.h
index 0e76974..16ea5c3 100644
--- a/WebCore/svg/SVGTRefElement.h
+++ b/WebCore/svg/SVGTRefElement.h
@@ -41,10 +41,10 @@
         bool childShouldCreateRenderer(Node*) const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGTRefElement, SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
 
         void updateReferencedText();
     };
diff --git a/WebCore/svg/SVGTSpanElement.h b/WebCore/svg/SVGTSpanElement.h
index 78aa8d7..f2d0303 100644
--- a/WebCore/svg/SVGTSpanElement.h
+++ b/WebCore/svg/SVGTSpanElement.h
@@ -38,7 +38,7 @@
         bool childShouldCreateRenderer(Node*) const;
     
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGTextContentElement.cpp b/WebCore/svg/SVGTextContentElement.cpp
index a5f3c17..f864eba1 100644
--- a/WebCore/svg/SVGTextContentElement.cpp
+++ b/WebCore/svg/SVGTextContentElement.cpp
@@ -48,7 +48,7 @@
     , SVGTests()
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
-    , m_textLength(SVGLength(this, LengthModeOther))
+    , m_textLength(this, LengthModeOther)
     , m_lengthAdjust(LENGTHADJUST_SPACING)
 {
 }
diff --git a/WebCore/svg/SVGTextContentElement.h b/WebCore/svg/SVGTextContentElement.h
index 5591cfe9..b36b098 100644
--- a/WebCore/svg/SVGTextContentElement.h
+++ b/WebCore/svg/SVGTextContentElement.h
@@ -64,7 +64,7 @@
         bool isKnownAttribute(const QualifiedName&);
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGTextContentElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGTextContentElement, SVGLength, SVGLength, TextLength, textLength)
         ANIMATED_PROPERTY_DECLARATIONS(SVGTextContentElement, int, int, LengthAdjust, lengthAdjust)
diff --git a/WebCore/svg/SVGTextElement.cpp b/WebCore/svg/SVGTextElement.cpp
index 4e30aa9..0c66081 100644
--- a/WebCore/svg/SVGTextElement.cpp
+++ b/WebCore/svg/SVGTextElement.cpp
@@ -46,7 +46,7 @@
 {
 }
 
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGTextElement, SVGTransformList, TransformList, transformList, Transform, transform, SVGNames::transformAttr, m_transform)
+ANIMATED_PROPERTY_DEFINITIONS(SVGTextElement, SVGTransformList*, TransformList, transformList, Transform, transform, SVGNames::transformAttr, m_transform.get())
 
 void SVGTextElement::parseMappedAttribute(MappedAttribute* attr)
 {
diff --git a/WebCore/svg/SVGTextElement.h b/WebCore/svg/SVGTextElement.h
index 4964d8c..6cf2baf 100644
--- a/WebCore/svg/SVGTextElement.h
+++ b/WebCore/svg/SVGTextElement.h
@@ -26,7 +26,6 @@
 #if ENABLE(SVG)
 #include "SVGTextPositioningElement.h"
 #include "SVGTransformable.h"
-#include "SVGTransformList.h"
 
 namespace WebCore {
 
@@ -52,11 +51,10 @@
         virtual void svgAttributeChanged(const QualifiedName&);
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         mutable AffineTransform m_localMatrix;
-
         ANIMATED_PROPERTY_DECLARATIONS(SVGTextElement, SVGTransformList*, RefPtr<SVGTransformList>, Transform, transform)
     };
 
diff --git a/WebCore/svg/SVGTextPathElement.cpp b/WebCore/svg/SVGTextPathElement.cpp
index a2471f9..a0e2929 100644
--- a/WebCore/svg/SVGTextPathElement.cpp
+++ b/WebCore/svg/SVGTextPathElement.cpp
@@ -38,7 +38,7 @@
 SVGTextPathElement::SVGTextPathElement(const QualifiedName& tagName, Document* doc)
     : SVGTextContentElement(tagName, doc)
     , SVGURIReference()
-    , m_startOffset(SVGLength(this, LengthModeOther))
+    , m_startOffset(this, LengthModeOther)
     , m_method(SVG_TEXTPATH_METHODTYPE_ALIGN)
     , m_spacing(SVG_TEXTPATH_SPACINGTYPE_EXACT)
 {
diff --git a/WebCore/svg/SVGTextPathElement.h b/WebCore/svg/SVGTextPathElement.h
index d1793d7..4db7a94 100644
--- a/WebCore/svg/SVGTextPathElement.h
+++ b/WebCore/svg/SVGTextPathElement.h
@@ -67,10 +67,10 @@
         bool childShouldCreateRenderer(Node*) const;
     
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGTextPathElement, SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGTextPathElement, SVGLength, SVGLength, StartOffset, startOffset)
         ANIMATED_PROPERTY_DECLARATIONS(SVGTextPathElement, int, int, Method, method)
diff --git a/WebCore/svg/SVGTextPositioningElement.cpp b/WebCore/svg/SVGTextPositioningElement.cpp
index eb7265c..15aed69 100644
--- a/WebCore/svg/SVGTextPositioningElement.cpp
+++ b/WebCore/svg/SVGTextPositioningElement.cpp
@@ -45,11 +45,11 @@
 {
 }
 
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGTextPositioningElement, SVGLengthList, LengthList, lengthList, X, x, SVGNames::xAttr, m_x)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGTextPositioningElement, SVGLengthList, LengthList, lengthList, Y, y, SVGNames::yAttr, m_y)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGTextPositioningElement, SVGLengthList, LengthList, lengthList, Dx, dx, SVGNames::dxAttr, m_dx)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGTextPositioningElement, SVGLengthList, LengthList, lengthList, Dy, dy, SVGNames::dyAttr, m_dy)
-ANIMATED_PROPERTY_DEFINITIONS_REFCOUNTED(SVGTextPositioningElement, SVGNumberList, NumberList, numberList, Rotate, rotate, SVGNames::rotateAttr, m_rotate)
+ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement, SVGLengthList*, LengthList, lengthList, X, x, SVGNames::xAttr, m_x.get())
+ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement, SVGLengthList*, LengthList, lengthList, Y, y, SVGNames::yAttr, m_y.get())
+ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement, SVGLengthList*, LengthList, lengthList, Dx, dx, SVGNames::dxAttr, m_dx.get())
+ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement, SVGLengthList*, LengthList, lengthList, Dy, dy, SVGNames::dyAttr, m_dy.get())
+ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement, SVGNumberList*, NumberList, numberList, Rotate, rotate, SVGNames::rotateAttr, m_rotate.get())
 
 void SVGTextPositioningElement::parseMappedAttribute(MappedAttribute* attr)
 {
diff --git a/WebCore/svg/SVGTextPositioningElement.h b/WebCore/svg/SVGTextPositioningElement.h
index 1bb8a4b..9deb3b6 100644
--- a/WebCore/svg/SVGTextPositioningElement.h
+++ b/WebCore/svg/SVGTextPositioningElement.h
@@ -24,12 +24,13 @@
 #define SVGTextPositioningElement_h
 
 #if ENABLE(SVG)
-#include "SVGLengthList.h"
-#include "SVGNumberList.h"
 #include "SVGTextContentElement.h"
 
 namespace WebCore {
 
+    class SVGLengthList;
+    class SVGNumberList;
+
     class SVGTextPositioningElement : public SVGTextContentElement {
     public:
         SVGTextPositioningElement(const QualifiedName&, Document*);
diff --git a/WebCore/svg/SVGTransformList.cpp b/WebCore/svg/SVGTransformList.cpp
index 9800922a..9b75848 100644
--- a/WebCore/svg/SVGTransformList.cpp
+++ b/WebCore/svg/SVGTransformList.cpp
@@ -82,16 +82,4 @@
     return totalTransform.addToSVGTransform(SVGTransform());
 }
 
-String SVGTransformList::valueAsString() const
-{
-    // TODO: We may want to build a real transform string, instead of concatting to a matrix(...).
-    SVGTransform transform = concatenate();
-    if (transform.type() == SVGTransform::SVG_TRANSFORM_MATRIX) {
-        AffineTransform matrix = transform.matrix();
-        return String::format("matrix(%f %f %f %f %f %f)", matrix.a(), matrix.b(), matrix.c(), matrix.d(), matrix.e(), matrix.f());
-    }
-
-    return String();
-}
-
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGTransformList.h b/WebCore/svg/SVGTransformList.h
index a405c58..be72f9d 100644
--- a/WebCore/svg/SVGTransformList.h
+++ b/WebCore/svg/SVGTransformList.h
@@ -30,8 +30,6 @@
 
 namespace WebCore {
 
-    class String;
-
     class SVGTransformList : public SVGPODList<SVGTransform> {
     public:
         static PassRefPtr<SVGTransformList> create(const QualifiedName& attributeName) { return adoptRef(new SVGTransformList(attributeName)); }
@@ -43,9 +41,7 @@
         // Internal use only
         SVGTransform concatenate() const;
         SVGTransform concatenateForType(SVGTransform::SVGTransformType) const;
- 
-        String valueAsString() const;
-
+        
     private:
         SVGTransformList(const QualifiedName&);
     };
diff --git a/WebCore/svg/SVGURIReference.h b/WebCore/svg/SVGURIReference.h
index 30e1a86..22f2f45 100644
--- a/WebCore/svg/SVGURIReference.h
+++ b/WebCore/svg/SVGURIReference.h
@@ -41,7 +41,7 @@
         static String getTarget(const String& url);
 
     protected:
-        virtual SVGElement* contextElement() = 0;
+        virtual const SVGElement* contextElement() const = 0;
 
     private:
         ANIMATED_PROPERTY_DECLARATIONS_WITH_CONTEXT(SVGURIReference, String, String, Href, href)
diff --git a/WebCore/svg/SVGUseElement.cpp b/WebCore/svg/SVGUseElement.cpp
index cace1cb..9b008ac 100644
--- a/WebCore/svg/SVGUseElement.cpp
+++ b/WebCore/svg/SVGUseElement.cpp
@@ -57,10 +57,10 @@
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
     , SVGURIReference()
-    , m_x(SVGLength(this, LengthModeWidth))
-    , m_y(SVGLength(this, LengthModeHeight))
-    , m_width(SVGLength(this, LengthModeWidth))
-    , m_height(SVGLength(this, LengthModeHeight))
+    , m_x(this, LengthModeWidth)
+    , m_y(this, LengthModeHeight)
+    , m_width(this, LengthModeWidth)
+    , m_height(this, LengthModeHeight)
 {
 }
 
diff --git a/WebCore/svg/SVGUseElement.h b/WebCore/svg/SVGUseElement.h
index 7118e80..e307a8ec 100644
--- a/WebCore/svg/SVGUseElement.h
+++ b/WebCore/svg/SVGUseElement.h
@@ -66,11 +66,11 @@
         virtual Path toClipPath() const;
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGUseElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGUseElement, SVGURIReference, String, Href, href)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGURIReference, String, Href, href)
 
         ANIMATED_PROPERTY_DECLARATIONS(SVGUseElement, SVGLength, SVGLength, X, x)
         ANIMATED_PROPERTY_DECLARATIONS(SVGUseElement, SVGLength, SVGLength, Y, y)
diff --git a/WebCore/svg/SVGViewElement.h b/WebCore/svg/SVGViewElement.h
index afc1660..17e0d1d 100644
--- a/WebCore/svg/SVGViewElement.h
+++ b/WebCore/svg/SVGViewElement.h
@@ -47,14 +47,14 @@
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
     protected:
-        virtual SVGElement* contextElement() { return this; }
+        virtual const SVGElement* contextElement() const { return this; }
 
     private:
         mutable RefPtr<SVGStringList> m_viewTarget;
 
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGViewElement, SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGViewElement, SVGFitToViewBox, FloatRect, ViewBox, viewBox)
-        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGViewElement, SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGExternalResourcesRequired, bool, ExternalResourcesRequired, externalResourcesRequired)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, FloatRect, ViewBox, viewBox)
+        ANIMATED_PROPERTY_FORWARD_DECLARATIONS(SVGFitToViewBox, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio)
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGViewSpec.cpp b/WebCore/svg/SVGViewSpec.cpp
index 91cdf7c..d628d70 100644
--- a/WebCore/svg/SVGViewSpec.cpp
+++ b/WebCore/svg/SVGViewSpec.cpp
@@ -32,7 +32,7 @@
 
 namespace WebCore {
 
-SVGViewSpec::SVGViewSpec(SVGSVGElement* contextElement)
+SVGViewSpec::SVGViewSpec(const SVGSVGElement* contextElement)
     : SVGFitToViewBox()
     , SVGZoomAndPan()
     , m_transform(SVGTransformList::create(SVGNames::transformAttr))
@@ -76,7 +76,7 @@
     return static_cast<SVGElement*>(m_contextElement->ownerDocument()->getElementById(m_viewTargetString));
 }
 
-SVGElement* SVGViewSpec::contextElement()
+const SVGElement* SVGViewSpec::contextElement() const
 {
     return m_contextElement;
 }
diff --git a/WebCore/svg/SVGViewSpec.h b/WebCore/svg/SVGViewSpec.h
index ee068b1..b143634 100644
--- a/WebCore/svg/SVGViewSpec.h
+++ b/WebCore/svg/SVGViewSpec.h
@@ -37,7 +37,7 @@
     class SVGViewSpec : public SVGFitToViewBox,
                         public SVGZoomAndPan {
     public:
-        SVGViewSpec(SVGSVGElement*);
+        SVGViewSpec(const SVGSVGElement*);
         virtual ~SVGViewSpec();
 
         bool parseViewSpec(const String&);
@@ -54,11 +54,11 @@
         SVGElement* viewTarget() const;
 
     protected:
-        virtual SVGElement* contextElement();
+        virtual const SVGElement* contextElement() const;
 
     private:
         mutable RefPtr<SVGTransformList> m_transform;
-        SVGSVGElement* m_contextElement;
+        const SVGSVGElement* m_contextElement;
         String m_viewTargetString;
     };
 
