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

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 13:46:25 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit a60d8c54baa3b0d802b7ce2196f3d1a0fba488fc
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sun Sep 26 17:45:16 2010 +0000

    2010-09-26  Renata Hodovan  <reni at inf.u-szeged.hu>
    
            Reviewed by Dirk Schulze.
    
            SVGFEBlendElement doesn't support dynamic invalidation, when attributes change.
            https://bugs.webkit.org/show_bug.cgi?id=46464
            Adding layout tests for feBlend dynamic changes.
    
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.checksum: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.png: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.checksum: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.png: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.checksum: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.png: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.checksum: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.png: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.checksum: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.png: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.checksum: Added.
            * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.png: Added.
            * svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.txt: Added.
            * svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html: Added.
            * svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.txt: Added.
            * svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html: Added.
            * svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.txt: Added.
            * svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html: Added.
            * svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.txt: Added.
            * svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html: Added.
            * svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.txt: Added.
            * svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html: Added.
            * svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.txt: Added.
            * svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html: Added.
            * svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in-attr.js: Added.
            (executeTest):
            * svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in2-attr.js: Added.
            (executeTest):
            * svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-mode-attr.js: Added.
            (executeTest):
            * svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in-prop.js: Added.
            (executeTest):
            * svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in2-prop.js: Added.
            (executeTest):
            * svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-mode-prop.js: Added.
            (executeTest):
    2010-09-26  Renata Hodovan  <reni at inf.u-szeged.hu>
    
            Reviewed by Dirk Schulze.
    
            SVGFEBlendElement doesn't support dynamic invalidation, when attributes change.
            https://bugs.webkit.org/show_bug.cgi?id=46464
    
            Tests: svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html
                   svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html
                   svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html
                   svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html
                   svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html
                   svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html
    
            * svg/SVGFEBlendElement.cpp:
            (WebCore::SVGFEBlendElement::svgAttributeChanged):
            * svg/SVGFEBlendElement.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68344 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 0afedbc..ac31b10 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,48 @@
