[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