FEComponentTransfer element doesn't support dynamic invalidation
authorreni@webkit.org <reni@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Oct 2011 16:33:19 +0000 (16:33 +0000)
committerreni@webkit.org <reni@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Oct 2011 16:33:19 +0000 (16:33 +0000)
https://bugs.webkit.org/show_bug.cgi?id=69747

Source/WebCore:

The dynamic changes are captured by the svgAttributeChange() function, and
invalidate the filter primitive if necessary.
invalidateFilterPrimitiveParent() is a new free function in
SVGFilterPrimitiveStanardAttributes what makes the invalidation possible
by objects not inherited from SVGFilterPrimitiveStanardAttributes too.
This solution was used in SVGFEMergeNodeElement::svgAttributeChanged()
previously and now it can use this new function too.

Reviewed by Nikolas Zimmermann.

Tests: svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html
       svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html
       svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html
       svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html
       svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html
       svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html
       svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html
       svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html
       svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html
       svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html
       svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html
       svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html
       svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html
       svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html

* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged):
* svg/SVGComponentTransferFunctionElement.h:
* svg/SVGFEComponentTransferElement.cpp:
(WebCore::SVGFEComponentTransferElement::build):
* svg/SVGFEMergeNodeElement.cpp:
(WebCore::SVGFEMergeNodeElement::svgAttributeChanged):
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::invalidateFilterPrimitiveParent):
* svg/SVGFilterPrimitiveStandardAttributes.h:

LayoutTests:

Adding new tests for feComponentTransfer dynamic changes.

Reviewed by Nikolas Zimmermann.

* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.png: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.txt: Added.
* svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html: Added.
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-amplitude-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-exponent-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-intercept-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-offset-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-slope-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-tableValues-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-type-attr.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-amplitude-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-exponent-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-intercept-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-offset-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-slope-prop.js: Added.
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-tableValues-prop.js: Added.
(SVGNumberListToString):
(executeTest):
* svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-type-prop.js: Added.
(executeTest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@97369 268f45cc-cd09-0410-ab3c-d52691b4dbfc

64 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.png [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-amplitude-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-exponent-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-intercept-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-offset-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-slope-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-tableValues-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-type-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-amplitude-prop.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-exponent-prop.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-intercept-prop.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-offset-prop.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-slope-prop.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-tableValues-prop.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-type-prop.js [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp
Source/WebCore/svg/SVGComponentTransferFunctionElement.h
Source/WebCore/svg/SVGFEComponentTransferElement.cpp
Source/WebCore/svg/SVGFEMergeNodeElement.cpp
Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h

index f206297..3fe4ad4 100644 (file)
@@ -1,3 +1,84 @@
+2011-10-13  Renata Hodovan  <reni@webkit.org>
+
+        FEComponentTransfer element doesn't support dynamic invalidation
+        https://bugs.webkit.org/show_bug.cgi?id=69747
+
+        Adding new tests for feComponentTransfer dynamic changes.
+
+        Reviewed by Nikolas Zimmermann.
+
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.png: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html: Added.
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-amplitude-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-exponent-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-intercept-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-offset-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-slope-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-tableValues-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-type-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-amplitude-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-exponent-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-intercept-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-offset-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-slope-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-tableValues-prop.js: Added.
+        (SVGNumberListToString):
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-type-prop.js: Added.
+        (executeTest):
+
 2011-10-13  Deepak Sherveghar  <bpwv64@motorola.com>
 
         REGRESSION (r95381): Standalone video can be focused and draws a focus ring.
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.png
new file mode 100644 (file)
index 0000000..ed0c584
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.png
new file mode 100644 (file)
index 0000000..3cff0b2
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.png
new file mode 100644 (file)
index 0000000..7c98a0c
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.png
new file mode 100644 (file)
index 0000000..6f2950c
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.png
new file mode 100644 (file)
index 0000000..10d7014
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.png
new file mode 100644 (file)
index 0000000..f847c21
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.png
new file mode 100644 (file)
index 0000000..68b2ad4
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.png
new file mode 100644 (file)
index 0000000..092bdcc
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.png
new file mode 100644 (file)
index 0000000..4a15633
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.png
new file mode 100644 (file)
index 0000000..38a2186
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.png
new file mode 100644 (file)
index 0000000..9124cea
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.png
new file mode 100644 (file)
index 0000000..4c02f94
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.png
new file mode 100644 (file)
index 0000000..8024ee2
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.png
new file mode 100644 (file)
index 0000000..30d59ef
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.png differ
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr-expected.txt
new file mode 100644 (file)
index 0000000..15e052e
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'amplitude' attribute of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.getAttribute('amplitude') is "3"
+PASS feRFunc.getAttribute('amplitude') is "3"
+PASS feRFunc.getAttribute('amplitude') is "3"
+PASS feRFunc.getAttribute('amplitude') is "3"
+PASS feRFunc.getAttribute('amplitude') is "1"
+PASS feGFunc.getAttribute('amplitude') is "1"
+PASS feBFunc.getAttribute('amplitude') is "1"
+PASS feAFunc.getAttribute('amplitude') is "1"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html
new file mode 100644 (file)
index 0000000..655d64d
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-dom-amplitude-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr-expected.txt
new file mode 100644 (file)
index 0000000..f03a2e2
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'exponent' attribute of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.getAttribute('exponent') is "2"
+PASS feGFunc.getAttribute('exponent') is "2"
+PASS feBFunc.getAttribute('exponent') is "2"
+PASS feAFunc.getAttribute('exponent') is "2"
+PASS feRFunc.getAttribute('exponent') is "1"
+PASS feGFunc.getAttribute('exponent') is "1"
+PASS feBFunc.getAttribute('exponent') is "1"
+PASS feAFunc.getAttribute('exponent') is "1"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html
new file mode 100644 (file)
index 0000000..fa8ff4e
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-dom-exponent-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr-expected.txt
new file mode 100644 (file)
index 0000000..1f42e83
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'intercept' attribute of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.getAttribute('intercept') is "0.2"
+PASS feGFunc.getAttribute('intercept') is "0.2"
+PASS feBFunc.getAttribute('intercept') is "0.2"
+PASS feAFunc.getAttribute('intercept') is "0.2"
+PASS feRFunc.getAttribute('intercept') is "0.1"
+PASS feGFunc.getAttribute('intercept') is "0.1"
+PASS feBFunc.getAttribute('intercept') is "0.1"
+PASS feAFunc.getAttribute('intercept') is "0.1"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html
new file mode 100644 (file)
index 0000000..9f6b53d
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-dom-intercept-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr-expected.txt
new file mode 100644 (file)
index 0000000..8d2f40a
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'offset' attribute of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.getAttribute('offset') is "0.5"
+PASS feGFunc.getAttribute('offset') is "0.5"
+PASS feBFunc.getAttribute('offset') is "0.5"
+PASS feAFunc.getAttribute('offset') is "0.5"
+PASS feRFunc.getAttribute('offset') is "0.1"
+PASS feGFunc.getAttribute('offset') is "0.1"
+PASS feBFunc.getAttribute('offset') is "0.1"
+PASS feAFunc.getAttribute('offset') is "0.1"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html
new file mode 100644 (file)
index 0000000..ecf78e3
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-dom-offset-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr-expected.txt
new file mode 100644 (file)
index 0000000..ac8868a
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'slope' attribute of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.getAttribute('slope') is "1"
+PASS feGFunc.getAttribute('slope') is "1"
+PASS feBFunc.getAttribute('slope') is "1"
+PASS feAFunc.getAttribute('slope') is "1"
+PASS feRFunc.getAttribute('slope') is "2"
+PASS feGFunc.getAttribute('slope') is "2"
+PASS feBFunc.getAttribute('slope') is "2"
+PASS feAFunc.getAttribute('slope') is "2"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html
new file mode 100644 (file)
index 0000000..97ce825
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-dom-slope-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr-expected.txt
new file mode 100644 (file)
index 0000000..dcf2c00
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'tableValues' attribute of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.getAttribute('tableValues') is "0 1 1 0"
+PASS feGFunc.getAttribute('tableValues') is "0 1 1 0.5"
+PASS feBFunc.getAttribute('tableValues') is "0 0 1 0.1"
+PASS feAFunc.getAttribute('tableValues') is "0.5 10 1 0.5"
+PASS feRFunc.getAttribute('tableValues') is "0 1 0.9 0"
+PASS feGFunc.getAttribute('tableValues') is "0 1 1 0.6"
+PASS feBFunc.getAttribute('tableValues') is "0 0 1 0.2"
+PASS feAFunc.getAttribute('tableValues') is "0.5 10 1 0.9"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html
new file mode 100644 (file)
index 0000000..fed0771
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-dom-tableValues-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr-expected.txt
new file mode 100644 (file)
index 0000000..22ba876
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'type' attribute of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.getAttribute('type') is "gamma"
+PASS feGFunc.getAttribute('type') is "gamma"
+PASS feBFunc.getAttribute('type') is "gamma"
+PASS feAFunc.getAttribute('type') is "gamma"
+PASS feRFunc.getAttribute('type') is "linear"
+PASS feGFunc.getAttribute('type') is "linear"
+PASS feBFunc.getAttribute('type') is "linear"
+PASS feAFunc.getAttribute('type') is "linear"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html
new file mode 100644 (file)
index 0000000..9bf2804
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-dom-type-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop-expected.txt
new file mode 100644 (file)
index 0000000..a366d8d
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'amplitude' property of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.amplitude.baseVal is 3
+PASS feRFunc.amplitude.baseVal is 3
+PASS feRFunc.amplitude.baseVal is 3
+PASS feRFunc.amplitude.baseVal is 3
+PASS feRFunc.amplitude.baseVal is 1
+PASS feGFunc.amplitude.baseVal is 1
+PASS feBFunc.amplitude.baseVal is 1
+PASS feAFunc.amplitude.baseVal is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html
new file mode 100644 (file)
index 0000000..d12e0bd
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-svgdom-amplitude-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop-expected.txt
new file mode 100644 (file)
index 0000000..595f038
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'exponent' property of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.exponent.baseVal is 2
+PASS feGFunc.exponent.baseVal is 2
+PASS feBFunc.exponent.baseVal is 2
+PASS feAFunc.exponent.baseVal is 2
+PASS feRFunc.exponent.baseVal is 1
+PASS feGFunc.exponent.baseVal is 1
+PASS feBFunc.exponent.baseVal is 1
+PASS feAFunc.exponent.baseVal is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html
new file mode 100644 (file)
index 0000000..148990f
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-svgdom-exponent-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop-expected.txt
new file mode 100644 (file)
index 0000000..dc79eea
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'intercept' property of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS Math.round(feRFunc.intercept.baseVal * 100) is 20
+PASS Math.round(feGFunc.intercept.baseVal * 100) is 20
+PASS Math.round(feBFunc.intercept.baseVal * 100) is 20
+PASS Math.round(feAFunc.intercept.baseVal * 100) is 20
+PASS Math.round(feRFunc.intercept.baseVal * 100) is 10
+PASS Math.round(feGFunc.intercept.baseVal * 100) is 10
+PASS Math.round(feBFunc.intercept.baseVal * 100) is 10
+PASS Math.round(feAFunc.intercept.baseVal * 100) is 10
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html
new file mode 100644 (file)
index 0000000..31a9d1a
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-svgdom-intercept-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop-expected.txt
new file mode 100644 (file)
index 0000000..c3555ce
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'offset' property of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS Math.round(feRFunc.offset.baseVal * 100) is 50
+PASS Math.round(feGFunc.offset.baseVal * 100) is 50
+PASS Math.round(feBFunc.offset.baseVal * 100) is 50
+PASS Math.round(feAFunc.offset.baseVal * 100) is 50
+PASS Math.round(feRFunc.offset.baseVal * 100) is 10
+PASS Math.round(feGFunc.offset.baseVal * 100) is 10
+PASS Math.round(feBFunc.offset.baseVal * 100) is 10
+PASS Math.round(feAFunc.offset.baseVal * 100) is 10
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html
new file mode 100644 (file)
index 0000000..268170e
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-svgdom-offset-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop-expected.txt
new file mode 100644 (file)
index 0000000..3dbba13
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'slope' property of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.slope.baseVal is 1
+PASS feGFunc.slope.baseVal is 1
+PASS feBFunc.slope.baseVal is 1
+PASS feAFunc.slope.baseVal is 1
+PASS feRFunc.slope.baseVal is 2
+PASS feGFunc.slope.baseVal is 2
+PASS feBFunc.slope.baseVal is 2
+PASS feAFunc.slope.baseVal is 2
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html
new file mode 100644 (file)
index 0000000..bf88239
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-svgdom-slope-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop-expected.txt
new file mode 100644 (file)
index 0000000..ee904d3
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'tableValues' property of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS SVGNumberListToString(feRFunc.tableValues.baseVal) is "0 1 1 0 "
+PASS SVGNumberListToString(feGFunc.tableValues.baseVal) is "0 1 1 0.5 "
+PASS SVGNumberListToString(feBFunc.tableValues.baseVal) is "0 0 1 0.1 "
+PASS SVGNumberListToString(feAFunc.tableValues.baseVal) is "0.5 10 1 0.5 "
+PASS SVGNumberListToString(feRFunc.tableValues.baseVal) is "0 1 0.9 0 "
+PASS SVGNumberListToString(feGFunc.tableValues.baseVal) is "0 1 1 0.6 "
+PASS SVGNumberListToString(feBFunc.tableValues.baseVal) is "0 0 1 0.2 "
+PASS SVGNumberListToString(feAFunc.tableValues.baseVal) is "0.5 10 1 0.9 "
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html
new file mode 100644 (file)
index 0000000..4193e2e
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-svgdom-tableValues-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop-expected.txt
new file mode 100644 (file)
index 0000000..3f91dc7
--- /dev/null
@@ -0,0 +1,19 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'type' property of the SVGFEComponentTransferElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS feRFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA
+PASS feGFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA
+PASS feBFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA
+PASS feAFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA
+PASS feRFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR
+PASS feGFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR
+PASS feBFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR
+PASS feAFunc.type.baseVal is SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html
new file mode 100644 (file)
index 0000000..7ecf7be
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEComponentTransferElement-svgdom-type-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-amplitude-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-amplitude-attr.js
new file mode 100644 (file)
index 0000000..ce2977e
--- /dev/null
@@ -0,0 +1,78 @@
+// [Name] SVGFEComponentTransferElement-dom-amplitude-attr.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'amplitude' attribute of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("id", "fr");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "3");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("id", "fg");
+feGFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "3");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("id", "fb");
+feBFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "3");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("id", "fb");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("amplitude", "3");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("feRFunc.getAttribute('amplitude')", "3");
+shouldBeEqualToString("feRFunc.getAttribute('amplitude')", "3");
+shouldBeEqualToString("feRFunc.getAttribute('amplitude')", "3");
+shouldBeEqualToString("feRFunc.getAttribute('amplitude')", "3");
+
+function executeTest() {
+    feRFunc.setAttribute("amplitude", "1");
+       feGFunc.setAttribute("amplitude", "1");
+       feBFunc.setAttribute("amplitude", "1");
+       feAFunc.setAttribute("amplitude", "1");
+
+    shouldBeEqualToString("feRFunc.getAttribute('amplitude')", "1");
+       shouldBeEqualToString("feGFunc.getAttribute('amplitude')", "1");
+       shouldBeEqualToString("feBFunc.getAttribute('amplitude')", "1");
+       shouldBeEqualToString("feAFunc.getAttribute('amplitude')", "1");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-exponent-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-exponent-attr.js
new file mode 100644 (file)
index 0000000..b10b314
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-dom-exponent-attr.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'exponent' attribute of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("exponent", "2");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "gamma");
+feGFunc.setAttribute("exponent", "2");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "gamma");
+feBFunc.setAttribute("exponent", "2");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("exponent", "2");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("feRFunc.getAttribute('exponent')", "2");
+shouldBeEqualToString("feGFunc.getAttribute('exponent')", "2");
+shouldBeEqualToString("feBFunc.getAttribute('exponent')", "2");
+shouldBeEqualToString("feAFunc.getAttribute('exponent')", "2");
+
+function executeTest() {
+    feRFunc.setAttribute("exponent", "1");
+    feGFunc.setAttribute("exponent", "1");
+    feBFunc.setAttribute("exponent", "1");
+    feAFunc.setAttribute("exponent", "1");
+
+    shouldBeEqualToString("feRFunc.getAttribute('exponent')", "1");
+    shouldBeEqualToString("feGFunc.getAttribute('exponent')", "1");
+    shouldBeEqualToString("feBFunc.getAttribute('exponent')", "1");
+    shouldBeEqualToString("feAFunc.getAttribute('exponent')", "1");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-intercept-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-intercept-attr.js
new file mode 100644 (file)
index 0000000..33813ea
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-dom-intercept-attr.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'intercept' attribute of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "linear");
+feRFunc.setAttribute("intercept", "0.2");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "linear");
+feGFunc.setAttribute("intercept", "0.2");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "linear");
+feBFunc.setAttribute("intercept", "0.2");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "linear");
+feAFunc.setAttribute("intercept", "0.2");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("feRFunc.getAttribute('intercept')", "0.2");
+shouldBeEqualToString("feGFunc.getAttribute('intercept')", "0.2");
+shouldBeEqualToString("feBFunc.getAttribute('intercept')", "0.2");
+shouldBeEqualToString("feAFunc.getAttribute('intercept')", "0.2");
+
+function executeTest() {
+    feRFunc.setAttribute("intercept", "0.1");
+       feGFunc.setAttribute("intercept", "0.1");
+       feBFunc.setAttribute("intercept", "0.1");
+       feAFunc.setAttribute("intercept", "0.1");
+    
+       shouldBeEqualToString("feRFunc.getAttribute('intercept')", "0.1");
+       shouldBeEqualToString("feGFunc.getAttribute('intercept')", "0.1");
+       shouldBeEqualToString("feBFunc.getAttribute('intercept')", "0.1");
+       shouldBeEqualToString("feAFunc.getAttribute('intercept')", "0.1");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-offset-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-offset-attr.js
new file mode 100644 (file)
index 0000000..6f13e23
--- /dev/null
@@ -0,0 +1,70 @@
+// [Name] SVGFEComponentTransferElement-dom-offset-attr.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'offset' attribute of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("offset", "0.5");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "gamma");
+feGFunc.setAttribute("offset", "0.5");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "gamma");
+feBFunc.setAttribute("offset", "0.5");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("offset", "0.5");
+
+var feComponentTransferElement = createSVGElement("feComponentTransfer");
+feComponentTransferElement.appendChild(feRFunc);
+feComponentTransferElement.appendChild(feGFunc);
+feComponentTransferElement.appendChild(feBFunc);
+feComponentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.appendChild(feComponentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("feRFunc.getAttribute('offset')", "0.5");
+shouldBeEqualToString("feGFunc.getAttribute('offset')", "0.5");
+shouldBeEqualToString("feBFunc.getAttribute('offset')", "0.5");
+shouldBeEqualToString("feAFunc.getAttribute('offset')", "0.5");
+
+function executeTest() {
+    feRFunc.setAttribute("offset", "0.1");
+       feGFunc.setAttribute("offset", "0.1");
+       feBFunc.setAttribute("offset", "0.1");
+       feAFunc.setAttribute("offset", "0.1");
+
+    shouldBeEqualToString("feRFunc.getAttribute('offset')", "0.1");
+       shouldBeEqualToString("feGFunc.getAttribute('offset')", "0.1");
+       shouldBeEqualToString("feBFunc.getAttribute('offset')", "0.1");
+       shouldBeEqualToString("feAFunc.getAttribute('offset')", "0.1");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-slope-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-slope-attr.js
new file mode 100644 (file)
index 0000000..f8336bc
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-dom-slope-attr.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'slope' attribute of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "linear");
+feRFunc.setAttribute("slope", "1");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "linear");
+feGFunc.setAttribute("slope", "1");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "linear");
+feBFunc.setAttribute("slope", "1");
+
+var feAFunc = createSVGElement("feFuncB");
+feAFunc.setAttribute("type", "linear");
+feAFunc.setAttribute("slope", "1");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("feRFunc.getAttribute('slope')", "1");
+shouldBeEqualToString("feGFunc.getAttribute('slope')", "1");
+shouldBeEqualToString("feBFunc.getAttribute('slope')", "1");
+shouldBeEqualToString("feAFunc.getAttribute('slope')", "1");
+
+function executeTest() {
+    feRFunc.setAttribute("slope", "2");
+       feGFunc.setAttribute("slope", "2");
+       feBFunc.setAttribute("slope", "2");
+       feAFunc.setAttribute("slope", "2");
+
+    shouldBeEqualToString("feRFunc.getAttribute('slope')", "2");
+    shouldBeEqualToString("feGFunc.getAttribute('slope')", "2");
+    shouldBeEqualToString("feBFunc.getAttribute('slope')", "2");
+    shouldBeEqualToString("feAFunc.getAttribute('slope')", "2");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-tableValues-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-tableValues-attr.js
new file mode 100644 (file)
index 0000000..39ba3e5
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-dom-tableValues-attr.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'tableValues' attribute of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "table");
+feRFunc.setAttribute("tableValues", "0 1 1 0");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "table");
+feGFunc.setAttribute("tableValues", "0 1 1 0.5");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "table");
+feBFunc.setAttribute("tableValues", "0 0 1 0.1");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "table");
+feAFunc.setAttribute("tableValues", "0.5 10 1 0.5");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("feRFunc.getAttribute('tableValues')", "0 1 1 0");
+shouldBeEqualToString("feGFunc.getAttribute('tableValues')", "0 1 1 0.5");
+shouldBeEqualToString("feBFunc.getAttribute('tableValues')", "0 0 1 0.1");
+shouldBeEqualToString("feAFunc.getAttribute('tableValues')", "0.5 10 1 0.5");
+
+function executeTest() {
+    feRFunc.setAttribute("tableValues", "0 1 0.9 0");
+       feGFunc.setAttribute("tableValues", "0 1 1 0.6");
+       feBFunc.setAttribute("tableValues", "0 0 1 0.2");
+       feAFunc.setAttribute("tableValues", "0.5 10 1 0.9");
+    
+       shouldBeEqualToString("feRFunc.getAttribute('tableValues')", "0 1 0.9 0");
+       shouldBeEqualToString("feGFunc.getAttribute('tableValues')", "0 1 1 0.6");
+       shouldBeEqualToString("feBFunc.getAttribute('tableValues')", "0 0 1 0.2");
+       shouldBeEqualToString("feAFunc.getAttribute('tableValues')", "0.5 10 1 0.9");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-type-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-dom-type-attr.js
new file mode 100644 (file)
index 0000000..2c66fa8
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-dom-type-attr.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'type' attribute of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "10");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "gamma");
+feGFunc.setAttribute("amplitude", "10");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "gamma");
+feBFunc.setAttribute("amplitude", "110");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("amplitude", "110");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("feRFunc.getAttribute('type')", "gamma");
+shouldBeEqualToString("feGFunc.getAttribute('type')", "gamma");
+shouldBeEqualToString("feBFunc.getAttribute('type')", "gamma");
+shouldBeEqualToString("feAFunc.getAttribute('type')", "gamma");
+
+function executeTest() {
+    feRFunc.setAttribute("type", "linear");
+    feGFunc.setAttribute("type", "linear");
+    feBFunc.setAttribute("type", "linear");
+    feAFunc.setAttribute("type", "linear");
+
+    shouldBeEqualToString("feRFunc.getAttribute('type')", "linear");
+       shouldBeEqualToString("feGFunc.getAttribute('type')", "linear");
+       shouldBeEqualToString("feBFunc.getAttribute('type')", "linear");
+       shouldBeEqualToString("feAFunc.getAttribute('type')", "linear");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-amplitude-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-amplitude-prop.js
new file mode 100644 (file)
index 0000000..8d9fd6c
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-svgdom-amplitude-prop.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'amplitude' property of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "3");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "3");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "3");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("amplitude", "3");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBe("feRFunc.amplitude.baseVal", "3");
+shouldBe("feRFunc.amplitude.baseVal", "3");
+shouldBe("feRFunc.amplitude.baseVal", "3");
+shouldBe("feRFunc.amplitude.baseVal", "3");
+
+function executeTest() {
+    feRFunc.amplitude.baseVal = 1;
+    feGFunc.amplitude.baseVal = 1;
+    feBFunc.amplitude.baseVal = 1;
+    feAFunc.amplitude.baseVal = 1;
+
+    shouldBe("feRFunc.amplitude.baseVal", "1");
+    shouldBe("feGFunc.amplitude.baseVal", "1");
+    shouldBe("feBFunc.amplitude.baseVal", "1");
+    shouldBe("feAFunc.amplitude.baseVal", "1");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-exponent-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-exponent-prop.js
new file mode 100644 (file)
index 0000000..85f5e48
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-svgdom-exponent-prop.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'exponent' property of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("exponent", "2");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "gamma");
+feGFunc.setAttribute("exponent", "2");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "gamma");
+feBFunc.setAttribute("exponent", "2");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("exponent", "2");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBe("feRFunc.exponent.baseVal", "2");
+shouldBe("feGFunc.exponent.baseVal", "2");
+shouldBe("feBFunc.exponent.baseVal", "2");
+shouldBe("feAFunc.exponent.baseVal", "2");
+
+function executeTest() {
+    feRFunc.exponent.baseVal = 1;
+    feGFunc.exponent.baseVal = 1
+    feBFunc.exponent.baseVal = 1
+    feAFunc.exponent.baseVal = 1
+
+    shouldBe("feRFunc.exponent.baseVal", "1");
+    shouldBe("feGFunc.exponent.baseVal", "1");
+    shouldBe("feBFunc.exponent.baseVal", "1");
+    shouldBe("feAFunc.exponent.baseVal", "1");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-intercept-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-intercept-prop.js
new file mode 100644 (file)
index 0000000..cffb09b
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-svgdom-intercept-prop.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'intercept' property of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "linear");
+feRFunc.setAttribute("intercept", "0.2");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "linear");
+feGFunc.setAttribute("intercept", "0.2");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "linear");
+feBFunc.setAttribute("intercept", "0.2");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "linear");
+feAFunc.setAttribute("intercept", "0.2");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBe("Math.round(feRFunc.intercept.baseVal * 100)", "20");
+shouldBe("Math.round(feGFunc.intercept.baseVal * 100)", "20");
+shouldBe("Math.round(feBFunc.intercept.baseVal * 100)", "20");
+shouldBe("Math.round(feAFunc.intercept.baseVal * 100)", "20");
+
+function executeTest() {
+    feRFunc.intercept.baseVal = 0.1;
+    feGFunc.intercept.baseVal = 0.1;
+    feBFunc.intercept.baseVal = 0.1;
+    feAFunc.intercept.baseVal = 0.1;
+
+    shouldBe("Math.round(feRFunc.intercept.baseVal * 100)", "10");
+    shouldBe("Math.round(feGFunc.intercept.baseVal * 100)", "10");
+    shouldBe("Math.round(feBFunc.intercept.baseVal * 100)", "10");
+    shouldBe("Math.round(feAFunc.intercept.baseVal * 100)", "10");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-offset-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-offset-prop.js
new file mode 100644 (file)
index 0000000..e3ba0d7
--- /dev/null
@@ -0,0 +1,70 @@
+// [Name] SVGFEComponentTransferElement-svgdom-offset-prop.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'offset' property of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("offset", "0.5");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "gamma");
+feGFunc.setAttribute("offset", "0.5");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "gamma");
+feBFunc.setAttribute("offset", "0.5");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("offset", "0.5");
+
+var feComponentTransferElement = createSVGElement("feComponentTransfer");
+feComponentTransferElement.appendChild(feRFunc);
+feComponentTransferElement.appendChild(feGFunc);
+feComponentTransferElement.appendChild(feBFunc);
+feComponentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.appendChild(feComponentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBe("Math.round(feRFunc.offset.baseVal * 100)", "50");
+shouldBe("Math.round(feGFunc.offset.baseVal * 100)", "50");
+shouldBe("Math.round(feBFunc.offset.baseVal * 100)", "50");
+shouldBe("Math.round(feAFunc.offset.baseVal * 100)", "50");
+
+function executeTest() {
+    feRFunc.offset.baseVal = 0.1;
+       feGFunc.offset.baseVal = 0.1;
+       feBFunc.offset.baseVal = 0.1;
+       feAFunc.offset.baseVal = 0.1;
+
+    shouldBe("Math.round(feRFunc.offset.baseVal * 100)", "10");
+       shouldBe("Math.round(feGFunc.offset.baseVal * 100)", "10");
+       shouldBe("Math.round(feBFunc.offset.baseVal * 100)", "10");
+       shouldBe("Math.round(feAFunc.offset.baseVal * 100)", "10");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-slope-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-slope-prop.js
new file mode 100644 (file)
index 0000000..9099091
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-svgdom-slope-prop.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'slope' property of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "linear");
+feRFunc.setAttribute("slope", "1");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "linear");
+feGFunc.setAttribute("slope", "1");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "linear");
+feBFunc.setAttribute("slope", "1");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "linear");
+feAFunc.setAttribute("slope", "1");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBe("feRFunc.slope.baseVal", "1");
+shouldBe("feGFunc.slope.baseVal", "1");
+shouldBe("feBFunc.slope.baseVal", "1");
+shouldBe("feAFunc.slope.baseVal", "1");
+
+function executeTest() {
+    feRFunc.slope.baseVal = 2;
+       feGFunc.slope.baseVal = 2;
+       feBFunc.slope.baseVal = 2;
+       feAFunc.slope.baseVal = 2;
+
+    shouldBe("feRFunc.slope.baseVal", "2");
+       shouldBe("feGFunc.slope.baseVal", "2");
+       shouldBe("feBFunc.slope.baseVal", "2");
+       shouldBe("feAFunc.slope.baseVal", "2");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-tableValues-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-tableValues-prop.js
new file mode 100644 (file)
index 0000000..9f743c6
--- /dev/null
@@ -0,0 +1,98 @@
+// [Name] SVGFEComponentTransferElement-svgdom-tableValues-prop.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+// SVGNumberListToString converts a list to a string.
+function SVGNumberListToString(list) {
+    var result = "";
+    for (var i = 0; i < list.numberOfItems; ++i) {
+        // We should multiply and round the value of listItem otherwise the expected value cannot be precisely represented as a floating point 
+        // number and later the comparison will fail.
+        var item = Math.round(list.getItem(i).value * 1000) / 1000;
+        result += item;
+        result += " ";
+    }
+    return result;
+}
+
+description("Tests dynamic updates of the 'tableValues' property of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "table");
+feRFunc.setAttribute("tableValues", "0 1 1 0");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "table");
+feGFunc.setAttribute("tableValues", "0 1 1 0.5");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "table");
+feBFunc.setAttribute("tableValues", "0 0 1 0.1");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "table");
+feAFunc.setAttribute("tableValues", "0.5 10 1 0.5");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBeEqualToString("SVGNumberListToString(feRFunc.tableValues.baseVal)", "0 1 1 0 ");
+shouldBeEqualToString("SVGNumberListToString(feGFunc.tableValues.baseVal)", "0 1 1 0.5 ");
+shouldBeEqualToString("SVGNumberListToString(feBFunc.tableValues.baseVal)", "0 0 1 0.1 ");
+shouldBeEqualToString("SVGNumberListToString(feAFunc.tableValues.baseVal)", "0.5 10 1 0.5 ");
+
+function executeTest() {
+    var number1 = rootSVGElement.createSVGNumber();
+    number1.value = 0.9;
+    feRFunc.tableValues.baseVal.replaceItem(number1, 2);
+
+    var number2 = rootSVGElement.createSVGNumber();
+    number2.value = 0.6;
+    feGFunc.tableValues.baseVal.replaceItem(number2, 3);
+
+    var number3 = rootSVGElement.createSVGNumber();
+    number3.value = 0.2;
+    feBFunc.tableValues.baseVal.replaceItem(number3, 3);
+
+    var number4 = rootSVGElement.createSVGNumber();
+    number4.value = 0.9;
+    feAFunc.tableValues.baseVal.replaceItem(number4, 3);
+
+    shouldBeEqualToString("SVGNumberListToString(feRFunc.tableValues.baseVal)", "0 1 0.9 0 ");
+    shouldBeEqualToString("SVGNumberListToString(feGFunc.tableValues.baseVal)", "0 1 1 0.6 ");
+    shouldBeEqualToString("SVGNumberListToString(feBFunc.tableValues.baseVal)", "0 0 1 0.2 ");
+    shouldBeEqualToString("SVGNumberListToString(feAFunc.tableValues.baseVal)", "0.5 10 1 0.9 ");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-type-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEComponentTransferElement-svgdom-type-prop.js
new file mode 100644 (file)
index 0000000..9a5a5e8
--- /dev/null
@@ -0,0 +1,74 @@
+// [Name] SVGFEComponentTransferElement-svgdom-type-prop.js
+// [Expected rendering result] An image with feComponentTransfer filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'type' property of the SVGFEComponentTransferElement object")
+createSVGTestCase();
+
+var feRFunc = createSVGElement("feFuncR");
+feRFunc.setAttribute("type", "gamma");
+feRFunc.setAttribute("amplitude", "10");
+
+var feGFunc = createSVGElement("feFuncG");
+feGFunc.setAttribute("type", "gamma");
+feGFunc.setAttribute("amplitude", "10");
+
+var feBFunc = createSVGElement("feFuncB");
+feBFunc.setAttribute("type", "gamma");
+feBFunc.setAttribute("amplitude", "110");
+
+var feAFunc = createSVGElement("feFuncA");
+feAFunc.setAttribute("type", "gamma");
+feAFunc.setAttribute("amplitude", "110");
+
+var feCompnentTransferElement = createSVGElement("feComponentTransfer");
+feCompnentTransferElement.appendChild(feRFunc);
+feCompnentTransferElement.appendChild(feGFunc);
+feCompnentTransferElement.appendChild(feBFunc);
+feCompnentTransferElement.appendChild(feAFunc);
+
+var compTranFilter = createSVGElement("filter");
+compTranFilter.setAttribute("id", "compTranFilter");
+compTranFilter.setAttribute("filterUnits", "objectBoundingBox");
+compTranFilter.setAttribute("x", "0%");
+compTranFilter.setAttribute("y", "0%");
+compTranFilter.setAttribute("width", "100%");
+compTranFilter.setAttribute("height", "100%");
+compTranFilter.appendChild(feCompnentTransferElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(compTranFilter);
+rootSVGElement.appendChild(defsElement);
+
+var imageElement = createSVGElement("image");
+imageElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/struct-image-01.png");
+imageElement.setAttribute("width", "400");
+imageElement.setAttribute("height", "200");
+imageElement.setAttribute("preserveAspectRatio", "none");
+imageElement.setAttribute("filter", "url(#compTranFilter)");
+rootSVGElement.appendChild(imageElement);
+
+rootSVGElement.setAttribute("width", "400");
+rootSVGElement.setAttribute("height", "200");
+
+shouldBe("feRFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA");
+shouldBe("feGFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA");
+shouldBe("feBFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA");
+shouldBe("feAFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_GAMMA");
+
+function executeTest() {
+    feRFunc.type.baseVal = SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR;
+    feGFunc.type.baseVal = SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR;
+    feBFunc.type.baseVal = SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR;
+    feAFunc.type.baseVal = SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR;
+
+       shouldBe("feRFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR");
+       shouldBe("feGFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR");
+       shouldBe("feBFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR");
+       shouldBe("feAFunc.type.baseVal", "SVGComponentTransferFunctionElement.SVG_FECOMPONENTTRANSFER_TYPE_LINEAR");
+
+    completeTest();
+}
+
+startTest(imageElement, 100, 100);
+
+var successfullyParsed = true;
index 02e32c5..bca2626 100644 (file)
@@ -1,3 +1,44 @@
+2011-10-13  Renata Hodovan  <reni@webkit.org>
+
+        FEComponentTransfer element doesn't support dynamic invalidation
+        https://bugs.webkit.org/show_bug.cgi?id=69747
+
+        The dynamic changes are captured by the svgAttributeChange() function, and
+        invalidate the filter primitive if necessary.
+        invalidateFilterPrimitiveParent() is a new free function in
+        SVGFilterPrimitiveStanardAttributes what makes the invalidation possible
+        by objects not inherited from SVGFilterPrimitiveStanardAttributes too.
+        This solution was used in SVGFEMergeNodeElement::svgAttributeChanged()
+        previously and now it can use this new function too.
+
+        Reviewed by Nikolas Zimmermann.
+
+        Tests: svg/dynamic-updates/SVGFEComponentTransferElement-dom-amplitude-attr.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-dom-exponent-attr.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-dom-intercept-attr.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-dom-offset-attr.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-dom-slope-attr.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-dom-tableValues-attr.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-dom-type-attr.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-amplitude-prop.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-exponent-prop.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-intercept-prop.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-offset-prop.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-slope-prop.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-tableValues-prop.html
+               svg/dynamic-updates/SVGFEComponentTransferElement-svgdom-type-prop.html
+
+        * svg/SVGComponentTransferFunctionElement.cpp:
+        (WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged):
+        * svg/SVGComponentTransferFunctionElement.h:
+        * svg/SVGFEComponentTransferElement.cpp:
+        (WebCore::SVGFEComponentTransferElement::build):
+        * svg/SVGFEMergeNodeElement.cpp:
+        (WebCore::SVGFEMergeNodeElement::svgAttributeChanged):
+        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+        (WebCore::invalidateFilterPrimitiveParent):
+        * svg/SVGFilterPrimitiveStandardAttributes.h:
+
 2011-10-13  Deepak Sherveghar  <bpwv64@motorola.com>
 
         REGRESSION (r95381): Standalone video can be focused and draws a focus ring.
index 4082a7f..8d511be 100644 (file)
@@ -24,6 +24,7 @@
 #include "SVGComponentTransferFunctionElement.h"
 
 #include "Attribute.h"
+#include "SVGElementInstance.h"
 #include "SVGFEComponentTransferElement.h"
 #include "SVGNames.h"
 #include "SVGNumberList.h"
@@ -125,6 +126,18 @@ void SVGComponentTransferFunctionElement::parseMappedAttribute(Attribute* attr)
     ASSERT_NOT_REACHED();
 }
 
+void SVGComponentTransferFunctionElement::svgAttributeChanged(const QualifiedName& attrName)
+{
+    if (!isSupportedAttribute(attrName)) {
+        SVGElement::svgAttributeChanged(attrName);
+        return;
+    }
+
+    SVGElementInstance::InvalidationGuard invalidationGuard(this);
+
+    invalidateFilterPrimitiveParent(this);
+}
+
 ComponentTransferFunction SVGComponentTransferFunctionElement::transferFunction() const
 {
     ComponentTransferFunction func;
index 2101ff8..f333c65 100644 (file)
@@ -77,9 +77,9 @@ public:
 protected:
     SVGComponentTransferFunctionElement(const QualifiedName&, Document*);
 
-    // FIXME: svgAttributeChanged missing.
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseMappedAttribute(Attribute*);
+    virtual void svgAttributeChanged(const QualifiedName&);
     
 private:
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGComponentTransferFunctionElement)
index 57d50ce..f2a97ad 100644 (file)
@@ -96,7 +96,7 @@ PassRefPtr<FilterEffect> SVGFEComponentTransferElement::build(SVGFilterBuilder*
         else if (node->hasTagName(SVGNames::feFuncGTag))
             green = static_cast<SVGFEFuncGElement*>(node)->transferFunction();
         else if (node->hasTagName(SVGNames::feFuncBTag))
-           blue = static_cast<SVGFEFuncBElement*>(node)->transferFunction();
+            blue = static_cast<SVGFEFuncBElement*>(node)->transferFunction();
         else if (node->hasTagName(SVGNames::feFuncATag))
             alpha = static_cast<SVGFEFuncAElement*>(node)->transferFunction();
     }
index 9394ef9..d5f37f1 100644 (file)
@@ -28,6 +28,7 @@
 #include "RenderSVGResource.h"
 #include "SVGElementInstance.h"
 #include "SVGFilterElement.h"
+#include "SVGFilterPrimitiveStandardAttributes.h"
 #include "SVGNames.h"
 
 namespace WebCore {
@@ -82,17 +83,9 @@ void SVGFEMergeNodeElement::svgAttributeChanged(const QualifiedName& attrName)
     }
 
     SVGElementInstance::InvalidationGuard invalidationGuard(this);
-    
-    if (attrName == SVGNames::inAttr) {
-        ContainerNode* parent = parentNode();
-        if (!parent)
-            return;
-
-        RenderObject* renderer = parent->renderer();
-        if (!renderer || !renderer->isSVGResourceFilterPrimitive())
-            return;
 
-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
+    if (attrName == SVGNames::inAttr) {
+        invalidateFilterPrimitiveParent(this);
         return;
     }
 
index ecba3df..35fa32b 100644 (file)
@@ -169,6 +169,23 @@ bool SVGFilterPrimitiveStandardAttributes::rendererIsNeeded(const NodeRenderingC
     return false;
 }
 
+void invalidateFilterPrimitiveParent(SVGElement* element)
+{
+    if (!element)
+        return;
+
+    ContainerNode* parent = element->parentNode();
+
+    if (!parent)
+        return;
+
+    RenderObject* renderer = parent->renderer();
+    if (!renderer || !renderer->isSVGResourceFilterPrimitive())
+        return;
+
+    RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer, false);
+}
+
 }
 
 #endif // ENABLE(SVG)
index a731641..bcd1d3f 100644 (file)
@@ -80,6 +80,8 @@ private:
     END_DECLARE_ANIMATED_PROPERTIES
 };
 
+void invalidateFilterPrimitiveParent(SVGElement*);
+
 } // namespace WebCore
 
 #endif // ENABLE(SVG)