+2010-09-26  Renata Hodovan  <reni at inf.u-szeged.hu>
+
+        Reviewed by Dirk Schulze.
+
+        SVGFEBlendElement doesn't support dynamic invalidation, when attributes change.
+        https://bugs.webkit.org/show_bug.cgi?id=46464
+        Adding layout tests for feBlend dynamic changes.
+
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.checksum: Added.
+        * platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.png: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html: Added.
+        * svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in2-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-mode-attr.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in2-prop.js: Added.
+        (executeTest):
+        * svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-mode-prop.js: Added.
+        (executeTest):
+
 2010-09-26  Andreas Kling  <andreas.kling at nokia.com>
 
         Reviewed by Dan Bernstein.
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.checksum
new file mode 100644
index 0000000..6cbe8a3
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.checksum
@@ -0,0 +1 @@
+c840f86f6b57eeaed82ab13fcf0a4fea
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.png
new file mode 100644
index 0000000..c89c2ed
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.checksum
new file mode 100644
index 0000000..e442df3
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.checksum
@@ -0,0 +1 @@
+288af65059aabe4519de8c33c17a1867
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.png
new file mode 100644
index 0000000..465c3b8
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.checksum
new file mode 100644
index 0000000..32a6319
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.checksum
@@ -0,0 +1 @@
+f9c21b285eaedac05969f629c9c72b9c
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.png
new file mode 100644
index 0000000..570d459
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.checksum
new file mode 100644
index 0000000..d9c733a
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.checksum
@@ -0,0 +1 @@
+861aa6c83c530cb9a0149a319e573cc7
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.png
new file mode 100644
index 0000000..9c803d3
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.checksum
new file mode 100644
index 0000000..303580b
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.checksum
@@ -0,0 +1 @@
+16abe850169e572cb528ad6f280af3ee
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.png
new file mode 100644
index 0000000..ccf5ca2
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.checksum b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.checksum
new file mode 100644
index 0000000..4e501fe
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.checksum
@@ -0,0 +1 @@
+76f2292a18893da5f276577a3b2e60ea
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.png
new file mode 100644
index 0000000..63c2d9e
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.png differ
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.txt
new file mode 100644
index 0000000..b10e47b
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr-expected.txt
@@ -0,0 +1,21 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'in' attribute of the SVGFEBlendElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS normalBlend.getAttribute('in') is "SourceAlpha"
+PASS multiplyBlend.getAttribute('in') is "SourceAlpha"
+PASS screenBlend.getAttribute('in') is "SourceAlpha"
+PASS darkenBlend.getAttribute('in') is "SourceAlpha"
+PASS lightenBlend.getAttribute('in') is "SourceAlpha"
+PASS normalBlend.getAttribute('in') is "SourceGraphic"
+PASS multiplyBlend.getAttribute('in') is "SourceGraphic"
+PASS screenBlend.getAttribute('in') is "SourceGraphic"
+PASS darkenBlend.getAttribute('in') is "SourceGraphic"
+PASS lightenBlend.getAttribute('in') is "SourceGraphic"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html
new file mode 100644
index 0000000..1340b2d
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEBlendElement-dom-in-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.txt
new file mode 100644
index 0000000..7de10d3
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr-expected.txt
@@ -0,0 +1,21 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'in' attribute of the SVGFEBlendElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS normalBlend.getAttribute('in2') is "lightenImg"
+PASS multiplyBlend.getAttribute('in2') is "normalImg"
+PASS screenBlend.getAttribute('in2') is "multiplyImg"
+PASS darkenBlend.getAttribute('in2') is "screenImg"
+PASS lightenBlend.getAttribute('in2') is "darkenImg"
+PASS normalBlend.getAttribute('in2') is "normalImg"
+PASS multiplyBlend.getAttribute('in2') is "multiplyImg"
+PASS screenBlend.getAttribute('in2') is "screenImg"
+PASS darkenBlend.getAttribute('in2') is "darkenImg"
+PASS lightenBlend.getAttribute('in2') is "lightenImg"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html
new file mode 100644
index 0000000..de77acf
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEBlendElement-dom-in2-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.txt
new file mode 100644
index 0000000..7e5fd3f
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr-expected.txt
@@ -0,0 +1,21 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'mode' attribute of the SVGFEBlendElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS normalBlend.getAttribute('mode') is "lighten"
+PASS multiplyBlend.getAttribute('mode') is "normal"
+PASS screenBlend.getAttribute('mode') is "multiply"
+PASS darkenBlend.getAttribute('mode') is "screen"
+PASS lightenBlend.getAttribute('mode') is "darken"
+PASS normalBlend.getAttribute('mode') is "normal"
+PASS multiplyBlend.getAttribute('mode') is "multiply"
+PASS screenBlend.getAttribute('mode') is "screen"
+PASS darkenBlend.getAttribute('mode') is "darken"
+PASS lightenBlend.getAttribute('mode') is "lighten"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html
new file mode 100644
index 0000000..bbf4257
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEBlendElement-dom-mode-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.txt
new file mode 100644
index 0000000..96c65d9
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop-expected.txt
@@ -0,0 +1,21 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'in' property of the SVGFEBlendElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS normalBlend.in1.baseVal is "SourceAlpha"
+PASS multiplyBlend.in1.baseVal is "SourceAlpha"
+PASS screenBlend.in1.baseVal is "SourceAlpha"
+PASS darkenBlend.in1.baseVal is "SourceAlpha"
+PASS lightenBlend.in1.baseVal is "SourceAlpha"
+PASS normalBlend.in1.baseVal is "SourceGraphic"
+PASS multiplyBlend.in1.baseVal is "SourceGraphic"
+PASS screenBlend.in1.baseVal is "SourceGraphic"
+PASS darkenBlend.in1.baseVal is "SourceGraphic"
+PASS lightenBlend.in1.baseVal is "SourceGraphic"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html
new file mode 100644
index 0000000..54c80ff
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEBlendElement-svgdom-in-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.txt
new file mode 100644
index 0000000..bf1574f
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop-expected.txt
@@ -0,0 +1,21 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'in2' property of the SVGFEBlendElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS normalBlend.in2.baseVal is "lightenImg"
+PASS multiplyBlend.in2.baseVal is "normalImg"
+PASS screenBlend.in2.baseVal is "multiplyImg"
+PASS darkenBlend.in2.baseVal is "screenImg"
+PASS lightenBlend.in2.baseVal is "darkenImg"
+PASS normalBlend.in2.baseVal is "normalImg"
+PASS multiplyBlend.in2.baseVal is "multiplyImg"
+PASS screenBlend.in2.baseVal is "screenImg"
+PASS darkenBlend.in2.baseVal is "darkenImg"
+PASS lightenBlend.in2.baseVal is "lightenImg"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html
new file mode 100644
index 0000000..4dad43a
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEBlendElement-svgdom-in2-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.txt
new file mode 100644
index 0000000..c6dd9b4
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop-expected.txt
@@ -0,0 +1,21 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'mode' property of the SVGFEBlendElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS normalBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN
+PASS multiplyBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL
+PASS screenBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY
+PASS darkenBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN
+PASS lightenBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN
+PASS normalBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL
+PASS multiplyBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY
+PASS screenBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN
+PASS darkenBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN
+PASS lightenBlend.mode.baseVal is SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html
new file mode 100644
index 0000000..540c596
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGFEBlendElement-svgdom-mode-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in-attr.js
new file mode 100644
index 0000000..8024642
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in-attr.js
@@ -0,0 +1,232 @@
+// [Name] SVGFEBlendElement-dom-in-attr.js
+// [Expected rendering result] Seven blended rectangles in a gradient - and a series of PASS messages
+
+description("Tests dynamic updates of the 'in' attribute of the SVGFEBlendElement object")
+createSVGTestCase();
+
+var backgroundImage = createSVGElement("image");
+backgroundImage.setAttribute("x", "35");
+backgroundImage.setAttribute("y", "5");
+backgroundImage.setAttribute("width", "220");
+backgroundImage.setAttribute("height", "171");
+backgroundImage.setAttribute("preserveAspectRatio", "none");
+backgroundImage.setAttributeNS(xlinkNS, "xlink:href", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAABCAMAAAAfBfuPAAAABGdBTUEAAK/INwWK6QAAABl0RVh0         U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEsUExURfb/AK3/AAD/9/9sAIn/AN7/ABT/        AAB//zD/AP9GAAD/s1H/AAD/H/8AxwD/bn8A/1wA/wD/XJv/AP8Ai//MAGP/ABMA/wD/LP8A6P8K         AP8AF/8A9QD/xAAA/wD1/9MA/wD/gABY/wD/Cf8ATJEA//+6AACT/wCn/+v/AAD/TAD/kf8AYKMA         //8kAAAk/wAV/y0A/3b/AP80AAD/O/cA//8A/wD///8An/8A2QD/Ev8AAMQA/+0A/7MA////AP8A         CuAA//8AJ24A/0sA//8AOAA0/wAK/wBF//8WAAgA/x8A///2AL//AP8AdTwA/wn/AP/bAP+AAP+U         AM//AP+nAP8AtADp/wD/o0D/AP/qAADb/wC5/wDL/wD/AAD/7QD/0gD/4CH/AABr//9ZAG2IeB4A         AABvSURBVHjaYrCyl3J0Udb2FTYP5bWQkDY1sXGQt7bVUeF3EnD2M/AS85R109dzdVdMYldTj46J         CpMzY4pLiJfhCtdS4BPUNBbnsVSK9WdL5IjgFjVkEWL0CWbVYLDzjgwQUQ0JCmRO5jTS9ZAECDAA         3aQTV3E5iioAAAAASUVORK5CYII=");
+rootSVGElement.appendChild(backgroundImage);
+
+var normalFlood = createSVGElement("feFlood");
+normalFlood.setAttribute("in", "BackgroundAlpha");
+normalFlood.setAttribute("flood-color", "#0f0");
+normalFlood.setAttribute("flood-opacity", "0.5");
+normalFlood.setAttribute("result", "normalImg");
+
+var multiplyFlood = createSVGElement("feFlood");
+multiplyFlood.setAttribute("in", "SourceGraphic");
+multiplyFlood.setAttribute("flood-color", "#0f0");
+multiplyFlood.setAttribute("flood-opacity", "0.5");
+multiplyFlood.setAttribute("result", "multiplyImg");
+
+var screenFlood = createSVGElement("feFlood");
+screenFlood.setAttribute("in", "SourceGraphic");
+screenFlood.setAttribute("flood-color", "#0f0");
+screenFlood.setAttribute("flood-opacity", "0.5");
+screenFlood.setAttribute("result", "screenImg");
+
+var darkenFlood = createSVGElement("feFlood");
+darkenFlood.setAttribute("in", "SourceGraphic");
+darkenFlood.setAttribute("flood-color", "#0f0");
+darkenFlood.setAttribute("flood-opacity", "0.5");
+darkenFlood.setAttribute("result", "darkenImg");
+
+var lightenFlood = createSVGElement("feFlood");
+lightenFlood.setAttribute("in", "SourceGraphic");
+lightenFlood.setAttribute("flood-color", "#0f0");
+lightenFlood.setAttribute("flood-opacity", "0.5");
+lightenFlood.setAttribute("result", "lightenImg");
+
+var normalBlend = createSVGElement("feBlend");
+normalBlend.setAttribute("in", "SourceAlpha");
+normalBlend.setAttribute("in2", "normalImg");
+normalBlend.setAttribute("mode", "normal");
+
+var multiplyBlend = createSVGElement("feBlend");
+multiplyBlend.setAttribute("in", "SourceAlpha");
+multiplyBlend.setAttribute("in2", "multiplyImg");
+multiplyBlend.setAttribute("mode", "multiply");
+
+var screenBlend = createSVGElement("feBlend");
+screenBlend.setAttribute("in", "SourceAlpha");
+screenBlend.setAttribute("in2", "screenImg");
+screenBlend.setAttribute("mode", "screen");
+
+var darkenBlend = createSVGElement("feBlend");
+darkenBlend.setAttribute("in", "SourceAlpha");
+darkenBlend.setAttribute("in2", "darkenImg");
+darkenBlend.setAttribute("mode", "darken");
+
+var lightenBlend = createSVGElement("feBlend");
+lightenBlend.setAttribute("in", "SourceAlpha");
+lightenBlend.setAttribute("in2", "lightenImg");
+lightenBlend.setAttribute("mode", "lighten");
+
+var normalBlendFilter = createSVGElement("filter");
+normalBlendFilter.setAttribute("id", "normalFilter");
+normalBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+normalBlendFilter.setAttribute("x", "0%");
+normalBlendFilter.setAttribute("y", "0%");
+normalBlendFilter.setAttribute("width", "100%");
+normalBlendFilter.setAttribute("height", "100%");
+normalBlendFilter.appendChild(normalFlood);
+normalBlendFilter.appendChild(normalBlend);
+
+var multiplyBlendFilter = createSVGElement("filter");
+multiplyBlendFilter.setAttribute("id", "multiplyFilter");
+multiplyBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+multiplyBlendFilter.setAttribute("x", "0%");
+multiplyBlendFilter.setAttribute("y", "0%");
+multiplyBlendFilter.setAttribute("width", "100%");
+multiplyBlendFilter.setAttribute("height", "100%");
+multiplyBlendFilter.appendChild(multiplyFlood);
+multiplyBlendFilter.appendChild(multiplyBlend);
+
+var screenBlendFilter = createSVGElement("filter");
+screenBlendFilter.setAttribute("id", "screenFilter");
+screenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+screenBlendFilter.setAttribute("x", "0%");
+screenBlendFilter.setAttribute("y", "0%");
+screenBlendFilter.setAttribute("width", "100%");
+screenBlendFilter.setAttribute("height", "100%");
+screenBlendFilter.appendChild(screenFlood);
+screenBlendFilter.appendChild(screenBlend);
+
+var darkenBlendFilter = createSVGElement("filter");
+darkenBlendFilter.setAttribute("id", "darkenFilter");
+darkenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+darkenBlendFilter.setAttribute("x", "0%");
+darkenBlendFilter.setAttribute("y", "0%");
+darkenBlendFilter.setAttribute("width", "100%");
+darkenBlendFilter.setAttribute("height", "100%");
+darkenBlendFilter.appendChild(darkenFlood);
+darkenBlendFilter.appendChild(darkenBlend);
+
+var lightenBlendFilter = createSVGElement("filter");
+lightenBlendFilter.setAttribute("id", "lightenFilter");
+lightenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+lightenBlendFilter.setAttribute("x", "0%");
+lightenBlendFilter.setAttribute("y", "0%");
+lightenBlendFilter.setAttribute("width", "100%");
+lightenBlendFilter.setAttribute("height", "100%");
+lightenBlendFilter.appendChild(lightenFlood);
+lightenBlendFilter.appendChild(lightenBlend);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(normalBlendFilter);
+defsElement.appendChild(multiplyBlendFilter);
+defsElement.appendChild(screenBlendFilter);
+defsElement.appendChild(darkenBlendFilter);
+defsElement.appendChild(lightenBlendFilter);
+
+rootSVGElement.appendChild(defsElement);
+
+var normalRectElement = createSVGElement("rect");
+normalRectElement.setAttribute("x", "25");
+normalRectElement.setAttribute("y", "10");
+normalRectElement.setAttribute("width", "240");
+normalRectElement.setAttribute("height", "20");
+normalRectElement.setAttribute("fill", "blue");
+normalRectElement.setAttribute("opacity", "0.5");
+normalRectElement.setAttribute("filter", "url(#normalFilter)");
+rootSVGElement.appendChild(normalRectElement);
+
+var multiplyRectElement = createSVGElement("rect");
+multiplyRectElement.setAttribute("x", "25");
+multiplyRectElement.setAttribute("y", "33");
+multiplyRectElement.setAttribute("width", "240");
+multiplyRectElement.setAttribute("height", "20");
+multiplyRectElement.setAttribute("fill", "blue");
+multiplyRectElement.setAttribute("opacity", "0.5");
+multiplyRectElement.setAttribute("filter", "url(#multiplyFilter)");
+rootSVGElement.appendChild(multiplyRectElement);
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("filter", "url(#multiplyFilter)");
+
+var embeddedMultiplyRectElement1 = createSVGElement("rect");
+embeddedMultiplyRectElement1.setAttribute("x", "25");
+embeddedMultiplyRectElement1.setAttribute("y", "56");
+embeddedMultiplyRectElement1.setAttribute("width", "240");
+embeddedMultiplyRectElement1.setAttribute("height", "20");
+embeddedMultiplyRectElement1.setAttribute("fill", "blue");
+embeddedMultiplyRectElement1.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement1);
+
+var embeddedMultiplyRectElement2 = createSVGElement("rect");
+embeddedMultiplyRectElement2.setAttribute("x", "25");
+embeddedMultiplyRectElement2.setAttribute("y", "79");
+embeddedMultiplyRectElement2.setAttribute("width", "240");
+embeddedMultiplyRectElement2.setAttribute("height", "20");
+embeddedMultiplyRectElement2.setAttribute("fill", "#ff0");
+embeddedMultiplyRectElement2.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement2);
+
+rootSVGElement.appendChild(gElement);
+
+var screenRectElement = createSVGElement("rect");
+screenRectElement.setAttribute("x", "25");
+screenRectElement.setAttribute("y", "102");
+screenRectElement.setAttribute("width", "240");
+screenRectElement.setAttribute("height", "20");
+screenRectElement.setAttribute("fill", "blue");
+screenRectElement.setAttribute("opacity", "0.5");
+screenRectElement.setAttribute("filter", "url(#screenFilter)");
+rootSVGElement.appendChild(screenRectElement);
+
+var darkenRectElement = createSVGElement("rect");
+darkenRectElement.setAttribute("x", "25");
+darkenRectElement.setAttribute("y", "125");
+darkenRectElement.setAttribute("width", "240");
+darkenRectElement.setAttribute("height", "20");
+darkenRectElement.setAttribute("fill", "blue");
+darkenRectElement.setAttribute("opacity", "0.5");
+darkenRectElement.setAttribute("filter", "url(#darkenFilter)");
+rootSVGElement.appendChild(darkenRectElement);
+
+var lightenRectElement = createSVGElement("rect");
+lightenRectElement.setAttribute("x", "25");
+lightenRectElement.setAttribute("y", "148");
+lightenRectElement.setAttribute("width", "240");
+lightenRectElement.setAttribute("height", "20");
+lightenRectElement.setAttribute("fill", "blue");
+lightenRectElement.setAttribute("opacity", "0.5");
+lightenRectElement.setAttribute("filter", "url(#lightenFilter)");
+rootSVGElement.appendChild(lightenRectElement);
+
+rootSVGElement.setAttribute("fill", "#333");
+rootSVGElement.setAttribute("font-size", "14");
+rootSVGElement.setAttribute("width", "350");
+rootSVGElement.setAttribute("height", "250");
+
+shouldBeEqualToString("normalBlend.getAttribute('in')", "SourceAlpha");
+shouldBeEqualToString("multiplyBlend.getAttribute('in')", "SourceAlpha");
+shouldBeEqualToString("screenBlend.getAttribute('in')", "SourceAlpha");
+shouldBeEqualToString("darkenBlend.getAttribute('in')", "SourceAlpha");
+shouldBeEqualToString("lightenBlend.getAttribute('in')", "SourceAlpha");
+
+function executeTest() {
+    normalBlend.setAttribute("in", "SourceGraphic");
+    multiplyBlend.setAttribute("in", "SourceGraphic");
+    screenBlend.setAttribute("in", "SourceGraphic");
+    darkenBlend.setAttribute("in", "SourceGraphic");
+    lightenBlend.setAttribute("in", "SourceGraphic");
+
+    shouldBeEqualToString("normalBlend.getAttribute('in')", "SourceGraphic");
+    shouldBeEqualToString("multiplyBlend.getAttribute('in')", "SourceGraphic");
+    shouldBeEqualToString("screenBlend.getAttribute('in')", "SourceGraphic");
+    shouldBeEqualToString("darkenBlend.getAttribute('in')", "SourceGraphic");
+    shouldBeEqualToString("lightenBlend.getAttribute('in')", "SourceGraphic");
+
+    completeTest();
+}
+
+startTest(rootSVGElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in2-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in2-attr.js
new file mode 100644
index 0000000..61477be
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-in2-attr.js
@@ -0,0 +1,232 @@
+// [Name] SVGFEBlendElement-dom-in2-attr.js
+// [Expected rendering result] Seven blended rectangles in a gradient - and a series of PASS messages
+
+description("Tests dynamic updates of the 'in' attribute of the SVGFEBlendElement object")
+createSVGTestCase();
+
+var backgroundImage = createSVGElement("image");
+backgroundImage.setAttribute("x", "35");
+backgroundImage.setAttribute("y", "5");
+backgroundImage.setAttribute("width", "220");
+backgroundImage.setAttribute("height", "171");
+backgroundImage.setAttribute("preserveAspectRatio", "none");
+backgroundImage.setAttributeNS(xlinkNS, "xlink:href", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAABCAMAAAAfBfuPAAAABGdBTUEAAK/INwWK6QAAABl0RVh0         U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEsUExURfb/AK3/AAD/9/9sAIn/AN7/ABT/        AAB//zD/AP9GAAD/s1H/AAD/H/8AxwD/bn8A/1wA/wD/XJv/AP8Ai//MAGP/ABMA/wD/LP8A6P8K         AP8AF/8A9QD/xAAA/wD1/9MA/wD/gABY/wD/Cf8ATJEA//+6AACT/wCn/+v/AAD/TAD/kf8AYKMA         //8kAAAk/wAV/y0A/3b/AP80AAD/O/cA//8A/wD///8An/8A2QD/Ev8AAMQA/+0A/7MA////AP8A         CuAA//8AJ24A/0sA//8AOAA0/wAK/wBF//8WAAgA/x8A///2AL//AP8AdTwA/wn/AP/bAP+AAP+U         AM//AP+nAP8AtADp/wD/o0D/AP/qAADb/wC5/wDL/wD/AAD/7QD/0gD/4CH/AABr//9ZAG2IeB4A         AABvSURBVHjaYrCyl3J0Udb2FTYP5bWQkDY1sXGQt7bVUeF3EnD2M/AS85R109dzdVdMYldTj46J         CpMzY4pLiJfhCtdS4BPUNBbnsVSK9WdL5IjgFjVkEWL0CWbVYLDzjgwQUQ0JCmRO5jTS9ZAECDAA         3aQTV3E5iioAAAAASUVORK5CYII=");
+rootSVGElement.appendChild(backgroundImage);
+
+var normalFlood = createSVGElement("feFlood");
+normalFlood.setAttribute("in", "BackgroundAlpha");
+normalFlood.setAttribute("flood-color", "#0f0");
+normalFlood.setAttribute("flood-opacity", "0.5");
+normalFlood.setAttribute("result", "normalImg");
+
+var multiplyFlood = createSVGElement("feFlood");
+multiplyFlood.setAttribute("in", "SourceGraphic");
+multiplyFlood.setAttribute("flood-color", "#0f0");
+multiplyFlood.setAttribute("flood-opacity", "0.5");
+multiplyFlood.setAttribute("result", "multiplyImg");
+
+var screenFlood = createSVGElement("feFlood");
+screenFlood.setAttribute("in", "SourceGraphic");
+screenFlood.setAttribute("flood-color", "#0f0");
+screenFlood.setAttribute("flood-opacity", "0.5");
+screenFlood.setAttribute("result", "screenImg");
+
+var darkenFlood = createSVGElement("feFlood");
+darkenFlood.setAttribute("in", "SourceGraphic");
+darkenFlood.setAttribute("flood-color", "#0f0");
+darkenFlood.setAttribute("flood-opacity", "0.5");
+darkenFlood.setAttribute("result", "darkenImg");
+
+var lightenFlood = createSVGElement("feFlood");
+lightenFlood.setAttribute("in", "SourceGraphic");
+lightenFlood.setAttribute("flood-color", "#0f0");
+lightenFlood.setAttribute("flood-opacity", "0.5");
+lightenFlood.setAttribute("result", "lightenImg");
+
+var normalBlend = createSVGElement("feBlend");
+normalBlend.setAttribute("in", "SourceGraphic");
+normalBlend.setAttribute("in2", "lightenImg");
+normalBlend.setAttribute("mode", "normal");
+
+var multiplyBlend = createSVGElement("feBlend");
+multiplyBlend.setAttribute("in", "SourceGraphic");
+multiplyBlend.setAttribute("in2", "normalImg");
+multiplyBlend.setAttribute("mode", "multiply");
+
+var screenBlend = createSVGElement("feBlend");
+screenBlend.setAttribute("in", "SourceGraphic");
+screenBlend.setAttribute("in2", "multiplyImg");
+screenBlend.setAttribute("mode", "screen");
+
+var darkenBlend = createSVGElement("feBlend");
+darkenBlend.setAttribute("in", "SourceGraphic");
+darkenBlend.setAttribute("in2", "screenImg");
+darkenBlend.setAttribute("mode", "darken");
+
+var lightenBlend = createSVGElement("feBlend");
+lightenBlend.setAttribute("in", "SourceGraphic");
+lightenBlend.setAttribute("in2", "darkenImg");
+lightenBlend.setAttribute("mode", "lighten");
+
+var normalBlendFilter = createSVGElement("filter");
+normalBlendFilter.setAttribute("id", "normalFilter");
+normalBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+normalBlendFilter.setAttribute("x", "0%");
+normalBlendFilter.setAttribute("y", "0%");
+normalBlendFilter.setAttribute("width", "100%");
+normalBlendFilter.setAttribute("height", "100%");
+normalBlendFilter.appendChild(normalFlood);
+normalBlendFilter.appendChild(normalBlend);
+
+var multiplyBlendFilter = createSVGElement("filter");
+multiplyBlendFilter.setAttribute("id", "multiplyFilter");
+multiplyBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+multiplyBlendFilter.setAttribute("x", "0%");
+multiplyBlendFilter.setAttribute("y", "0%");
+multiplyBlendFilter.setAttribute("width", "100%");
+multiplyBlendFilter.setAttribute("height", "100%");
+multiplyBlendFilter.appendChild(multiplyFlood);
+multiplyBlendFilter.appendChild(multiplyBlend);
+
+var screenBlendFilter = createSVGElement("filter");
+screenBlendFilter.setAttribute("id", "screenFilter");
+screenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+screenBlendFilter.setAttribute("x", "0%");
+screenBlendFilter.setAttribute("y", "0%");
+screenBlendFilter.setAttribute("width", "100%");
+screenBlendFilter.setAttribute("height", "100%");
+screenBlendFilter.appendChild(screenFlood);
+screenBlendFilter.appendChild(screenBlend);
+
+var darkenBlendFilter = createSVGElement("filter");
+darkenBlendFilter.setAttribute("id", "darkenFilter");
+darkenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+darkenBlendFilter.setAttribute("x", "0%");
+darkenBlendFilter.setAttribute("y", "0%");
+darkenBlendFilter.setAttribute("width", "100%");
+darkenBlendFilter.setAttribute("height", "100%");
+darkenBlendFilter.appendChild(darkenFlood);
+darkenBlendFilter.appendChild(darkenBlend);
+
+var lightenBlendFilter = createSVGElement("filter");
+lightenBlendFilter.setAttribute("id", "lightenFilter");
+lightenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+lightenBlendFilter.setAttribute("x", "0%");
+lightenBlendFilter.setAttribute("y", "0%");
+lightenBlendFilter.setAttribute("width", "100%");
+lightenBlendFilter.setAttribute("height", "100%");
+lightenBlendFilter.appendChild(lightenFlood);
+lightenBlendFilter.appendChild(lightenBlend);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(normalBlendFilter);
+defsElement.appendChild(multiplyBlendFilter);
+defsElement.appendChild(screenBlendFilter);
+defsElement.appendChild(darkenBlendFilter);
+defsElement.appendChild(lightenBlendFilter);
+
+rootSVGElement.appendChild(defsElement);
+
+var normalRectElement = createSVGElement("rect");
+normalRectElement.setAttribute("x", "25");
+normalRectElement.setAttribute("y", "10");
+normalRectElement.setAttribute("width", "240");
+normalRectElement.setAttribute("height", "20");
+normalRectElement.setAttribute("fill", "blue");
+normalRectElement.setAttribute("opacity", "0.5");
+normalRectElement.setAttribute("filter", "url(#normalFilter)");
+rootSVGElement.appendChild(normalRectElement);
+
+var multiplyRectElement = createSVGElement("rect");
+multiplyRectElement.setAttribute("x", "25");
+multiplyRectElement.setAttribute("y", "33");
+multiplyRectElement.setAttribute("width", "240");
+multiplyRectElement.setAttribute("height", "20");
+multiplyRectElement.setAttribute("fill", "blue");
+multiplyRectElement.setAttribute("opacity", "0.5");
+multiplyRectElement.setAttribute("filter", "url(#multiplyFilter)");
+rootSVGElement.appendChild(multiplyRectElement);
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("filter", "url(#multiplyFilter)");
+
+var embeddedMultiplyRectElement1 = createSVGElement("rect");
+embeddedMultiplyRectElement1.setAttribute("x", "25");
+embeddedMultiplyRectElement1.setAttribute("y", "56");
+embeddedMultiplyRectElement1.setAttribute("width", "240");
+embeddedMultiplyRectElement1.setAttribute("height", "20");
+embeddedMultiplyRectElement1.setAttribute("fill", "blue");
+embeddedMultiplyRectElement1.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement1);
+
+var embeddedMultiplyRectElement2 = createSVGElement("rect");
+embeddedMultiplyRectElement2.setAttribute("x", "25");
+embeddedMultiplyRectElement2.setAttribute("y", "79");
+embeddedMultiplyRectElement2.setAttribute("width", "240");
+embeddedMultiplyRectElement2.setAttribute("height", "20");
+embeddedMultiplyRectElement2.setAttribute("fill", "#ff0");
+embeddedMultiplyRectElement2.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement2);
+
+rootSVGElement.appendChild(gElement);
+
+var screenRectElement = createSVGElement("rect");
+screenRectElement.setAttribute("x", "25");
+screenRectElement.setAttribute("y", "102");
+screenRectElement.setAttribute("width", "240");
+screenRectElement.setAttribute("height", "20");
+screenRectElement.setAttribute("fill", "blue");
+screenRectElement.setAttribute("opacity", "0.5");
+screenRectElement.setAttribute("filter", "url(#screenFilter)");
+rootSVGElement.appendChild(screenRectElement);
+
+var darkenRectElement = createSVGElement("rect");
+darkenRectElement.setAttribute("x", "25");
+darkenRectElement.setAttribute("y", "125");
+darkenRectElement.setAttribute("width", "240");
+darkenRectElement.setAttribute("height", "20");
+darkenRectElement.setAttribute("fill", "blue");
+darkenRectElement.setAttribute("opacity", "0.5");
+darkenRectElement.setAttribute("filter", "url(darkenFilter)");
+rootSVGElement.appendChild(darkenRectElement);
+
+var lightenRectElement = createSVGElement("rect");
+lightenRectElement.setAttribute("x", "25");
+lightenRectElement.setAttribute("y", "148");
+lightenRectElement.setAttribute("width", "240");
+lightenRectElement.setAttribute("height", "20");
+lightenRectElement.setAttribute("fill", "blue");
+lightenRectElement.setAttribute("opacity", "0.5");
+lightenRectElement.setAttribute("filter", "url(#lightenFilter)");
+rootSVGElement.appendChild(lightenRectElement);
+
+rootSVGElement.setAttribute("fill", "#333");
+rootSVGElement.setAttribute("font-size", "14");
+rootSVGElement.setAttribute("width", "350");
+rootSVGElement.setAttribute("height", "250");
+
+shouldBeEqualToString("normalBlend.getAttribute('in2')", "lightenImg");
+shouldBeEqualToString("multiplyBlend.getAttribute('in2')", "normalImg");
+shouldBeEqualToString("screenBlend.getAttribute('in2')", "multiplyImg");
+shouldBeEqualToString("darkenBlend.getAttribute('in2')", "screenImg");
+shouldBeEqualToString("lightenBlend.getAttribute('in2')", "darkenImg");
+
+function executeTest() {
+    normalBlend.setAttribute("in2", "normalImg");
+    multiplyBlend.setAttribute("in2", "multiplyImg");
+    screenBlend.setAttribute("in2", "screenImg");
+    darkenBlend.setAttribute("in2", "darkenImg");
+    lightenBlend.setAttribute("in2", "lightenImg");
+
+    shouldBeEqualToString("normalBlend.getAttribute('in2')", "normalImg");
+    shouldBeEqualToString("multiplyBlend.getAttribute('in2')", "multiplyImg");
+    shouldBeEqualToString("screenBlend.getAttribute('in2')", "screenImg");
+    shouldBeEqualToString("darkenBlend.getAttribute('in2')", "darkenImg");
+    shouldBeEqualToString("lightenBlend.getAttribute('in2')", "lightenImg");
+
+    completeTest();
+}
+
+startTest(rootSVGElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-mode-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-mode-attr.js
new file mode 100644
index 0000000..27ddecb
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-dom-mode-attr.js
@@ -0,0 +1,232 @@
+// [Name] SVGFEBlendElement-dom-mode-attr.js
+// [Expected rendering result] Seven blended rectangles in a gradient - and a series of PASS messages
+
+description("Tests dynamic updates of the 'mode' attribute of the SVGFEBlendElement object")
+createSVGTestCase();
+
+var backgroundImage = createSVGElement("image");
+backgroundImage.setAttribute("x", "35");
+backgroundImage.setAttribute("y", "5");
+backgroundImage.setAttribute("width", "220");
+backgroundImage.setAttribute("height", "171");
+backgroundImage.setAttribute("preserveAspectRatio", "none");
+backgroundImage.setAttributeNS(xlinkNS, "xlink:href", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAABCAMAAAAfBfuPAAAABGdBTUEAAK/INwWK6QAAABl0RVh0         U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEsUExURfb/AK3/AAD/9/9sAIn/AN7/ABT/        AAB//zD/AP9GAAD/s1H/AAD/H/8AxwD/bn8A/1wA/wD/XJv/AP8Ai//MAGP/ABMA/wD/LP8A6P8K         AP8AF/8A9QD/xAAA/wD1/9MA/wD/gABY/wD/Cf8ATJEA//+6AACT/wCn/+v/AAD/TAD/kf8AYKMA         //8kAAAk/wAV/y0A/3b/AP80AAD/O/cA//8A/wD///8An/8A2QD/Ev8AAMQA/+0A/7MA////AP8A         CuAA//8AJ24A/0sA//8AOAA0/wAK/wBF//8WAAgA/x8A///2AL//AP8AdTwA/wn/AP/bAP+AAP+U         AM//AP+nAP8AtADp/wD/o0D/AP/qAADb/wC5/wDL/wD/AAD/7QD/0gD/4CH/AABr//9ZAG2IeB4A         AABvSURBVHjaYrCyl3J0Udb2FTYP5bWQkDY1sXGQt7bVUeF3EnD2M/AS85R109dzdVdMYldTj46J         CpMzY4pLiJfhCtdS4BPUNBbnsVSK9WdL5IjgFjVkEWL0CWbVYLDzjgwQUQ0JCmRO5jTS9ZAECDAA         3aQTV3E5iioAAAAASUVORK5CYII=");
+rootSVGElement.appendChild(backgroundImage);
+
+var normalFlood = createSVGElement("feFlood");
+normalFlood.setAttribute("in", "BackgroundAlpha");
+normalFlood.setAttribute("flood-color", "#0f0");
+normalFlood.setAttribute("flood-opacity", "0.5");
+normalFlood.setAttribute("result", "normalImg");
+
+var multiplyFlood = createSVGElement("feFlood");
+multiplyFlood.setAttribute("in", "SourceGraphic");
+multiplyFlood.setAttribute("flood-color", "#0f0");
+multiplyFlood.setAttribute("flood-opacity", "0.5");
+multiplyFlood.setAttribute("result", "multiplyImg");
+
+var screenFlood = createSVGElement("feFlood");
+screenFlood.setAttribute("in", "SourceGraphic");
+screenFlood.setAttribute("flood-color", "#0f0");
+screenFlood.setAttribute("flood-opacity", "0.5");
+screenFlood.setAttribute("result", "screenImg");
+
+var darkenFlood = createSVGElement("feFlood");
+darkenFlood.setAttribute("in", "SourceGraphic");
+darkenFlood.setAttribute("flood-color", "#0f0");
+darkenFlood.setAttribute("flood-opacity", "0.5");
+darkenFlood.setAttribute("result", "darkenImg");
+
+var lightenFlood = createSVGElement("feFlood");
+lightenFlood.setAttribute("in", "SourceGraphic");
+lightenFlood.setAttribute("flood-color", "#0f0");
+lightenFlood.setAttribute("flood-opacity", "0.5");
+lightenFlood.setAttribute("result", "lightenImg");
+
+var normalBlend = createSVGElement("feBlend");
+normalBlend.setAttribute("in", "SourceGraphic");
+normalBlend.setAttribute("in2", "normalImg");
+normalBlend.setAttribute("mode", "lighten");
+
+var multiplyBlend = createSVGElement("feBlend");
+multiplyBlend.setAttribute("in", "SourceGraphic");
+multiplyBlend.setAttribute("in2", "multiplyImg");
+multiplyBlend.setAttribute("mode", "normal");
+
+var screenBlend = createSVGElement("feBlend");
+screenBlend.setAttribute("in", "SourceGraphic");
+screenBlend.setAttribute("in2", "screenImg");
+screenBlend.setAttribute("mode", "multiply");
+
+var darkenBlend = createSVGElement("feBlend");
+darkenBlend.setAttribute("in", "SourceGraphic");
+darkenBlend.setAttribute("in2", "darkenImg");
+darkenBlend.setAttribute("mode", "screen");
+
+var lightenBlend = createSVGElement("feBlend");
+lightenBlend.setAttribute("in", "SourceGraphic");
+lightenBlend.setAttribute("in2", "lightenImg");
+lightenBlend.setAttribute("mode", "darken");
+
+var normalBlendFilter = createSVGElement("filter");
+normalBlendFilter.setAttribute("id", "normalFilter");
+normalBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+normalBlendFilter.setAttribute("x", "0%");
+normalBlendFilter.setAttribute("y", "0%");
+normalBlendFilter.setAttribute("width", "100%");
+normalBlendFilter.setAttribute("height", "100%");
+normalBlendFilter.appendChild(normalFlood);
+normalBlendFilter.appendChild(normalBlend);
+
+var multiplyBlendFilter = createSVGElement("filter");
+multiplyBlendFilter.setAttribute("id", "multiplyFilter");
+multiplyBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+multiplyBlendFilter.setAttribute("x", "0%");
+multiplyBlendFilter.setAttribute("y", "0%");
+multiplyBlendFilter.setAttribute("width", "100%");
+multiplyBlendFilter.setAttribute("height", "100%");
+multiplyBlendFilter.appendChild(multiplyFlood);
+multiplyBlendFilter.appendChild(multiplyBlend);
+
+var screenBlendFilter = createSVGElement("filter");
+screenBlendFilter.setAttribute("id", "screenFilter");
+screenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+screenBlendFilter.setAttribute("x", "0%");
+screenBlendFilter.setAttribute("y", "0%");
+screenBlendFilter.setAttribute("width", "100%");
+screenBlendFilter.setAttribute("height", "100%");
+screenBlendFilter.appendChild(screenFlood);
+screenBlendFilter.appendChild(screenBlend);
+
+var darkenBlendFilter = createSVGElement("filter");
+darkenBlendFilter.setAttribute("id", "darkenFilter");
+darkenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+darkenBlendFilter.setAttribute("x", "0%");
+darkenBlendFilter.setAttribute("y", "0%");
+darkenBlendFilter.setAttribute("width", "100%");
+darkenBlendFilter.setAttribute("height", "100%");
+darkenBlendFilter.appendChild(darkenFlood);
+darkenBlendFilter.appendChild(darkenBlend);
+
+var lightenBlendFilter = createSVGElement("filter");
+lightenBlendFilter.setAttribute("id", "lightenFilter");
+lightenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+lightenBlendFilter.setAttribute("x", "0%");
+lightenBlendFilter.setAttribute("y", "0%");
+lightenBlendFilter.setAttribute("width", "100%");
+lightenBlendFilter.setAttribute("height", "100%");
+lightenBlendFilter.appendChild(lightenFlood);
+lightenBlendFilter.appendChild(lightenBlend);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(normalBlendFilter);
+defsElement.appendChild(multiplyBlendFilter);
+defsElement.appendChild(screenBlendFilter);
+defsElement.appendChild(darkenBlendFilter);
+defsElement.appendChild(lightenBlendFilter);
+
+rootSVGElement.appendChild(defsElement);
+
+var normalRectElement = createSVGElement("rect");
+normalRectElement.setAttribute("x", "25");
+normalRectElement.setAttribute("y", "10");
+normalRectElement.setAttribute("width", "240");
+normalRectElement.setAttribute("height", "20");
+normalRectElement.setAttribute("fill", "blue");
+normalRectElement.setAttribute("opacity", "0.5");
+normalRectElement.setAttribute("filter", "url(#normalFilter)");
+rootSVGElement.appendChild(normalRectElement);
+
+var multiplyRectElement = createSVGElement("rect");
+multiplyRectElement.setAttribute("x", "25");
+multiplyRectElement.setAttribute("y", "33");
+multiplyRectElement.setAttribute("width", "240");
+multiplyRectElement.setAttribute("height", "20");
+multiplyRectElement.setAttribute("fill", "blue");
+multiplyRectElement.setAttribute("opacity", "0.5");
+multiplyRectElement.setAttribute("filter", "url(#multiplyFilter)");
+rootSVGElement.appendChild(multiplyRectElement);
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("filter", "url(#multiplyFilter)");
+
+var embeddedMultiplyRectElement1 = createSVGElement("rect");
+embeddedMultiplyRectElement1.setAttribute("x", "25");
+embeddedMultiplyRectElement1.setAttribute("y", "56");
+embeddedMultiplyRectElement1.setAttribute("width", "240");
+embeddedMultiplyRectElement1.setAttribute("height", "20");
+embeddedMultiplyRectElement1.setAttribute("fill", "blue");
+embeddedMultiplyRectElement1.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement1);
+
+var embeddedMultiplyRectElement2 = createSVGElement("rect");
+embeddedMultiplyRectElement2.setAttribute("x", "25");
+embeddedMultiplyRectElement2.setAttribute("y", "79");
+embeddedMultiplyRectElement2.setAttribute("width", "240");
+embeddedMultiplyRectElement2.setAttribute("height", "20");
+embeddedMultiplyRectElement2.setAttribute("fill", "#ff0");
+embeddedMultiplyRectElement2.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement2);
+
+rootSVGElement.appendChild(gElement);
+
+var screenRectElement = createSVGElement("rect");
+screenRectElement.setAttribute("x", "25");
+screenRectElement.setAttribute("y", "102");
+screenRectElement.setAttribute("width", "240");
+screenRectElement.setAttribute("height", "20");
+screenRectElement.setAttribute("fill", "blue");
+screenRectElement.setAttribute("opacity", "0.5");
+screenRectElement.setAttribute("filter", "url(#screenFilter)");
+rootSVGElement.appendChild(screenRectElement);
+
+var darkenRectElement = createSVGElement("rect");
+darkenRectElement.setAttribute("x", "25");
+darkenRectElement.setAttribute("y", "125");
+darkenRectElement.setAttribute("width", "240");
+darkenRectElement.setAttribute("height", "20");
+darkenRectElement.setAttribute("fill", "blue");
+darkenRectElement.setAttribute("opacity", "0.5");
+darkenRectElement.setAttribute("filter", "url(#darkenFilter)");
+rootSVGElement.appendChild(darkenRectElement);
+
+var lightenRectElement = createSVGElement("rect");
+lightenRectElement.setAttribute("x", "25");
+lightenRectElement.setAttribute("y", "148");
+lightenRectElement.setAttribute("width", "240");
+lightenRectElement.setAttribute("height", "20");
+lightenRectElement.setAttribute("fill", "blue");
+lightenRectElement.setAttribute("opacity", "0.5");
+lightenRectElement.setAttribute("filter", "url(#lightenFilter)");
+rootSVGElement.appendChild(lightenRectElement);
+
+rootSVGElement.setAttribute("fill", "#333");
+rootSVGElement.setAttribute("font-size", "14");
+rootSVGElement.setAttribute("width", "350");
+rootSVGElement.setAttribute("height", "250");
+
+shouldBeEqualToString("normalBlend.getAttribute('mode')", "lighten");
+shouldBeEqualToString("multiplyBlend.getAttribute('mode')", "normal");
+shouldBeEqualToString("screenBlend.getAttribute('mode')", "multiply");
+shouldBeEqualToString("darkenBlend.getAttribute('mode')", "screen");
+shouldBeEqualToString("lightenBlend.getAttribute('mode')", "darken");
+
+function executeTest() {
+    normalBlend.setAttribute("mode", "normal");
+    multiplyBlend.setAttribute("mode", "multiply");
+    screenBlend.setAttribute("mode", "screen");
+    darkenBlend.setAttribute("mode", "darken");
+    lightenBlend.setAttribute("mode", "lighten");
+
+    shouldBeEqualToString("normalBlend.getAttribute('mode')", "normal");
+    shouldBeEqualToString("multiplyBlend.getAttribute('mode')", "multiply");
+    shouldBeEqualToString("screenBlend.getAttribute('mode')", "screen");
+    shouldBeEqualToString("darkenBlend.getAttribute('mode')", "darken");
+    shouldBeEqualToString("lightenBlend.getAttribute('mode')", "lighten");
+
+    completeTest();
+}
+
+startTest(rootSVGElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in-prop.js
new file mode 100644
index 0000000..056f177
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in-prop.js
@@ -0,0 +1,232 @@
+// [Name] SVGFEBlendElement-svgdom-in-prop.js
+// [Expected rendering result] Seven blended rectangles in a gradient - and a series of PASS messages
+
+description("Tests dynamic updates of the 'in' property of the SVGFEBlendElement object")
+createSVGTestCase();
+
+var backgroundImage = createSVGElement("image");
+backgroundImage.setAttribute("x", "35");
+backgroundImage.setAttribute("y", "5");
+backgroundImage.setAttribute("width", "220");
+backgroundImage.setAttribute("height", "171");
+backgroundImage.setAttribute("preserveAspectRatio", "none");
+backgroundImage.setAttributeNS(xlinkNS, "xlink:href", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAABCAMAAAAfBfuPAAAABGdBTUEAAK/INwWK6QAAABl0RVh0         U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEsUExURfb/AK3/AAD/9/9sAIn/AN7/ABT/        AAB//zD/AP9GAAD/s1H/AAD/H/8AxwD/bn8A/1wA/wD/XJv/AP8Ai//MAGP/ABMA/wD/LP8A6P8K         AP8AF/8A9QD/xAAA/wD1/9MA/wD/gABY/wD/Cf8ATJEA//+6AACT/wCn/+v/AAD/TAD/kf8AYKMA         //8kAAAk/wAV/y0A/3b/AP80AAD/O/cA//8A/wD///8An/8A2QD/Ev8AAMQA/+0A/7MA////AP8A         CuAA//8AJ24A/0sA//8AOAA0/wAK/wBF//8WAAgA/x8A///2AL//AP8AdTwA/wn/AP/bAP+AAP+U         AM//AP+nAP8AtADp/wD/o0D/AP/qAADb/wC5/wDL/wD/AAD/7QD/0gD/4CH/AABr//9ZAG2IeB4A         AABvSURBVHjaYrCyl3J0Udb2FTYP5bWQkDY1sXGQt7bVUeF3EnD2M/AS85R109dzdVdMYldTj46J         CpMzY4pLiJfhCtdS4BPUNBbnsVSK9WdL5IjgFjVkEWL0CWbVYLDzjgwQUQ0JCmRO5jTS9ZAECDAA         3aQTV3E5iioAAAAASUVORK5CYII=");
+rootSVGElement.appendChild(backgroundImage);
+
+var normalFlood = createSVGElement("feFlood");
+normalFlood.setAttribute("in", "BackgroundAlpha");
+normalFlood.setAttribute("flood-color", "#0f0");
+normalFlood.setAttribute("flood-opacity", "0.5");
+normalFlood.setAttribute("result", "normalImg");
+
+var multiplyFlood = createSVGElement("feFlood");
+multiplyFlood.setAttribute("in", "SourceGraphic");
+multiplyFlood.setAttribute("flood-color", "#0f0");
+multiplyFlood.setAttribute("flood-opacity", "0.5");
+multiplyFlood.setAttribute("result", "multiplyImg");
+
+var screenFlood = createSVGElement("feFlood");
+screenFlood.setAttribute("in", "SourceGraphic");
+screenFlood.setAttribute("flood-color", "#0f0");
+screenFlood.setAttribute("flood-opacity", "0.5");
+screenFlood.setAttribute("result", "screenImg");
+
+var darkenFlood = createSVGElement("feFlood");
+darkenFlood.setAttribute("in", "SourceGraphic");
+darkenFlood.setAttribute("flood-color", "#0f0");
+darkenFlood.setAttribute("flood-opacity", "0.5");
+darkenFlood.setAttribute("result", "darkenImg");
+
+var lightenFlood = createSVGElement("feFlood");
+lightenFlood.setAttribute("in", "SourceGraphic");
+lightenFlood.setAttribute("flood-color", "#0f0");
+lightenFlood.setAttribute("flood-opacity", "0.5");
+lightenFlood.setAttribute("result", "lightenImg");
+
+var normalBlend = createSVGElement("feBlend");
+normalBlend.setAttribute("in", "SourceAlpha");
+normalBlend.setAttribute("in2", "normalImg");
+normalBlend.setAttribute("mode", "normal");
+
+var multiplyBlend = createSVGElement("feBlend");
+multiplyBlend.setAttribute("in", "SourceAlpha");
+multiplyBlend.setAttribute("in2", "multiplyImg");
+multiplyBlend.setAttribute("mode", "multiply");
+
+var screenBlend = createSVGElement("feBlend");
+screenBlend.setAttribute("in", "SourceAlpha");
+screenBlend.setAttribute("in2", "screenImg");
+screenBlend.setAttribute("mode", "screen");
+
+var darkenBlend = createSVGElement("feBlend");
+darkenBlend.setAttribute("in", "SourceAlpha");
+darkenBlend.setAttribute("in2", "darkenImg");
+darkenBlend.setAttribute("mode", "darken");
+
+var lightenBlend = createSVGElement("feBlend");
+lightenBlend.setAttribute("in", "SourceAlpha");
+lightenBlend.setAttribute("in2", "lightenImg");
+lightenBlend.setAttribute("mode", "lighten");
+
+var normalBlendFilter = createSVGElement("filter");
+normalBlendFilter.setAttribute("id", "normalFilter");
+normalBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+normalBlendFilter.setAttribute("x", "0%");
+normalBlendFilter.setAttribute("y", "0%");
+normalBlendFilter.setAttribute("width", "100%");
+normalBlendFilter.setAttribute("height", "100%");
+normalBlendFilter.appendChild(normalFlood);
+normalBlendFilter.appendChild(normalBlend);
+
+var multiplyBlendFilter = createSVGElement("filter");
+multiplyBlendFilter.setAttribute("id", "multiplyFilter");
+multiplyBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+multiplyBlendFilter.setAttribute("x", "0%");
+multiplyBlendFilter.setAttribute("y", "0%");
+multiplyBlendFilter.setAttribute("width", "100%");
+multiplyBlendFilter.setAttribute("height", "100%");
+multiplyBlendFilter.appendChild(multiplyFlood);
+multiplyBlendFilter.appendChild(multiplyBlend);
+
+var screenBlendFilter = createSVGElement("filter");
+screenBlendFilter.setAttribute("id", "screenFilter");
+screenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+screenBlendFilter.setAttribute("x", "0%");
+screenBlendFilter.setAttribute("y", "0%");
+screenBlendFilter.setAttribute("width", "100%");
+screenBlendFilter.setAttribute("height", "100%");
+screenBlendFilter.appendChild(screenFlood);
+screenBlendFilter.appendChild(screenBlend);
+
+var darkenBlendFilter = createSVGElement("filter");
+darkenBlendFilter.setAttribute("id", "darkenFilter");
+darkenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+darkenBlendFilter.setAttribute("x", "0%");
+darkenBlendFilter.setAttribute("y", "0%");
+darkenBlendFilter.setAttribute("width", "100%");
+darkenBlendFilter.setAttribute("height", "100%");
+darkenBlendFilter.appendChild(darkenFlood);
+darkenBlendFilter.appendChild(darkenBlend);
+
+var lightenBlendFilter = createSVGElement("filter");
+lightenBlendFilter.setAttribute("id", "lightenFilter");
+lightenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+lightenBlendFilter.setAttribute("x", "0%");
+lightenBlendFilter.setAttribute("y", "0%");
+lightenBlendFilter.setAttribute("width", "100%");
+lightenBlendFilter.setAttribute("height", "100%");
+lightenBlendFilter.appendChild(lightenFlood);
+lightenBlendFilter.appendChild(lightenBlend);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(normalBlendFilter);
+defsElement.appendChild(multiplyBlendFilter);
+defsElement.appendChild(screenBlendFilter);
+defsElement.appendChild(darkenBlendFilter);
+defsElement.appendChild(lightenBlendFilter);
+
+rootSVGElement.appendChild(defsElement);
+
+var normalRectElement = createSVGElement("rect");
+normalRectElement.setAttribute("x", "25");
+normalRectElement.setAttribute("y", "10");
+normalRectElement.setAttribute("width", "240");
+normalRectElement.setAttribute("height", "20");
+normalRectElement.setAttribute("fill", "blue");
+normalRectElement.setAttribute("opacity", "0.5");
+normalRectElement.setAttribute("filter", "url(#normalFilter)");
+rootSVGElement.appendChild(normalRectElement);
+
+var multiplyRectElement = createSVGElement("rect");
+multiplyRectElement.setAttribute("x", "25");
+multiplyRectElement.setAttribute("y", "33");
+multiplyRectElement.setAttribute("width", "240");
+multiplyRectElement.setAttribute("height", "20");
+multiplyRectElement.setAttribute("fill", "blue");
+multiplyRectElement.setAttribute("opacity", "0.5");
+multiplyRectElement.setAttribute("filter", "url(#multiplyFilter)");
+rootSVGElement.appendChild(multiplyRectElement);
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("filter", "url(#multiplyFilter)");
+
+var embeddedMultiplyRectElement1 = createSVGElement("rect");
+embeddedMultiplyRectElement1.setAttribute("x", "25");
+embeddedMultiplyRectElement1.setAttribute("y", "56");
+embeddedMultiplyRectElement1.setAttribute("width", "240");
+embeddedMultiplyRectElement1.setAttribute("height", "20");
+embeddedMultiplyRectElement1.setAttribute("fill", "blue");
+embeddedMultiplyRectElement1.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement1);
+
+var embeddedMultiplyRectElement2 = createSVGElement("rect");
+embeddedMultiplyRectElement2.setAttribute("x", "25");
+embeddedMultiplyRectElement2.setAttribute("y", "79");
+embeddedMultiplyRectElement2.setAttribute("width", "240");
+embeddedMultiplyRectElement2.setAttribute("height", "20");
+embeddedMultiplyRectElement2.setAttribute("fill", "#ff0");
+embeddedMultiplyRectElement2.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement2);
+
+rootSVGElement.appendChild(gElement);
+
+var screenRectElement = createSVGElement("rect");
+screenRectElement.setAttribute("x", "25");
+screenRectElement.setAttribute("y", "102");
+screenRectElement.setAttribute("width", "240");
+screenRectElement.setAttribute("height", "20");
+screenRectElement.setAttribute("fill", "blue");
+screenRectElement.setAttribute("opacity", "0.5");
+screenRectElement.setAttribute("filter", "url(#screenFilter)");
+rootSVGElement.appendChild(screenRectElement);
+
+var darkenRectElement = createSVGElement("rect");
+darkenRectElement.setAttribute("x", "25");
+darkenRectElement.setAttribute("y", "125");
+darkenRectElement.setAttribute("width", "240");
+darkenRectElement.setAttribute("height", "20");
+darkenRectElement.setAttribute("fill", "blue");
+darkenRectElement.setAttribute("opacity", "0.5");
+darkenRectElement.setAttribute("filter", "url(#darkenFilter)");
+rootSVGElement.appendChild(darkenRectElement);
+
+var lightenRectElement = createSVGElement("rect");
+lightenRectElement.setAttribute("x", "25");
+lightenRectElement.setAttribute("y", "148");
+lightenRectElement.setAttribute("width", "240");
+lightenRectElement.setAttribute("height", "20");
+lightenRectElement.setAttribute("fill", "blue");
+lightenRectElement.setAttribute("opacity", "0.5");
+lightenRectElement.setAttribute("filter", "url(#lightenFilter)");
+rootSVGElement.appendChild(lightenRectElement);
+
+rootSVGElement.setAttribute("fill", "#333");
+rootSVGElement.setAttribute("font-size", "14");
+rootSVGElement.setAttribute("width", "350");
+rootSVGElement.setAttribute("height", "250");
+
+shouldBeEqualToString("normalBlend.in1.baseVal", "SourceAlpha");
+shouldBeEqualToString("multiplyBlend.in1.baseVal", "SourceAlpha");
+shouldBeEqualToString("screenBlend.in1.baseVal", "SourceAlpha");
+shouldBeEqualToString("darkenBlend.in1.baseVal", "SourceAlpha");
+shouldBeEqualToString("lightenBlend.in1.baseVal", "SourceAlpha");
+
+function executeTest() {
+    normalBlend.in1.baseVal = "SourceGraphic";
+    multiplyBlend.in1.baseVal = "SourceGraphic";
+    screenBlend.in1.baseVal = "SourceGraphic";
+    darkenBlend.in1.baseVal = "SourceGraphic";
+    lightenBlend.in1.baseVal = "SourceGraphic";
+
+    shouldBeEqualToString("normalBlend.in1.baseVal", "SourceGraphic");
+    shouldBeEqualToString("multiplyBlend.in1.baseVal", "SourceGraphic");
+    shouldBeEqualToString("screenBlend.in1.baseVal", "SourceGraphic");
+    shouldBeEqualToString("darkenBlend.in1.baseVal", "SourceGraphic");
+    shouldBeEqualToString("lightenBlend.in1.baseVal", "SourceGraphic");
+
+    completeTest();
+}
+
+startTest(rootSVGElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in2-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in2-prop.js
new file mode 100644
index 0000000..c704e41
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-in2-prop.js
@@ -0,0 +1,232 @@
+// [Name] SVGFEBlendElement-svgdom-in2-prop.js
+// [Expected rendering result] Seven blended rectangles in a gradient - and a series of PASS messages
+
+description("Tests dynamic updates of the 'in2' property of the SVGFEBlendElement object")
+createSVGTestCase();
+
+var backgroundImage = createSVGElement("image");
+backgroundImage.setAttribute("x", "35");
+backgroundImage.setAttribute("y", "5");
+backgroundImage.setAttribute("width", "220");
+backgroundImage.setAttribute("height", "171");
+backgroundImage.setAttribute("preserveAspectRatio", "none");
+backgroundImage.setAttributeNS(xlinkNS, "xlink:href", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAABCAMAAAAfBfuPAAAABGdBTUEAAK/INwWK6QAAABl0RVh0         U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEsUExURfb/AK3/AAD/9/9sAIn/AN7/ABT/        AAB//zD/AP9GAAD/s1H/AAD/H/8AxwD/bn8A/1wA/wD/XJv/AP8Ai//MAGP/ABMA/wD/LP8A6P8K         AP8AF/8A9QD/xAAA/wD1/9MA/wD/gABY/wD/Cf8ATJEA//+6AACT/wCn/+v/AAD/TAD/kf8AYKMA         //8kAAAk/wAV/y0A/3b/AP80AAD/O/cA//8A/wD///8An/8A2QD/Ev8AAMQA/+0A/7MA////AP8A         CuAA//8AJ24A/0sA//8AOAA0/wAK/wBF//8WAAgA/x8A///2AL//AP8AdTwA/wn/AP/bAP+AAP+U         AM//AP+nAP8AtADp/wD/o0D/AP/qAADb/wC5/wDL/wD/AAD/7QD/0gD/4CH/AABr//9ZAG2IeB4A         AABvSURBVHjaYrCyl3J0Udb2FTYP5bWQkDY1sXGQt7bVUeF3EnD2M/AS85R109dzdVdMYldTj46J         CpMzY4pLiJfhCtdS4BPUNBbnsVSK9WdL5IjgFjVkEWL0CWbVYLDzjgwQUQ0JCmRO5jTS9ZAECDAA         3aQTV3E5iioAAAAASUVORK5CYII=");
+rootSVGElement.appendChild(backgroundImage);
+
+var normalFlood = createSVGElement("feFlood");
+normalFlood.setAttribute("in", "BackgroundAlpha");
+normalFlood.setAttribute("flood-color", "#0f0");
+normalFlood.setAttribute("flood-opacity", "0.5");
+normalFlood.setAttribute("result", "normalImg");
+
+var multiplyFlood = createSVGElement("feFlood");
+multiplyFlood.setAttribute("in", "SourceGraphic");
+multiplyFlood.setAttribute("flood-color", "#0f0");
+multiplyFlood.setAttribute("flood-opacity", "0.5");
+multiplyFlood.setAttribute("result", "multiplyImg");
+
+var screenFlood = createSVGElement("feFlood");
+screenFlood.setAttribute("in", "SourceGraphic");
+screenFlood.setAttribute("flood-color", "#0f0");
+screenFlood.setAttribute("flood-opacity", "0.5");
+screenFlood.setAttribute("result", "screenImg");
+
+var darkenFlood = createSVGElement("feFlood");
+darkenFlood.setAttribute("in", "SourceGraphic");
+darkenFlood.setAttribute("flood-color", "#0f0");
+darkenFlood.setAttribute("flood-opacity", "0.5");
+darkenFlood.setAttribute("result", "darkenImg");
+
+var lightenFlood = createSVGElement("feFlood");
+lightenFlood.setAttribute("in", "SourceGraphic");
+lightenFlood.setAttribute("flood-color", "#0f0");
+lightenFlood.setAttribute("flood-opacity", "0.5");
+lightenFlood.setAttribute("result", "lightenImg");
+
+var normalBlend = createSVGElement("feBlend");
+normalBlend.setAttribute("in", "SourceGraphic");
+normalBlend.setAttribute("in2", "lightenImg");
+normalBlend.setAttribute("mode", "normal");
+
+var multiplyBlend = createSVGElement("feBlend");
+multiplyBlend.setAttribute("in", "SourceGraphic");
+multiplyBlend.setAttribute("in2", "normalImg");
+multiplyBlend.setAttribute("mode", "multiply");
+
+var screenBlend = createSVGElement("feBlend");
+screenBlend.setAttribute("in", "SourceGraphic");
+screenBlend.setAttribute("in2", "multiplyImg");
+screenBlend.setAttribute("mode", "screen");
+
+var darkenBlend = createSVGElement("feBlend");
+darkenBlend.setAttribute("in", "SourceGraphic");
+darkenBlend.setAttribute("in2", "screenImg");
+darkenBlend.setAttribute("mode", "darken");
+
+var lightenBlend = createSVGElement("feBlend");
+lightenBlend.setAttribute("in", "SourceGraphic");
+lightenBlend.setAttribute("in2", "darkenImg");
+lightenBlend.setAttribute("mode", "lighten");
+
+var normalBlendFilter = createSVGElement("filter");
+normalBlendFilter.setAttribute("id", "normalFilter");
+normalBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+normalBlendFilter.setAttribute("x", "0%");
+normalBlendFilter.setAttribute("y", "0%");
+normalBlendFilter.setAttribute("width", "100%");
+normalBlendFilter.setAttribute("height", "100%");
+normalBlendFilter.appendChild(normalFlood);
+normalBlendFilter.appendChild(normalBlend);
+
+var multiplyBlendFilter = createSVGElement("filter");
+multiplyBlendFilter.setAttribute("id", "multiplyFilter");
+multiplyBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+multiplyBlendFilter.setAttribute("x", "0%");
+multiplyBlendFilter.setAttribute("y", "0%");
+multiplyBlendFilter.setAttribute("width", "100%");
+multiplyBlendFilter.setAttribute("height", "100%");
+multiplyBlendFilter.appendChild(multiplyFlood);
+multiplyBlendFilter.appendChild(multiplyBlend);
+
+var screenBlendFilter = createSVGElement("filter");
+screenBlendFilter.setAttribute("id", "screenFilter");
+screenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+screenBlendFilter.setAttribute("x", "0%");
+screenBlendFilter.setAttribute("y", "0%");
+screenBlendFilter.setAttribute("width", "100%");
+screenBlendFilter.setAttribute("height", "100%");
+screenBlendFilter.appendChild(screenFlood);
+screenBlendFilter.appendChild(screenBlend);
+
+var darkenBlendFilter = createSVGElement("filter");
+darkenBlendFilter.setAttribute("id", "darkenFilter");
+darkenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+darkenBlendFilter.setAttribute("x", "0%");
+darkenBlendFilter.setAttribute("y", "0%");
+darkenBlendFilter.setAttribute("width", "100%");
+darkenBlendFilter.setAttribute("height", "100%");
+darkenBlendFilter.appendChild(darkenFlood);
+darkenBlendFilter.appendChild(darkenBlend);
+
+var lightenBlendFilter = createSVGElement("filter");
+lightenBlendFilter.setAttribute("id", "lightenFilter");
+lightenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+lightenBlendFilter.setAttribute("x", "0%");
+lightenBlendFilter.setAttribute("y", "0%");
+lightenBlendFilter.setAttribute("width", "100%");
+lightenBlendFilter.setAttribute("height", "100%");
+lightenBlendFilter.appendChild(lightenFlood);
+lightenBlendFilter.appendChild(lightenBlend);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(normalBlendFilter);
+defsElement.appendChild(multiplyBlendFilter);
+defsElement.appendChild(screenBlendFilter);
+defsElement.appendChild(darkenBlendFilter);
+defsElement.appendChild(lightenBlendFilter);
+
+rootSVGElement.appendChild(defsElement);
+
+var normalRectElement = createSVGElement("rect");
+normalRectElement.setAttribute("x", "25");
+normalRectElement.setAttribute("y", "10");
+normalRectElement.setAttribute("width", "240");
+normalRectElement.setAttribute("height", "20");
+normalRectElement.setAttribute("fill", "blue");
+normalRectElement.setAttribute("opacity", "0.5");
+normalRectElement.setAttribute("filter", "url(#normalFilter)");
+rootSVGElement.appendChild(normalRectElement);
+
+var multiplyRectElement = createSVGElement("rect");
+multiplyRectElement.setAttribute("x", "25");
+multiplyRectElement.setAttribute("y", "33");
+multiplyRectElement.setAttribute("width", "240");
+multiplyRectElement.setAttribute("height", "20");
+multiplyRectElement.setAttribute("fill", "blue");
+multiplyRectElement.setAttribute("opacity", "0.5");
+multiplyRectElement.setAttribute("filter", "url(#multiplyFilter)");
+rootSVGElement.appendChild(multiplyRectElement);
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("filter", "url(#multiplyFilter)");
+
+var embeddedMultiplyRectElement1 = createSVGElement("rect");
+embeddedMultiplyRectElement1.setAttribute("x", "25");
+embeddedMultiplyRectElement1.setAttribute("y", "56");
+embeddedMultiplyRectElement1.setAttribute("width", "240");
+embeddedMultiplyRectElement1.setAttribute("height", "20");
+embeddedMultiplyRectElement1.setAttribute("fill", "blue");
+embeddedMultiplyRectElement1.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement1);
+
+var embeddedMultiplyRectElement2 = createSVGElement("rect");
+embeddedMultiplyRectElement2.setAttribute("x", "25");
+embeddedMultiplyRectElement2.setAttribute("y", "79");
+embeddedMultiplyRectElement2.setAttribute("width", "240");
+embeddedMultiplyRectElement2.setAttribute("height", "20");
+embeddedMultiplyRectElement2.setAttribute("fill", "#ff0");
+embeddedMultiplyRectElement2.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement2);
+
+rootSVGElement.appendChild(gElement);
+
+var screenRectElement = createSVGElement("rect");
+screenRectElement.setAttribute("x", "25");
+screenRectElement.setAttribute("y", "102");
+screenRectElement.setAttribute("width", "240");
+screenRectElement.setAttribute("height", "20");
+screenRectElement.setAttribute("fill", "blue");
+screenRectElement.setAttribute("opacity", "0.5");
+screenRectElement.setAttribute("filter", "url(#screenFilter)");
+rootSVGElement.appendChild(screenRectElement);
+
+var darkenRectElement = createSVGElement("rect");
+darkenRectElement.setAttribute("x", "25");
+darkenRectElement.setAttribute("y", "125");
+darkenRectElement.setAttribute("width", "240");
+darkenRectElement.setAttribute("height", "20");
+darkenRectElement.setAttribute("fill", "blue");
+darkenRectElement.setAttribute("opacity", "0.5");
+darkenRectElement.setAttribute("filter", "url(#darkenFilter)");
+rootSVGElement.appendChild(darkenRectElement);
+
+var lightenRectElement = createSVGElement("rect");
+lightenRectElement.setAttribute("x", "25");
+lightenRectElement.setAttribute("y", "148");
+lightenRectElement.setAttribute("width", "240");
+lightenRectElement.setAttribute("height", "20");
+lightenRectElement.setAttribute("fill", "blue");
+lightenRectElement.setAttribute("opacity", "0.5");
+lightenRectElement.setAttribute("filter", "url(#lightenFilter)");
+rootSVGElement.appendChild(lightenRectElement);
+
+rootSVGElement.setAttribute("fill", "#333");
+rootSVGElement.setAttribute("font-size", "14");
+rootSVGElement.setAttribute("width", "350");
+rootSVGElement.setAttribute("height", "250");
+
+shouldBeEqualToString("normalBlend.in2.baseVal", "lightenImg");
+shouldBeEqualToString("multiplyBlend.in2.baseVal", "normalImg");
+shouldBeEqualToString("screenBlend.in2.baseVal", "multiplyImg");
+shouldBeEqualToString("darkenBlend.in2.baseVal", "screenImg");
+shouldBeEqualToString("lightenBlend.in2.baseVal", "darkenImg");
+
+function executeTest() {
+    normalBlend.in2.baseVal = "normalImg";
+    multiplyBlend.in2.baseVal = "multiplyImg";
+    screenBlend.in2.baseVal = "screenImg";
+    darkenBlend.in2.baseVal = "darkenImg";
+    lightenBlend.in2.baseVal = "lightenImg";
+
+    shouldBeEqualToString("normalBlend.in2.baseVal", "normalImg");
+    shouldBeEqualToString("multiplyBlend.in2.baseVal", "multiplyImg");
+    shouldBeEqualToString("screenBlend.in2.baseVal", "screenImg");
+    shouldBeEqualToString("darkenBlend.in2.baseVal", "darkenImg");
+    shouldBeEqualToString("lightenBlend.in2.baseVal", "lightenImg");
+
+    completeTest();
+}
+
+startTest(rootSVGElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-mode-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-mode-prop.js
new file mode 100644
index 0000000..2bcbbf9
--- /dev/null
+++ b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEBlendElement-svgdom-mode-prop.js
@@ -0,0 +1,232 @@
+// [Name] SVGFEBlendElement-svgdom-mode-prop.js
+// [Expected rendering result] Seven blended rectangles in a gradient - and a series of PASS messages
+
+description("Tests dynamic updates of the 'mode' property of the SVGFEBlendElement object")
+createSVGTestCase();
+
+var backgroundImage = createSVGElement("image");
+backgroundImage.setAttribute("x", "35");
+backgroundImage.setAttribute("y", "5");
+backgroundImage.setAttribute("width", "220");
+backgroundImage.setAttribute("height", "171");
+backgroundImage.setAttribute("preserveAspectRatio", "none");
+backgroundImage.setAttributeNS(xlinkNS, "xlink:href", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAABCAMAAAAfBfuPAAAABGdBTUEAAK/INwWK6QAAABl0RVh0         U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEsUExURfb/AK3/AAD/9/9sAIn/AN7/ABT/        AAB//zD/AP9GAAD/s1H/AAD/H/8AxwD/bn8A/1wA/wD/XJv/AP8Ai//MAGP/ABMA/wD/LP8A6P8K         AP8AF/8A9QD/xAAA/wD1/9MA/wD/gABY/wD/Cf8ATJEA//+6AACT/wCn/+v/AAD/TAD/kf8AYKMA         //8kAAAk/wAV/y0A/3b/AP80AAD/O/cA//8A/wD///8An/8A2QD/Ev8AAMQA/+0A/7MA////AP8A         CuAA//8AJ24A/0sA//8AOAA0/wAK/wBF//8WAAgA/x8A///2AL//AP8AdTwA/wn/AP/bAP+AAP+U         AM//AP+nAP8AtADp/wD/o0D/AP/qAADb/wC5/wDL/wD/AAD/7QD/0gD/4CH/AABr//9ZAG2IeB4A         AABvSURBVHjaYrCyl3J0Udb2FTYP5bWQkDY1sXGQt7bVUeF3EnD2M/AS85R109dzdVdMYldTj46J         CpMzY4pLiJfhCtdS4BPUNBbnsVSK9WdL5IjgFjVkEWL0CWbVYLDzjgwQUQ0JCmRO5jTS9ZAECDAA         3aQTV3E5iioAAAAASUVORK5CYII=");
+rootSVGElement.appendChild(backgroundImage);
+
+var normalFlood = createSVGElement("feFlood");
+normalFlood.setAttribute("in", "BackgroundAlpha");
+normalFlood.setAttribute("flood-color", "#0f0");
+normalFlood.setAttribute("flood-opacity", "0.5");
+normalFlood.setAttribute("result", "normalImg");
+
+var multiplyFlood = createSVGElement("feFlood");
+multiplyFlood.setAttribute("in", "SourceGraphic");
+multiplyFlood.setAttribute("flood-color", "#0f0");
+multiplyFlood.setAttribute("flood-opacity", "0.5");
+multiplyFlood.setAttribute("result", "multiplyImg");
+
+var screenFlood = createSVGElement("feFlood");
+screenFlood.setAttribute("in", "SourceGraphic");
+screenFlood.setAttribute("flood-color", "#0f0");
+screenFlood.setAttribute("flood-opacity", "0.5");
+screenFlood.setAttribute("result", "screenImg");
+
+var darkenFlood = createSVGElement("feFlood");
+darkenFlood.setAttribute("in", "SourceGraphic");
+darkenFlood.setAttribute("flood-color", "#0f0");
+darkenFlood.setAttribute("flood-opacity", "0.5");
+darkenFlood.setAttribute("result", "darkenImg");
+
+var lightenFlood = createSVGElement("feFlood");
+lightenFlood.setAttribute("in", "SourceGraphic");
+lightenFlood.setAttribute("flood-color", "#0f0");
+lightenFlood.setAttribute("flood-opacity", "0.5");
+lightenFlood.setAttribute("result", "lightenImg");
+
+var normalBlend = createSVGElement("feBlend");
+normalBlend.setAttribute("in", "SourceGraphic");
+normalBlend.setAttribute("in2", "normalImg");
+normalBlend.setAttribute("mode", "lighten");
+
+var multiplyBlend = createSVGElement("feBlend");
+multiplyBlend.setAttribute("in", "SourceGraphic");
+multiplyBlend.setAttribute("in2", "multiplyImg");
+multiplyBlend.setAttribute("mode", "normal");
+
+var screenBlend = createSVGElement("feBlend");
+screenBlend.setAttribute("in", "SourceGraphic");
+screenBlend.setAttribute("in2", "screenImg");
+screenBlend.setAttribute("mode", "multiply");
+
+var darkenBlend = createSVGElement("feBlend");
+darkenBlend.setAttribute("in", "SourceGraphic");
+darkenBlend.setAttribute("in2", "darkenImg");
+darkenBlend.setAttribute("mode", "screen");
+
+var lightenBlend = createSVGElement("feBlend");
+lightenBlend.setAttribute("in", "SourceGraphic");
+lightenBlend.setAttribute("in2", "lightenImg");
+lightenBlend.setAttribute("mode", "darken");
+
+var normalBlendFilter = createSVGElement("filter");
+normalBlendFilter.setAttribute("id", "normalFilter");
+normalBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+normalBlendFilter.setAttribute("x", "0%");
+normalBlendFilter.setAttribute("y", "0%");
+normalBlendFilter.setAttribute("width", "100%");
+normalBlendFilter.setAttribute("height", "100%");
+normalBlendFilter.appendChild(normalFlood);
+normalBlendFilter.appendChild(normalBlend);
+
+var multiplyBlendFilter = createSVGElement("filter");
+multiplyBlendFilter.setAttribute("id", "multiplyFilter");
+multiplyBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+multiplyBlendFilter.setAttribute("x", "0%");
+multiplyBlendFilter.setAttribute("y", "0%");
+multiplyBlendFilter.setAttribute("width", "100%");
+multiplyBlendFilter.setAttribute("height", "100%");
+multiplyBlendFilter.appendChild(multiplyFlood);
+multiplyBlendFilter.appendChild(multiplyBlend);
+
+var screenBlendFilter = createSVGElement("filter");
+screenBlendFilter.setAttribute("id", "screenFilter");
+screenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+screenBlendFilter.setAttribute("x", "0%");
+screenBlendFilter.setAttribute("y", "0%");
+screenBlendFilter.setAttribute("width", "100%");
+screenBlendFilter.setAttribute("height", "100%");
+screenBlendFilter.appendChild(screenFlood);
+screenBlendFilter.appendChild(screenBlend);
+
+var darkenBlendFilter = createSVGElement("filter");
+darkenBlendFilter.setAttribute("id", "darkenFilter");
+darkenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+darkenBlendFilter.setAttribute("x", "0%");
+darkenBlendFilter.setAttribute("y", "0%");
+darkenBlendFilter.setAttribute("width", "100%");
+darkenBlendFilter.setAttribute("height", "100%");
+darkenBlendFilter.appendChild(darkenFlood);
+darkenBlendFilter.appendChild(darkenBlend);
+
+var lightenBlendFilter = createSVGElement("filter");
+lightenBlendFilter.setAttribute("id", "lightenFilter");
+lightenBlendFilter.setAttribute("filterUnits", "objectBoundingBox");
+lightenBlendFilter.setAttribute("x", "0%");
+lightenBlendFilter.setAttribute("y", "0%");
+lightenBlendFilter.setAttribute("width", "100%");
+lightenBlendFilter.setAttribute("height", "100%");
+lightenBlendFilter.appendChild(lightenFlood);
+lightenBlendFilter.appendChild(lightenBlend);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(normalBlendFilter);
+defsElement.appendChild(multiplyBlendFilter);
+defsElement.appendChild(screenBlendFilter);
+defsElement.appendChild(darkenBlendFilter);
+defsElement.appendChild(lightenBlendFilter);
+
+rootSVGElement.appendChild(defsElement);
+
+var normalRectElement = createSVGElement("rect");
+normalRectElement.setAttribute("x", "25");
+normalRectElement.setAttribute("y", "10");
+normalRectElement.setAttribute("width", "240");
+normalRectElement.setAttribute("height", "20");
+normalRectElement.setAttribute("fill", "blue");
+normalRectElement.setAttribute("opacity", "0.5");
+normalRectElement.setAttribute("filter", "url(#normalFilter)");
+rootSVGElement.appendChild(normalRectElement);
+
+var multiplyRectElement = createSVGElement("rect");
+multiplyRectElement.setAttribute("x", "25");
+multiplyRectElement.setAttribute("y", "33");
+multiplyRectElement.setAttribute("width", "240");
+multiplyRectElement.setAttribute("height", "20");
+multiplyRectElement.setAttribute("fill", "blue");
+multiplyRectElement.setAttribute("opacity", "0.5");
+multiplyRectElement.setAttribute("filter", "url(#multiplyFilter)");
+rootSVGElement.appendChild(multiplyRectElement);
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("filter", "url(#multiplyFilter)");
+
+var embeddedMultiplyRectElement1 = createSVGElement("rect");
+embeddedMultiplyRectElement1.setAttribute("x", "25");
+embeddedMultiplyRectElement1.setAttribute("y", "56");
+embeddedMultiplyRectElement1.setAttribute("width", "240");
+embeddedMultiplyRectElement1.setAttribute("height", "20");
+embeddedMultiplyRectElement1.setAttribute("fill", "blue");
+embeddedMultiplyRectElement1.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement1);
+
+var embeddedMultiplyRectElement2 = createSVGElement("rect");
+embeddedMultiplyRectElement2.setAttribute("x", "25");
+embeddedMultiplyRectElement2.setAttribute("y", "79");
+embeddedMultiplyRectElement2.setAttribute("width", "240");
+embeddedMultiplyRectElement2.setAttribute("height", "20");
+embeddedMultiplyRectElement2.setAttribute("fill", "#ff0");
+embeddedMultiplyRectElement2.setAttribute("opacity", "0.5");
+gElement.appendChild(embeddedMultiplyRectElement2);
+
+rootSVGElement.appendChild(gElement);
+
+var screenRectElement = createSVGElement("rect");
+screenRectElement.setAttribute("x", "25");
+screenRectElement.setAttribute("y", "102");
+screenRectElement.setAttribute("width", "240");
+screenRectElement.setAttribute("height", "20");
+screenRectElement.setAttribute("fill", "blue");
+screenRectElement.setAttribute("opacity", "0.5");
+screenRectElement.setAttribute("filter", "url(#screenFilter)");
+rootSVGElement.appendChild(screenRectElement);
+
+var darkenRectElement = createSVGElement("rect");
+darkenRectElement.setAttribute("x", "25");
+darkenRectElement.setAttribute("y", "125");
+darkenRectElement.setAttribute("width", "240");
+darkenRectElement.setAttribute("height", "20");
+darkenRectElement.setAttribute("fill", "blue");
+darkenRectElement.setAttribute("opacity", "0.5");
+darkenRectElement.setAttribute("filter", "url(#darkenFilter)");
+rootSVGElement.appendChild(darkenRectElement);
+
+var lightenRectElement = createSVGElement("rect");
+lightenRectElement.setAttribute("x", "25");
+lightenRectElement.setAttribute("y", "148");
+lightenRectElement.setAttribute("width", "240");
+lightenRectElement.setAttribute("height", "20");
+lightenRectElement.setAttribute("fill", "blue");
+lightenRectElement.setAttribute("opacity", "0.5");
+lightenRectElement.setAttribute("filter", "url(#lightenFilter)");
+rootSVGElement.appendChild(lightenRectElement);
+
+rootSVGElement.setAttribute("fill", "#333");
+rootSVGElement.setAttribute("font-size", "14");
+rootSVGElement.setAttribute("width", "350");
+rootSVGElement.setAttribute("height", "250");
+
+shouldBe("normalBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN");
+shouldBe("multiplyBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL");
+shouldBe("screenBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY");
+shouldBe("darkenBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN");
+shouldBe("lightenBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN");
+
+function executeTest() {
+    normalBlend.mode.baseVal =  SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL;
+    multiplyBlend.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY;
+    screenBlend.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN;
+    darkenBlend.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN;
+    lightenBlend.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN;
+
+    shouldBe("normalBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL");
+    shouldBe("multiplyBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY");
+    shouldBe("screenBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN");
+    shouldBe("darkenBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN");
+    shouldBe("lightenBlend.mode.baseVal", "SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN");
+
+    completeTest();
+}
+
+startTest(rootSVGElement, 100, 100);
+
+var successfullyParsed = true;
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 2b316bd..d8b19dc 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,21 @@
+2010-09-26  Renata Hodovan  <reni at inf.u-szeged.hu>
+
+        Reviewed by Dirk Schulze.
+
+        SVGFEBlendElement doesn't support dynamic invalidation, when attributes change.
+        https://bugs.webkit.org/show_bug.cgi?id=46464
+
+        Tests: svg/dynamic-updates/SVGFEBlendElement-dom-in-attr.html
+               svg/dynamic-updates/SVGFEBlendElement-dom-in2-attr.html
+               svg/dynamic-updates/SVGFEBlendElement-dom-mode-attr.html
+               svg/dynamic-updates/SVGFEBlendElement-svgdom-in-prop.html
+               svg/dynamic-updates/SVGFEBlendElement-svgdom-in2-prop.html
+               svg/dynamic-updates/SVGFEBlendElement-svgdom-mode-prop.html
+
+        * svg/SVGFEBlendElement.cpp:
+        (WebCore::SVGFEBlendElement::svgAttributeChanged):
+        * svg/SVGFEBlendElement.h:
+
 2010-09-26  Andreas Kling  <andreas.kling at nokia.com>
 
         Reviewed by Dan Bernstein.
diff --git a/WebCore/svg/SVGFEBlendElement.cpp b/WebCore/svg/SVGFEBlendElement.cpp
index c4d816b..6c5952f 100644
--- a/WebCore/svg/SVGFEBlendElement.cpp
+++ b/WebCore/svg/SVGFEBlendElement.cpp
@@ -60,6 +60,16 @@ void SVGFEBlendElement::parseMappedAttribute(Attribute* attr)
         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
 }
 
+void SVGFEBlendElement::svgAttributeChanged(const QualifiedName& attrName)
+{
+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
+
+    if (attrName == SVGNames::modeAttr
+        || attrName == SVGNames::inAttr
+        || attrName == SVGNames::in2Attr)
+        invalidate();
+}
+
 void SVGFEBlendElement::synchronizeProperty(const QualifiedName& attrName)
 {
     SVGFilterPrimitiveStandardAttributes::synchronizeProperty(attrName);
diff --git a/WebCore/svg/SVGFEBlendElement.h b/WebCore/svg/SVGFEBlendElement.h
index 41c8307..c8c5deb 100644
--- a/WebCore/svg/SVGFEBlendElement.h
+++ b/WebCore/svg/SVGFEBlendElement.h
@@ -34,6 +34,7 @@ private:
     SVGFEBlendElement(const QualifiedName&, Document*);
 
     virtual void parseMappedAttribute(Attribute*);
+    virtual void svgAttributeChanged(const QualifiedName&);
     virtual void synchronizeProperty(const QualifiedName&);
     virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list