Merge split script tests, part 2
authorap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 May 2017 02:10:33 +0000 (02:10 +0000)
committerap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 May 2017 02:10:33 +0000 (02:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=172423

Reviewed by Tim Horton.

Fix the few remaining special cases of split tests.

* editing/pasteboard/drop-text-events-sideeffect-crash.html:
* editing/pasteboard/script-tests/drop-text-events-sideeffect.js: Removed.
This JS file used to be shared between this test and editing/pasteboard/drop-text-events-sideeffect.html.
Now it's inlined in both.

* fast/canvas/canvas-ellipse-connecting-line-expected.html:
* fast/canvas/script-tests/js-ellipse-implementation.js: Removed.
This was really a resource, not a scrip test, and it was only only used in one test.

* fast/dom/HTMLElement/class-list-quirks.html:
* fast/dom/HTMLElement/script-tests/class-list.js: Removed.
Another JS that used to be shared (with fast/dom/HTMLElement/class-list.html).

* fast/dom/Window/resources/postmessage-test.js: Copied from LayoutTests/fast/dom/Window/script-tests/postmessage-test.js.
* fast/dom/Window/script-tests/postmessage-test.js: Removed.
Moved a shared resource to its proper location.

* fast/dom/Window/script-tests/postmessage-clone-deep-array.js: Removed.
* fast/dom/Window/script-tests/postmessage-clone-really-deep-array.js: Removed.
* fast/dom/Window/script-tests/postmessage-clone.js: Removed.
* fast/dom/Window/window-postmessage-clone-deep-array.html:
* fast/dom/Window/window-postmessage-clone-really-deep-array.html:
* fast/dom/Window/window-postmessage-clone.html:
Straightforward js-tests with file names that didn't match.

* fast/table/resources/min-width-helpers.js: Copied from LayoutTests/fast/table/script-tests/min-width-helpers.js.
* fast/table/script-tests/min-width-helpers.js: Removed.
Moved a shared resource to its proper location.

* fast/table/min-width-css-block-table.html:
* fast/table/min-width-css-inline-table.html:
* fast/table/min-width-html-block-table.html:
* fast/table/min-width-html-inline-table.html:
* fast/table/script-tests/min-width-css-block-table.js: Removed.
* fast/table/script-tests/min-width-css-inline-table.js: Removed.
* fast/table/script-tests/min-width-html-block-table.js: Removed.
* fast/table/script-tests/min-width-html-inline-table.js: Removed.
Straightforward JS tests, weren't moved previously because my script was confused by min-width-helpers.js.

* printing/break-after-avoid-expected.txt:
* printing/break-after-avoid-page-expected.txt:
* printing/break-after-avoid-page.html:
* printing/break-after-avoid.html:
* printing/script-tests/break-after-avoid-page.js: Removed.
* printing/script-tests/break-after-avoid.js: Removed.
* printing/script-tests/page-break-after-avoid.js: Removed.
* printing/script-tests/page-break-always-for-overflow.js: Removed.
These had a number of copy/paste mistakes, so the tests werent's actually testing what they said they did.

* svg/dom/SVGAnimatedEnumeration-SVGMaskElement-expected.txt:
* svg/dom/SVGAnimatedEnumeration-SVGMaskElement.html:
* svg/dom/SVGAnimatedEnumeration-SVGPatternElement-expected.txt:
* svg/dom/SVGAnimatedEnumeration-SVGPatternElement.html:
* svg/dom/script-tests/SVGAnimatedEnumeration-SVGMaskElement.js: Removed.
* svg/dom/script-tests/SVGAnimatedEnumeration-SVGPatternElement.js: Removed.
These tests were mixed up - pattern was being tested instead of mask, and vice versa.

* svg/dom/script-tests/SVGColor.js: Removed.
* svg/dom/script-tests/SVGPaint.js: Removed.
Removed unused files.

* svg/dynamic-updates/SVGFEFloodElement-inherit-flood-color.html:
* svg/dynamic-updates/SVGFEGaussianBlurElement-dom-stdDeviation-call.html:
* svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr.html:
* svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop.html:
* svg/dynamic-updates/script-tests/SVGFEFloodElement-inherit-flood-color-css-prop.js: Removed.
* svg/dynamic-updates/script-tests/SVGFEGaussianBlurElement-svgdom-stdDeviation-call.js: Removed.
* svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-dom-surfaceScale-attr.js: Removed.
* svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-svgdom-surfaceScale-prop.js: Removed.
Straightforward js-tests with mismatching names.

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

47 files changed:
LayoutTests/ChangeLog
LayoutTests/editing/pasteboard/drop-text-events-sideeffect-crash.html
LayoutTests/editing/pasteboard/script-tests/drop-text-events-sideeffect.js [deleted file]
LayoutTests/fast/canvas/canvas-ellipse-connecting-line-expected.html
LayoutTests/fast/canvas/script-tests/js-ellipse-implementation.js [deleted file]
LayoutTests/fast/dom/HTMLElement/class-list-quirks.html
LayoutTests/fast/dom/HTMLElement/script-tests/class-list.js [deleted file]
LayoutTests/fast/dom/Window/resources/postmessage-test.js [moved from LayoutTests/fast/dom/Window/script-tests/postmessage-test.js with 100% similarity]
LayoutTests/fast/dom/Window/script-tests/postmessage-clone-deep-array.js [deleted file]
LayoutTests/fast/dom/Window/script-tests/postmessage-clone-really-deep-array.js [deleted file]
LayoutTests/fast/dom/Window/script-tests/postmessage-clone.js [deleted file]
LayoutTests/fast/dom/Window/window-postmessage-clone-deep-array.html
LayoutTests/fast/dom/Window/window-postmessage-clone-really-deep-array.html
LayoutTests/fast/dom/Window/window-postmessage-clone.html
LayoutTests/fast/table/min-width-css-block-table.html
LayoutTests/fast/table/min-width-css-inline-table.html
LayoutTests/fast/table/min-width-html-block-table.html
LayoutTests/fast/table/min-width-html-inline-table.html
LayoutTests/fast/table/resources/min-width-helpers.js [moved from LayoutTests/fast/table/script-tests/min-width-helpers.js with 100% similarity]
LayoutTests/fast/table/script-tests/min-width-css-block-table.js [deleted file]
LayoutTests/fast/table/script-tests/min-width-css-inline-table.js [deleted file]
LayoutTests/fast/table/script-tests/min-width-html-block-table.js [deleted file]
LayoutTests/fast/table/script-tests/min-width-html-inline-table.js [deleted file]
LayoutTests/printing/break-after-avoid-expected.txt
LayoutTests/printing/break-after-avoid-page-expected.txt
LayoutTests/printing/break-after-avoid-page.html
LayoutTests/printing/break-after-avoid.html
LayoutTests/printing/script-tests/break-after-avoid-page.js [deleted file]
LayoutTests/printing/script-tests/break-after-avoid.js [deleted file]
LayoutTests/printing/script-tests/page-break-after-avoid.js [deleted file]
LayoutTests/printing/script-tests/page-break-always-for-overflow.js [deleted file]
LayoutTests/svg/dom/SVGAnimatedEnumeration-SVGMaskElement-expected.txt
LayoutTests/svg/dom/SVGAnimatedEnumeration-SVGMaskElement.html
LayoutTests/svg/dom/SVGAnimatedEnumeration-SVGPatternElement-expected.txt
LayoutTests/svg/dom/SVGAnimatedEnumeration-SVGPatternElement.html
LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration-SVGMaskElement.js [deleted file]
LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration-SVGPatternElement.js [deleted file]
LayoutTests/svg/dom/script-tests/SVGColor.js [deleted file]
LayoutTests/svg/dom/script-tests/SVGPaint.js [deleted file]
LayoutTests/svg/dynamic-updates/SVGFEFloodElement-inherit-flood-color.html
LayoutTests/svg/dynamic-updates/SVGFEGaussianBlurElement-dom-stdDeviation-call.html
LayoutTests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr.html
LayoutTests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop.html
LayoutTests/svg/dynamic-updates/script-tests/SVGFEFloodElement-inherit-flood-color-css-prop.js [deleted file]
LayoutTests/svg/dynamic-updates/script-tests/SVGFEGaussianBlurElement-svgdom-stdDeviation-call.js [deleted file]
LayoutTests/svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-dom-surfaceScale-attr.js [deleted file]
LayoutTests/svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-svgdom-surfaceScale-prop.js [deleted file]

index e7f624e..8e27a33 100644 (file)
@@ -1,3 +1,83 @@
+2017-05-25  Alexey Proskuryakov  <ap@apple.com>
+
+        Merge split script tests, part 2
+        https://bugs.webkit.org/show_bug.cgi?id=172423
+
+        Reviewed by Tim Horton.
+
+        Fix the few remaining special cases of split tests.
+
+        * editing/pasteboard/drop-text-events-sideeffect-crash.html:
+        * editing/pasteboard/script-tests/drop-text-events-sideeffect.js: Removed.
+        This JS file used to be shared between this test and editing/pasteboard/drop-text-events-sideeffect.html.
+        Now it's inlined in both.
+
+        * fast/canvas/canvas-ellipse-connecting-line-expected.html:
+        * fast/canvas/script-tests/js-ellipse-implementation.js: Removed.
+        This was really a resource, not a scrip test, and it was only only used in one test.
+
+        * fast/dom/HTMLElement/class-list-quirks.html:
+        * fast/dom/HTMLElement/script-tests/class-list.js: Removed.
+        Another JS that used to be shared (with fast/dom/HTMLElement/class-list.html).
+
+        * fast/dom/Window/resources/postmessage-test.js: Copied from LayoutTests/fast/dom/Window/script-tests/postmessage-test.js.
+        * fast/dom/Window/script-tests/postmessage-test.js: Removed.
+        Moved a shared resource to its proper location.
+
+        * fast/dom/Window/script-tests/postmessage-clone-deep-array.js: Removed.
+        * fast/dom/Window/script-tests/postmessage-clone-really-deep-array.js: Removed.
+        * fast/dom/Window/script-tests/postmessage-clone.js: Removed.
+        * fast/dom/Window/window-postmessage-clone-deep-array.html:
+        * fast/dom/Window/window-postmessage-clone-really-deep-array.html:
+        * fast/dom/Window/window-postmessage-clone.html:
+        Straightforward js-tests with file names that didn't match.
+        
+        * fast/table/resources/min-width-helpers.js: Copied from LayoutTests/fast/table/script-tests/min-width-helpers.js.
+        * fast/table/script-tests/min-width-helpers.js: Removed.
+        Moved a shared resource to its proper location.
+
+        * fast/table/min-width-css-block-table.html:
+        * fast/table/min-width-css-inline-table.html:
+        * fast/table/min-width-html-block-table.html:
+        * fast/table/min-width-html-inline-table.html:
+        * fast/table/script-tests/min-width-css-block-table.js: Removed.
+        * fast/table/script-tests/min-width-css-inline-table.js: Removed.
+        * fast/table/script-tests/min-width-html-block-table.js: Removed.
+        * fast/table/script-tests/min-width-html-inline-table.js: Removed.
+        Straightforward JS tests, weren't moved previously because my script was confused by min-width-helpers.js.
+
+        * printing/break-after-avoid-expected.txt:
+        * printing/break-after-avoid-page-expected.txt:
+        * printing/break-after-avoid-page.html:
+        * printing/break-after-avoid.html:
+        * printing/script-tests/break-after-avoid-page.js: Removed.
+        * printing/script-tests/break-after-avoid.js: Removed.
+        * printing/script-tests/page-break-after-avoid.js: Removed.
+        * printing/script-tests/page-break-always-for-overflow.js: Removed.
+        These had a number of copy/paste mistakes, so the tests werent's actually testing what they said they did.
+
+        * svg/dom/SVGAnimatedEnumeration-SVGMaskElement-expected.txt:
+        * svg/dom/SVGAnimatedEnumeration-SVGMaskElement.html:
+        * svg/dom/SVGAnimatedEnumeration-SVGPatternElement-expected.txt:
+        * svg/dom/SVGAnimatedEnumeration-SVGPatternElement.html:
+        * svg/dom/script-tests/SVGAnimatedEnumeration-SVGMaskElement.js: Removed.
+        * svg/dom/script-tests/SVGAnimatedEnumeration-SVGPatternElement.js: Removed.
+        These tests were mixed up - pattern was being tested instead of mask, and vice versa.
+        
+        * svg/dom/script-tests/SVGColor.js: Removed.
+        * svg/dom/script-tests/SVGPaint.js: Removed.
+        Removed unused files.
+
+        * svg/dynamic-updates/SVGFEFloodElement-inherit-flood-color.html:
+        * svg/dynamic-updates/SVGFEGaussianBlurElement-dom-stdDeviation-call.html:
+        * svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr.html:
+        * svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop.html:
+        * svg/dynamic-updates/script-tests/SVGFEFloodElement-inherit-flood-color-css-prop.js: Removed.
+        * svg/dynamic-updates/script-tests/SVGFEGaussianBlurElement-svgdom-stdDeviation-call.js: Removed.
+        * svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-dom-surfaceScale-attr.js: Removed.
+        * svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-svgdom-surfaceScale-prop.js: Removed.
+        Straightforward js-tests with mismatching names.
+
 2017-05-25  Myles C. Maxfield  <mmaxfield@apple.com>
 
         [WK1] iframes in layer-backed NSViews are not cleared between successive draws
index 75b5a7c..b7d00d0 100644 (file)
@@ -9,7 +9,99 @@
 <script>
 document.body.contentEditable = "true";    
 </script>
-<script src="script-tests/drop-text-events-sideeffect.js"></script>
+<script>
+description('Ensure safety on side-effect on drop-initiated TextEvent.');
+
+function toStringLiteral(str)
+{
+   return "'" + str + "'";
+}
+
+var testSourceRoot = document.createElement("div");
+document.body.appendChild(testSourceRoot);
+
+var testTargetRoot = document.createElement("div");
+testTargetRoot.innerHTML += "<div><span id='targetEditable' contentEditable>initialValue</span></div>";
+testTargetRoot.innerHTML += "<iframe id='targetIFrame' src='data:text/html;charset=utf-8," + encodeURI("<html></html>") + "'></iframe>";
+document.body.appendChild(testTargetRoot);
+
+testTargetEditable = document.getElementById("targetEditable");
+testTargetIFrame = document.getElementById("targetIFrame");
+testTargetIFrameDocument = testTargetIFrame.contentDocument;
+testTargetIFrameDocument.body.innerHTML = "initialBody";
+testTargetIFrameDocument.designMode = "on";
+
+function handlerRemovingTarget(event)
+{
+    event.target.parentNode.removeChild(event.target);
+}
+
+function handlerRemovingIFrame(event)
+{
+    testTargetIFrame.parentNode.removeChild(testTargetIFrame);
+}
+
+function dragFrom(element)
+{
+    var x = element.offsetLeft + element.offsetWidth / 2;
+    var y = element.offsetTop + element.offsetHeight / 2;
+    eventSender.mouseMoveTo(x, y);
+    eventSender.mouseDown();
+
+    // Makes drag happen
+    var meaninglessDelta = 10; 
+    eventSender.leapForward(500);
+    eventSender.mouseMoveTo(x + meaninglessDelta , y + meaninglessDelta);
+}
+
+function dropTo(element)
+{
+    var x = element.offsetLeft + element.offsetWidth / 2;
+    var y = element.offsetTop + element.offsetHeight / 2;
+    
+    eventSender.mouseMoveTo(x, y);
+    eventSender.mouseUp();
+}
+
+function dragPlainText()
+{
+    var selection = window.getSelection();
+
+    testSourceRoot.innerHTML = "<input type='text' value='PlainHello' id='src' />";
+    var input = document.getElementById("src");
+    input.focus();
+    selection.modify("extend", "forward", "line");
+    dragFrom(input);
+}
+
+function dropToTargetEditable()
+{
+    dropTo(testTargetEditable);
+}
+
+function dropToTargetIFrame()
+{
+    dropTo(testTargetIFrame);
+}
+
+testTargetEditable.addEventListener("textInput", handlerRemovingTarget);
+dragPlainText();
+dropToTargetEditable();
+// detached node shouldn't get dropped value
+shouldBe("testTargetEditable.innerHTML", toStringLiteral("initialValue"));
+
+testTargetIFrameDocument.body.addEventListener("textInput", handlerRemovingIFrame);
+dragPlainText();
+dropToTargetIFrame();
+// detached frame shouldn't get dropped value
+shouldBe("testTargetIFrameDocument.body.innerHTML", toStringLiteral("initialBody"));
+
+// Hides dataset to make dump clean.
+testTargetRoot.style.display = "none";
+testSourceRoot.style.display = "none";
+
+var successfullyParsed = true;
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/editing/pasteboard/script-tests/drop-text-events-sideeffect.js b/LayoutTests/editing/pasteboard/script-tests/drop-text-events-sideeffect.js
deleted file mode 100644 (file)
index d94ac76..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-description('Ensure safety on side-effect on drop-initiated TextEvent.');
-
-function toStringLiteral(str)
-{
-   return "'" + str + "'";
-}
-
-var testSourceRoot = document.createElement("div");
-document.body.appendChild(testSourceRoot);
-
-var testTargetRoot = document.createElement("div");
-testTargetRoot.innerHTML += "<div><span id='targetEditable' contentEditable>initialValue</span></div>";
-testTargetRoot.innerHTML += "<iframe id='targetIFrame' src='data:text/html;charset=utf-8," + encodeURI("<html></html>") + "'></iframe>";
-document.body.appendChild(testTargetRoot);
-
-testTargetEditable = document.getElementById("targetEditable");
-testTargetIFrame = document.getElementById("targetIFrame");
-testTargetIFrameDocument = testTargetIFrame.contentDocument;
-testTargetIFrameDocument.body.innerHTML = "initialBody";
-testTargetIFrameDocument.designMode = "on";
-
-function handlerRemovingTarget(event)
-{
-    event.target.parentNode.removeChild(event.target);
-}
-
-function handlerRemovingIFrame(event)
-{
-    testTargetIFrame.parentNode.removeChild(testTargetIFrame);
-}
-
-function dragFrom(element)
-{
-    var x = element.offsetLeft + element.offsetWidth / 2;
-    var y = element.offsetTop + element.offsetHeight / 2;
-    eventSender.mouseMoveTo(x, y);
-    eventSender.mouseDown();
-
-    // Makes drag happen
-    var meaninglessDelta = 10; 
-    eventSender.leapForward(500);
-    eventSender.mouseMoveTo(x + meaninglessDelta , y + meaninglessDelta);
-}
-
-function dropTo(element)
-{
-    var x = element.offsetLeft + element.offsetWidth / 2;
-    var y = element.offsetTop + element.offsetHeight / 2;
-    
-    eventSender.mouseMoveTo(x, y);
-    eventSender.mouseUp();
-}
-
-function dragPlainText()
-{
-    var selection = window.getSelection();
-
-    testSourceRoot.innerHTML = "<input type='text' value='PlainHello' id='src' />";
-    var input = document.getElementById("src");
-    input.focus();
-    selection.modify("extend", "forward", "line");
-    dragFrom(input);
-}
-
-function dropToTargetEditable()
-{
-    dropTo(testTargetEditable);
-}
-
-function dropToTargetIFrame()
-{
-    dropTo(testTargetIFrame);
-}
-
-testTargetEditable.addEventListener("textInput", handlerRemovingTarget);
-dragPlainText();
-dropToTargetEditable();
-// detached node shouldn't get dropped value
-shouldBe("testTargetEditable.innerHTML", toStringLiteral("initialValue"));
-
-testTargetIFrameDocument.body.addEventListener("textInput", handlerRemovingIFrame);
-dragPlainText();
-dropToTargetIFrame();
-// detached frame shouldn't get dropped value
-shouldBe("testTargetIFrameDocument.body.innerHTML", toStringLiteral("initialBody"));
-
-// Hides dataset to make dump clean.
-testTargetRoot.style.display = "none";
-testSourceRoot.style.display = "none";
-
-var successfullyParsed = true;
index b9010b3..7c6ae07 100644 (file)
@@ -3,8 +3,31 @@
 <head></head>
 <body>
 <canvas id="mycanvas" width="300" height="300"></canvas>
-<script src="script-tests/js-ellipse-implementation.js"></script>
 <script>
+function rad2deg(x) {
+    return x * 180 / Math.PI;
+}
+
+function ellipseUsingArc(context, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)
+{
+    var transform = new WebKitCSSMatrix();
+    transform = transform.translate(x, y);
+    transform = transform.rotate(rad2deg(rotation));
+    transform = transform.scale(radiusX, radiusY);
+
+    /*
+    Use WebKitCSSMatrix instead of as follows, because using WebKitCSSMatrix computes float values more precisely.
+    It is because we don't want to fail pixel comparison due to float precision.
+      context.translate(x, y);
+      context.rotate(rotation);
+      context.scale(radiusX, radiusY);
+    */
+    context.save();
+    context.transform(transform.a, transform.b, transform.c, transform.d, transform.e, transform.f);
+    context.arc(0, 0, 1, startAngle, endAngle, anticlockwise);
+    context.restore();
+}
+
 var canvas = document.getElementById('mycanvas');
 var ctx = canvas.getContext('2d');
 
diff --git a/LayoutTests/fast/canvas/script-tests/js-ellipse-implementation.js b/LayoutTests/fast/canvas/script-tests/js-ellipse-implementation.js
deleted file mode 100644 (file)
index 7e34c35..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-function rad2deg(x) {
-    return x * 180 / Math.PI;
-}
-
-function ellipseUsingArc(context, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)
-{
-    var transform = new WebKitCSSMatrix();
-    transform = transform.translate(x, y);
-    transform = transform.rotate(rad2deg(rotation));
-    transform = transform.scale(radiusX, radiusY);
-
-    /*
-    Use WebKitCSSMatrix instead of as follows, because using WebKitCSSMatrix computes float values more precisely.
-    It is because we don't want to fail pixel comparison due to float precision.
-      context.translate(x, y);
-      context.rotate(rotation);
-      context.scale(radiusX, radiusY);
-    */
-    context.save();
-    context.transform(transform.a, transform.b, transform.c, transform.d, transform.e, transform.f);
-    context.arc(0, 0, 1, startAngle, endAngle, anticlockwise);
-    context.restore();
-}
-
index 4ef45f8..f58463d 100644 (file)
@@ -4,7 +4,357 @@
 <script src="../../../resources/js-test-pre.js"></script>
 </head>
 <body>
-<script src="script-tests/class-list.js"></script>
+<script>
+description('Tests the classList attribute and its properties.');
+
+var element;
+
+function createElement(className)
+{
+    element = document.createElement('p');
+    element.className = className;
+}
+
+debug('Tests from http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/setting/001.htm
+createElement('x');
+element.classList = 'y';
+shouldBeEqualToString('String(element.classList)', 'y');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/001.htm
+createElement('');
+shouldEvaluateTo('element.classList.length', 0);
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/002.htm
+createElement('x');
+shouldEvaluateTo('element.classList.length', 1);
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/003.htm
+createElement('x x');
+shouldEvaluateTo('element.classList.length', 1);
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/004.htm
+createElement('x y');
+shouldEvaluateTo('element.classList.length', 2);
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/005.htm
+createElement('');
+element.classList.add('x');
+shouldBeEqualToString('element.className', 'x');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/006.htm
+createElement('x');
+element.classList.add('x');
+shouldBeEqualToString('element.className', 'x');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/007.htm
+createElement('x  x');
+element.classList.add('x');
+shouldBeEqualToString('element.className', 'x');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/008.htm
+createElement('y');
+element.classList.add('x');
+shouldBeEqualToString('element.className', 'y x');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/009.htm
+createElement('');
+element.classList.remove('x');
+shouldBeEqualToString('element.className', '');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/010.htm
+createElement('x');
+element.classList.remove('x');
+shouldBeEqualToString('element.className', '');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/011.htm
+createElement(' y x  y ');
+element.classList.remove('x');
+shouldBeEqualToString('element.className', 'y');
+
+// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/012.htm
+createElement(' x y  x ');
+element.classList.remove('x');
+shouldBeEqualToString('element.className', 'y');
+
+
+debug('Ensure that we can handle empty class name correctly');
+element = document.createElement('span');
+shouldBeTrue("element.classList.toggle('x')");
+shouldBeEqualToString('element.className', 'x');
+shouldBeFalse("element.classList.toggle('x')");
+shouldBeEqualToString('element.className', '');
+
+element = document.createElement('span');
+shouldBeFalse('element.classList.contains(\'x\')');
+shouldBeUndefined('element.classList[1]');
+element.classList.remove('x');
+element.classList.add('x')
+
+
+debug('Test toggle with force argument')
+
+createElement('');
+shouldBeTrue("element.classList.toggle('x', true)");
+shouldBeEqualToString('element.className', 'x');
+shouldBeTrue("element.classList.toggle('x', true)");
+shouldBeEqualToString('element.className', 'x');
+shouldBeFalse("element.classList.toggle('x', false)");
+shouldBeEqualToString('element.className', '');
+shouldBeFalse("element.classList.toggle('x', false)");
+shouldBeEqualToString('element.className', '');
+
+shouldThrowDOMException(function() {
+    element.classList.toggle('', true);
+}, DOMException.SYNTAX_ERR);
+
+shouldThrowDOMException(function() {
+    element.classList.toggle('x y', false);
+}, DOMException.INVALID_CHARACTER_ERR);
+
+
+debug('Testing add in presence of trailing white spaces.');
+
+createElement('x ');
+element.classList.add('y');
+shouldBeEqualToString('element.className', 'x y');
+
+createElement('x\t');
+element.classList.add('y');
+shouldBeEqualToString('element.className', 'x y');
+
+createElement(' ');
+element.classList.add('y');
+shouldBeEqualToString('element.className', 'y');
+
+
+debug('Test invalid tokens');
+
+// Testing exception due to invalid token
+
+// shouldThrow from js-test-pre.js is not sufficient.
+function shouldThrowDOMException(f, ec)
+{
+    try {
+        f();
+        testFailed('Expected an exception');
+    } catch (ex) {
+        if (!(ex instanceof DOMException)) {
+            testFailed('Exception is not an instance of DOMException, found: ' +
+                       Object.toString.call(ex));
+            return;
+        }
+        if (ec !== ex.code) {
+            testFailed('Wrong exception code: ' + ex.code);
+            return;
+        }
+    }
+    var formattedFunction = String(f).replace(/^function.+\{\s*/m, '').
+        replace(/;?\s+\}/m, '');
+    testPassed(formattedFunction + ' threw expected DOMException with code ' + ec);
+}
+
+createElement('x');
+shouldBeFalse("element.classList.contains('')");
+
+createElement('x y');
+shouldBeFalse("element.classList.contains('x y')");
+
+createElement('');
+shouldThrowDOMException(function() {
+    element.classList.add('');
+}, DOMException.SYNTAX_ERR);
+
+createElement('');
+shouldThrowDOMException(function() {
+    element.classList.add('x y');
+}, DOMException.INVALID_CHARACTER_ERR);
+
+createElement('');
+shouldThrowDOMException(function() {
+    element.classList.remove('');
+}, DOMException.SYNTAX_ERR);
+
+createElement('');
+shouldThrowDOMException(function() {
+    element.classList.remove('x y');
+}, DOMException.INVALID_CHARACTER_ERR);
+
+
+
+createElement('');
+shouldThrowDOMException(function() {
+    element.classList.toggle('');
+}, DOMException.SYNTAX_ERR);
+
+createElement('x y');
+shouldThrowDOMException(function() {
+    element.classList.toggle('x y');
+}, DOMException.INVALID_CHARACTER_ERR);
+
+createElement('');
+shouldThrow("element.classList.toggle()");
+
+debug('Indexing');
+
+createElement('x');
+shouldBeEqualToString('element.classList[0]', 'x');
+shouldBeEqualToString('element.classList.item(0)', 'x');
+
+createElement('x x');
+shouldBeUndefined('element.classList[1]');
+shouldBeNull('element.classList.item(1)');
+
+createElement('x y');
+shouldBeEqualToString('element.classList[1]', 'y');
+shouldBeEqualToString('element.classList.item(1)', 'y');
+
+createElement('');
+shouldBeUndefined('element.classList[0]');
+shouldBeNull('element.classList.item(0)');
+
+createElement('x y z');
+shouldBeUndefined('element.classList[4]');
+shouldBeNull('element.classList.item(4)');
+shouldBeUndefined('element.classList[-1]');  // Not a valid index so should not trigger item().
+shouldBeNull('element.classList.item(-1)');
+shouldThrow('element.classList.item()');
+
+debug('Test case since DOMTokenList is case sensitive');
+
+createElement('x');
+shouldBeTrue('element.classList.contains(\'x\')');
+shouldBeFalse('element.classList.contains(\'X\')');
+shouldBeEqualToString('element.classList[0]', 'x');
+shouldThrow('element.classList.contains()');
+
+createElement('X');
+shouldBeTrue('element.classList.contains(\'X\')');
+shouldBeFalse('element.classList.contains(\'x\')');
+shouldBeEqualToString('element.classList[0]', 'X');
+
+
+debug('Testing whitespace');
+// U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), U+000A LINE FEED (LF),
+// U+000C FORM FEED (FF), and U+000D CARRIAGE RETURN (CR)
+
+createElement('x\u0020y');
+shouldEvaluateTo('element.classList.length', 2);
+
+createElement('x\u0009y');
+shouldEvaluateTo('element.classList.length', 2);
+
+createElement('x\u000Ay');
+shouldEvaluateTo('element.classList.length', 2);
+
+createElement('x\u000Cy');
+shouldEvaluateTo('element.classList.length', 2);
+
+createElement('x\u000Dy');
+shouldEvaluateTo('element.classList.length', 2);
+
+
+debug('DOMTokenList presence and type');
+
+
+// Safari returns object
+// Firefox returns object
+// IE8 returns object
+// Chrome returns function
+// assertEquals('object', typeof DOMTokenList);
+shouldBeTrue('\'undefined\' != typeof DOMTokenList');
+
+shouldBeEqualToString('typeof DOMTokenList.prototype', 'object');
+
+createElement('x');
+shouldBeEqualToString('typeof element.classList', 'object');
+
+shouldEvaluateTo('element.classList.constructor', 'DOMTokenList');
+
+shouldBeTrue('element.classList === element.classList');
+
+// Bug 93628
+document.body.classList.add('FAIL');
+shouldBeTrue('document.body.classList.contains("FAIL")');
+document.body.classList.remove('FAIL');
+shouldBeEqualToString('document.body.className', '');
+
+// Variadic
+
+debug('Variadic calls');
+
+createElement('');
+element.classList.add('a', 'b');
+shouldBeEqualToString('element.className', 'a b');
+
+element.classList.add('a', 'b', 'c');
+shouldBeEqualToString('element.className', 'a b c');
+
+element.classList.add(null, {toString: function() { return 'd' }}, undefined, 0, false);
+shouldBeEqualToString('element.className', 'a b c null d undefined 0 false');
+
+createElement('');
+element.classList.add('a', 'b', 'a');
+shouldBeEqualToString('element.className', 'a b');
+
+createElement('');
+shouldThrowDOMException(function() {
+    element.classList.add('a', 'b', '');
+}, DOMException.SYNTAX_ERR);
+shouldBeEqualToString('element.className', '');
+
+shouldThrowDOMException(function() {
+    element.classList.add('a', 'b', 'c d');
+}, DOMException.INVALID_CHARACTER_ERR);
+shouldBeEqualToString('element.className', '');
+
+shouldThrow('element.classList.add("a", {toString: function() { throw new Error("user error"); }}, "b")', '"Error: user error"');
+shouldBeEqualToString('element.className', '');
+
+createElement('');
+shouldNotThrow('element.classList.add()');
+
+createElement('');
+var observer = new WebKitMutationObserver(function() {});
+observer.observe(element, {attributes: true});
+element.classList.add('a', 'c');
+shouldBe('observer.takeRecords().length', '1');
+
+
+createElement('a b c d  ');
+element.classList.remove('a', 'c');
+shouldBeEqualToString('element.className', 'b d');
+
+element.classList.remove('b', 'b');
+shouldBeEqualToString('element.className', 'd');
+
+createElement('a b c null d undefined 0 false');
+element.classList.remove(null, {toString: function() { return 'd' }}, undefined, 0, false);
+shouldBeEqualToString('element.className', 'a b c');
+
+createElement('a b');
+shouldThrowDOMException(function() {
+    element.classList.remove('a', 'b', '');
+}, DOMException.SYNTAX_ERR);
+shouldBeEqualToString('element.className', 'a b');
+
+shouldThrow('element.classList.remove("a", {toString: function() { throw new Error("user error"); }}, "b")', '"Error: user error"');
+shouldBeEqualToString('element.className', 'a b');
+
+shouldThrowDOMException(function() {
+    element.classList.remove('a', 'b', 'c d');
+}, DOMException.INVALID_CHARACTER_ERR);
+shouldBeEqualToString('element.className', 'a b');
+
+shouldNotThrow('element.classList.remove()');
+
+createElement('a b c');
+observer = new WebKitMutationObserver(function() {});
+observer.observe(element, {attributes: true});
+element.classList.remove('a', 'c');
+shouldBe('observer.takeRecords().length', '1');
+</script>
 <script src="../../../resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/fast/dom/HTMLElement/script-tests/class-list.js b/LayoutTests/fast/dom/HTMLElement/script-tests/class-list.js
deleted file mode 100644 (file)
index 5363fd3..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-description('Tests the classList attribute and its properties.');
-
-var element;
-
-function createElement(className)
-{
-    element = document.createElement('p');
-    element.className = className;
-}
-
-debug('Tests from http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/setting/001.htm
-createElement('x');
-element.classList = 'y';
-shouldBeEqualToString('String(element.classList)', 'y');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/001.htm
-createElement('');
-shouldEvaluateTo('element.classList.length', 0);
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/002.htm
-createElement('x');
-shouldEvaluateTo('element.classList.length', 1);
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/003.htm
-createElement('x x');
-shouldEvaluateTo('element.classList.length', 1);
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/004.htm
-createElement('x y');
-shouldEvaluateTo('element.classList.length', 2);
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/005.htm
-createElement('');
-element.classList.add('x');
-shouldBeEqualToString('element.className', 'x');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/006.htm
-createElement('x');
-element.classList.add('x');
-shouldBeEqualToString('element.className', 'x');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/007.htm
-createElement('x  x');
-element.classList.add('x');
-shouldBeEqualToString('element.className', 'x');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/008.htm
-createElement('y');
-element.classList.add('x');
-shouldBeEqualToString('element.className', 'y x');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/009.htm
-createElement('');
-element.classList.remove('x');
-shouldBeEqualToString('element.className', '');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/010.htm
-createElement('x');
-element.classList.remove('x');
-shouldBeEqualToString('element.className', '');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/011.htm
-createElement(' y x  y ');
-element.classList.remove('x');
-shouldBeEqualToString('element.className', 'y');
-
-// http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/getting/012.htm
-createElement(' x y  x ');
-element.classList.remove('x');
-shouldBeEqualToString('element.className', 'y');
-
-
-debug('Ensure that we can handle empty class name correctly');
-element = document.createElement('span');
-shouldBeTrue("element.classList.toggle('x')");
-shouldBeEqualToString('element.className', 'x');
-shouldBeFalse("element.classList.toggle('x')");
-shouldBeEqualToString('element.className', '');
-
-element = document.createElement('span');
-shouldBeFalse('element.classList.contains(\'x\')');
-shouldBeUndefined('element.classList[1]');
-element.classList.remove('x');
-element.classList.add('x')
-
-
-debug('Test toggle with force argument')
-
-createElement('');
-shouldBeTrue("element.classList.toggle('x', true)");
-shouldBeEqualToString('element.className', 'x');
-shouldBeTrue("element.classList.toggle('x', true)");
-shouldBeEqualToString('element.className', 'x');
-shouldBeFalse("element.classList.toggle('x', false)");
-shouldBeEqualToString('element.className', '');
-shouldBeFalse("element.classList.toggle('x', false)");
-shouldBeEqualToString('element.className', '');
-
-shouldThrowDOMException(function() {
-    element.classList.toggle('', true);
-}, DOMException.SYNTAX_ERR);
-
-shouldThrowDOMException(function() {
-    element.classList.toggle('x y', false);
-}, DOMException.INVALID_CHARACTER_ERR);
-
-
-debug('Testing add in presence of trailing white spaces.');
-
-createElement('x ');
-element.classList.add('y');
-shouldBeEqualToString('element.className', 'x y');
-
-createElement('x\t');
-element.classList.add('y');
-shouldBeEqualToString('element.className', 'x y');
-
-createElement(' ');
-element.classList.add('y');
-shouldBeEqualToString('element.className', 'y');
-
-
-debug('Test invalid tokens');
-
-// Testing exception due to invalid token
-
-// shouldThrow from js-test-pre.js is not sufficient.
-function shouldThrowDOMException(f, ec)
-{
-    try {
-        f();
-        testFailed('Expected an exception');
-    } catch (ex) {
-        if (!(ex instanceof DOMException)) {
-            testFailed('Exception is not an instance of DOMException, found: ' +
-                       Object.toString.call(ex));
-            return;
-        }
-        if (ec !== ex.code) {
-            testFailed('Wrong exception code: ' + ex.code);
-            return;
-        }
-    }
-    var formattedFunction = String(f).replace(/^function.+\{\s*/m, '').
-        replace(/;?\s+\}/m, '');
-    testPassed(formattedFunction + ' threw expected DOMException with code ' + ec);
-}
-
-createElement('x');
-shouldBeFalse("element.classList.contains('')");
-
-createElement('x y');
-shouldBeFalse("element.classList.contains('x y')");
-
-createElement('');
-shouldThrowDOMException(function() {
-    element.classList.add('');
-}, DOMException.SYNTAX_ERR);
-
-createElement('');
-shouldThrowDOMException(function() {
-    element.classList.add('x y');
-}, DOMException.INVALID_CHARACTER_ERR);
-
-createElement('');
-shouldThrowDOMException(function() {
-    element.classList.remove('');
-}, DOMException.SYNTAX_ERR);
-
-createElement('');
-shouldThrowDOMException(function() {
-    element.classList.remove('x y');
-}, DOMException.INVALID_CHARACTER_ERR);
-
-
-
-createElement('');
-shouldThrowDOMException(function() {
-    element.classList.toggle('');
-}, DOMException.SYNTAX_ERR);
-
-createElement('x y');
-shouldThrowDOMException(function() {
-    element.classList.toggle('x y');
-}, DOMException.INVALID_CHARACTER_ERR);
-
-createElement('');
-shouldThrow("element.classList.toggle()");
-
-debug('Indexing');
-
-createElement('x');
-shouldBeEqualToString('element.classList[0]', 'x');
-shouldBeEqualToString('element.classList.item(0)', 'x');
-
-createElement('x x');
-shouldBeUndefined('element.classList[1]');
-shouldBeNull('element.classList.item(1)');
-
-createElement('x y');
-shouldBeEqualToString('element.classList[1]', 'y');
-shouldBeEqualToString('element.classList.item(1)', 'y');
-
-createElement('');
-shouldBeUndefined('element.classList[0]');
-shouldBeNull('element.classList.item(0)');
-
-createElement('x y z');
-shouldBeUndefined('element.classList[4]');
-shouldBeNull('element.classList.item(4)');
-shouldBeUndefined('element.classList[-1]');  // Not a valid index so should not trigger item().
-shouldBeNull('element.classList.item(-1)');
-shouldThrow('element.classList.item()');
-
-debug('Test case since DOMTokenList is case sensitive');
-
-createElement('x');
-shouldBeTrue('element.classList.contains(\'x\')');
-shouldBeFalse('element.classList.contains(\'X\')');
-shouldBeEqualToString('element.classList[0]', 'x');
-shouldThrow('element.classList.contains()');
-
-createElement('X');
-shouldBeTrue('element.classList.contains(\'X\')');
-shouldBeFalse('element.classList.contains(\'x\')');
-shouldBeEqualToString('element.classList[0]', 'X');
-
-
-debug('Testing whitespace');
-// U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), U+000A LINE FEED (LF),
-// U+000C FORM FEED (FF), and U+000D CARRIAGE RETURN (CR)
-
-createElement('x\u0020y');
-shouldEvaluateTo('element.classList.length', 2);
-
-createElement('x\u0009y');
-shouldEvaluateTo('element.classList.length', 2);
-
-createElement('x\u000Ay');
-shouldEvaluateTo('element.classList.length', 2);
-
-createElement('x\u000Cy');
-shouldEvaluateTo('element.classList.length', 2);
-
-createElement('x\u000Dy');
-shouldEvaluateTo('element.classList.length', 2);
-
-
-debug('DOMTokenList presence and type');
-
-
-// Safari returns object
-// Firefox returns object
-// IE8 returns object
-// Chrome returns function
-// assertEquals('object', typeof DOMTokenList);
-shouldBeTrue('\'undefined\' != typeof DOMTokenList');
-
-shouldBeEqualToString('typeof DOMTokenList.prototype', 'object');
-
-createElement('x');
-shouldBeEqualToString('typeof element.classList', 'object');
-
-shouldEvaluateTo('element.classList.constructor', 'DOMTokenList');
-
-shouldBeTrue('element.classList === element.classList');
-
-// Bug 93628
-document.body.classList.add('FAIL');
-shouldBeTrue('document.body.classList.contains("FAIL")');
-document.body.classList.remove('FAIL');
-shouldBeEqualToString('document.body.className', '');
-
-// Variadic
-
-debug('Variadic calls');
-
-createElement('');
-element.classList.add('a', 'b');
-shouldBeEqualToString('element.className', 'a b');
-
-element.classList.add('a', 'b', 'c');
-shouldBeEqualToString('element.className', 'a b c');
-
-element.classList.add(null, {toString: function() { return 'd' }}, undefined, 0, false);
-shouldBeEqualToString('element.className', 'a b c null d undefined 0 false');
-
-createElement('');
-element.classList.add('a', 'b', 'a');
-shouldBeEqualToString('element.className', 'a b');
-
-createElement('');
-shouldThrowDOMException(function() {
-    element.classList.add('a', 'b', '');
-}, DOMException.SYNTAX_ERR);
-shouldBeEqualToString('element.className', '');
-
-shouldThrowDOMException(function() {
-    element.classList.add('a', 'b', 'c d');
-}, DOMException.INVALID_CHARACTER_ERR);
-shouldBeEqualToString('element.className', '');
-
-shouldThrow('element.classList.add("a", {toString: function() { throw new Error("user error"); }}, "b")', '"Error: user error"');
-shouldBeEqualToString('element.className', '');
-
-createElement('');
-shouldNotThrow('element.classList.add()');
-
-createElement('');
-var observer = new WebKitMutationObserver(function() {});
-observer.observe(element, {attributes: true});
-element.classList.add('a', 'c');
-shouldBe('observer.takeRecords().length', '1');
-
-
-createElement('a b c d  ');
-element.classList.remove('a', 'c');
-shouldBeEqualToString('element.className', 'b d');
-
-element.classList.remove('b', 'b');
-shouldBeEqualToString('element.className', 'd');
-
-createElement('a b c null d undefined 0 false');
-element.classList.remove(null, {toString: function() { return 'd' }}, undefined, 0, false);
-shouldBeEqualToString('element.className', 'a b c');
-
-createElement('a b');
-shouldThrowDOMException(function() {
-    element.classList.remove('a', 'b', '');
-}, DOMException.SYNTAX_ERR);
-shouldBeEqualToString('element.className', 'a b');
-
-shouldThrow('element.classList.remove("a", {toString: function() { throw new Error("user error"); }}, "b")', '"Error: user error"');
-shouldBeEqualToString('element.className', 'a b');
-
-shouldThrowDOMException(function() {
-    element.classList.remove('a', 'b', 'c d');
-}, DOMException.INVALID_CHARACTER_ERR);
-shouldBeEqualToString('element.className', 'a b');
-
-shouldNotThrow('element.classList.remove()');
-
-createElement('a b c');
-observer = new WebKitMutationObserver(function() {});
-observer.observe(element, {attributes: true});
-element.classList.remove('a', 'c');
-shouldBe('observer.takeRecords().length', '1');
diff --git a/LayoutTests/fast/dom/Window/script-tests/postmessage-clone-deep-array.js b/LayoutTests/fast/dom/Window/script-tests/postmessage-clone-deep-array.js
deleted file mode 100644 (file)
index ad1ead9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-document.getElementById("description").innerHTML = "Tests that we support cloning deep(ish) arrays.";
-deepArray=[];
-for (var i = 0; i < 10000; i++)
-    deepArray=[deepArray];
-tryPostMessage('deepArray');
-tryPostMessage('"done"');
diff --git a/LayoutTests/fast/dom/Window/script-tests/postmessage-clone-really-deep-array.js b/LayoutTests/fast/dom/Window/script-tests/postmessage-clone-really-deep-array.js
deleted file mode 100644 (file)
index 8fb6096..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-document.getElementById("description").innerHTML = "Tests that we abort cloning overdeep arrays.";
-reallyDeepArray=[];
-for (var i = 0; i < 100000; i++)
-    reallyDeepArray=[reallyDeepArray];
-tryPostMessage('reallyDeepArray', true, null, DOMException.DATA_CLONE_ERR);
-tryPostMessage('"done"');
diff --git a/LayoutTests/fast/dom/Window/script-tests/postmessage-clone.js b/LayoutTests/fast/dom/Window/script-tests/postmessage-clone.js
deleted file mode 100644 (file)
index 24e9753..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-document.getElementById("description").innerHTML = "Tests that we clone object hierarchies";
-
-tryPostMessage('null');
-tryPostMessage('undefined');
-tryPostMessage('1');
-tryPostMessage('true');
-tryPostMessage('"1"');
-tryPostMessage('({})');
-tryPostMessage('({a:1})');
-tryPostMessage('({a:"a"})');
-tryPostMessage('({b:"a", a:"b"})');
-tryPostMessage('({p0:"string0", p1:"string1", p2:"string2", p3:"string3", p4:"string4", p5:"string5", p6:"string6", p7:"string7", p8:"string8", p9:"string9", p10:"string10", p11:"string11", p12:"string12", p13:"string13", p14:"string14", p15:"string15", p16:"string16", p17:"string17", p18:"string18", p19:"string19"})');
-tryPostMessage('({p0:"string1", p1:"string1", p2:"string2", p3:"string3", p4:"string4", p5:"string5", p6:"string6", p7:"string7", p8:"string8", p9:"string9", p10:"string10", p11:"string11", p12:"string12", p13:"string13", p14:"string14", p15:"string15", p16:"string16", p17:"string17", p18:"string18", p19:"string19"})');
-tryPostMessage('({a:""})');
-tryPostMessage('({a:0})');
-tryPostMessage('({a:1})');
-tryPostMessage('[]');
-tryPostMessage('["a", "a", "b", "a", "b"]');
-tryPostMessage('["a", "a", "b", {a:"b", b:"a"}]');
-tryPostMessage('[1,2,3]');
-tryPostMessage('[,,1]');
-tryPostMessage('(function(){})', true, null, DOMException.DATA_CLONE_ERR);
-tryPostMessage('var x = 0; try { eval("badref"); } catch(e) { x = e; } x', true, null, DOMException.DATA_CLONE_ERR);
-tryPostMessage('new Date(1234567890000)');
-tryPostMessage('new ConstructorWithPrototype("foo")', false, '({field:"foo"})');
-tryPostMessage('new Boolean(true)');
-tryPostMessage('new Boolean(false)');
-tryPostMessage('new String("gnirts")');
-tryPostMessage('new Number(42.0)');
-cyclicObject={};
-cyclicObject.self = cyclicObject;
-tryPostMessage('cyclicObject', false, "cyclicObject");
-cyclicArray=[];
-cyclicArray[0] = cyclicArray;
-tryPostMessage('cyclicArray', false, "cyclicArray");
-objectGraph = {};
-object = {};
-objectGraph.graph1 = object;
-objectGraph.graph2 = object;
-tryPostMessage('objectGraph', false, "objectGraph");
-arrayGraph = [object, object];
-tryPostMessage('arrayGraph', false, "arrayGraph");
-tryPostMessage('window', true);
-tryPostMessage('({get a() { throw "x" }})', true);
-
-var map = new Map;
-var set = new Set;
-map.expando1 = {};
-map.expando2 = {};
-map.aSet = set;
-map.set(1, 2.5)
-map.set("entry", map.expando1);
-map.set(true, set);
-map.set(map.expando2, map);
-set.add(false)
-set.add(map)
-tryPostMessage("map", false, "evalThunk", function (v) {
-    newMap = v
-    doPassFail(newMap.get("entry") === newMap.expando1, "String keyed entry was cloned correctly");
-    doPassFail(newMap.get(newMap.expando2) === newMap, "Object key entry was cloned correctly");
-    shouldBe("newMap.get(true)", "newMap.aSet")
-    shouldBe("newMap.aSet.has(newMap)", "true")
-    newMap.forEach(function (value, key) { 
-        console.innerHTML += "LOG: " + value + " => " + key + "<br>"
-    })
-})
-
-if (window.eventSender) {
-    var fileInput = document.getElementById("fileInput");
-    var fileRect = fileInput.getClientRects()[0];
-    var targetX = fileRect.left + fileRect.width / 2;
-    var targetY = fileRect.top + fileRect.height / 2;
-    eventSender.beginDragWithFiles(['resources/file1.txt', 'resources/file2.txt']);
-    eventSender.mouseMoveTo(targetX, targetY);
-    eventSender.mouseUp();
-}
-var imageData = document.createElement("canvas").getContext("2d").createImageData(10,10);
-for (var i = 0; i < imageData.data.length * 4; i++)
-    imageData.data[i] = i % 256;
-var mutatedImageData = document.createElement("canvas").getContext("2d").createImageData(10,10);
-for (var i = 0; i < imageData.data.length * 4; i++)
-    mutatedImageData.data[i] = i % 256;
-tryPostMessage('imageData', false, imageData);
-tryPostMessage('imageData.data', false, imageData.data)
-tryPostMessage('mutatedImageData', false, imageData);
-tryPostMessage('mutatedImageData.data', false, imageData.data)
-for (var i = 0; i < imageData.data.length * 4; i++)
-    mutatedImageData.data[i] = 0;
-
-function thunk(s) {
-    return "(function() {" + s + "})()";
-}
-tryPostMessage(thunk('return 42;'), false, '42');
-tryPostMessage(thunk('return 42;'), false, thunk('return 40 + 2;'));
-tryPostMessage(thunk('return 42;'), false, "evalThunk",
-               function(v) { doPassFail(v == 42, "evalThunk OK"); })
-
-// Only enumerable properties should be serialized.
-tryPostMessage(thunk('var o = {x:"hello"}; Object.defineProperty(o, "y", {value:"goodbye"}); return o;'), false, '({x:"hello"})');
-
-// It's unclear what we should do if an accessor modifies an object out from under us
-// while we're serializing it; the standard does mandate certain aspects about evaluation
-// order, though, including that properties must be processed in their enumeration order.
-tryPostMessage(thunk(
-        'var a = [0, 1, 2]; ' +
-        'var b = { get x() { a[0] = 40; a[2] = 42; a.push(43); return 41; }}; ' +
-        'a[1] = b; ' +
-        'return a;'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.length === 3, "length correct"); // undefined
-        doPassFail(v[0] === 0, "evaluation order OK"); // mandatory
-        doPassFail(v[1].x === 41, "evaluation order OK/accessor reached"); // mandatory
-        doPassFail(v[2] === 42, "evaluation order OK"); // mandatory
-    });
-
-tryPostMessage(thunk(
-        'var a = [0, 1, 2]; ' +
-        'var b = { get x() { a.pop(); return 41; } }; ' +
-        'a[1] = b; ' +
-        'return a;'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.length === 3 || v.length === 2, "length correct"); // undefined
-        doPassFail(v[0] === 0, "index 0 OK"); // mandatory
-        doPassFail(v[1].x === 41, "accessor reached"); // mandatory
-        doPassFail(v[2] === undefined, "index 2 undefined"); // undefined
-    });
-
-tryPostMessage(thunk(
-        'var a = [0, 1, 2]; ' +
-        'var b = { get x() { a.pop(); return 41; } }; ' +
-        'a[2] = b; ' +
-        'return a;'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.length === 3, "length correct"); // undefined
-        doPassFail(v[0] === 0, "index 0 OK"); // mandatory
-        doPassFail(v[1] === 1, "index 1 OK"); // mandatory
-        doPassFail(v[2].x === 41, "index 2 OK"); // undefined
-    });
-
-// Now with objects! This is a little more tricky because the standard does not
-// define an enumeration order.
-tryPostMessage(thunk(
-        'var a = {p0: 0, p1: 1}; ' +
-        'Object.defineProperty(a, "p2", {get:function() {delete a.p3; return 42; }, enumerable: true, configurable: true}); ' +
-        'Object.defineProperty(a, "p3", {get:function() {delete a.p2; return 43; }, enumerable: true, configurable: true}); ' +
-        'Object.defineProperty(a, "p4", {get:function() { a.p5 = 45; return 44; }, enumerable: true, configurable: true}); ' +
-        'return a;'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.p0 === 0 && v.p1 === 1, "basic properties OK"); // mandatory
-        doPassFail(v.p2 === undefined && v.p3 !== undefined ||
-                   v.p2 !== undefined && v.p3 === undefined, "one accessor was run"); // mandatory
-        doPassFail(v.p2 !== undefined || Object.getOwnPropertyDescriptor(v, "p2") === undefined, "property was removed"); // undefined
-        doPassFail(v.p3 !== undefined || Object.getOwnPropertyDescriptor(v, "p3") === undefined, "property was removed"); // undefined
-        doPassFail(v.p4 === 44, "accessor was run"); // mandatory
-        doPassFail(Object.getOwnPropertyDescriptor(v, "p5") === undefined, "dynamic property not sent"); // undefined
-    });
-
-// Objects returned from accessors should still be coalesced.
-tryPostMessage(thunk(
-        'var obja = {get p() { return 42; }}; ' +
-        'var msg = {get a() { return obja; }, b: obja}; ' +
-        'return msg;'
-    ), false, "evalThunk", function(v) {
-        // Interestingly, the standard admits two answers here!
-        doPassFail(v.a === v.b, "reference equality preserved");
-        doPassFail((v.b.p === 42 && v.a.p === 42) ||
-            (v.b.p === null && v.a.p === null), "accessors used");
-    });
-tryPostMessage(thunk(
-        'var obja = {get p() { return 42; }}; ' +
-        'var msg = {a: obja, get b() { return obja; }}; ' +
-        'return msg;'
-    ), false, "evalThunk", function(v) {
-        // Interestingly, the standard admits two answers here!
-        doPassFail(v.a === v.b, "reference equality preserved (opposite order)");
-        doPassFail((v.b.p === 42 && v.a.p === 42) ||
-                   (v.b.p === null && v.a.p === null), "accessors used (opposite order)");
-    });
-// We should nullify the results from accessors more than one level deep,
-// but leave other fields untouched.
-tryPostMessage(thunk(
-        'var obja = {get p() { return 42; }, q: 43}; ' +
-        'return {get a() { return obja; }};'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.a.p === null, "accessor value was nullified");
-        doPassFail(v.a.q === 43, "non-accessor value was not nullified");
-    });
-tryPostMessage(thunk(
-        'var objb = {get r() { return 44; }, t: 45}; ' +
-        'var obja = {get p() { return 42; }, q: 43, s: objb}; ' +
-        'return {get a() { return obja; }};'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.a.p === null, "accessor value was nullified");
-        doPassFail(v.a.q === 43, "non-accessor value was not nullified");
-        doPassFail(v.s !== null, "non-accessor value was not nullified");
-        doPassFail(v.a.s.r === null, "accessor value was nullified");
-        doPassFail(v.a.s.t === 45, "non-accessor value was not nullified");
-    });
-tryPostMessage(thunk(
-        'var objb = {get r() { return 44; }, t: 45}; ' +
-        'var obja = {get p() { return 42; }, q: 43, s: [objb]}; ' +
-        'return {get c() { return 47; }, get a() { return obja; }, get b() { return 46; } };'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.b === 46, "accessor value was not nullified");
-        doPassFail(v.c === 47, "accessor value was not nullified");
-        doPassFail(v.a.p === null, "accessor value was nullified");
-        doPassFail(v.a.q === 43, "non-accessor value was not nullified");
-        doPassFail(v.a.s !== null, "non-accessor value was not nullified");
-        doPassFail(v.a.s !== undefined, "non-accessor value is defined");
-        doPassFail(v.a.s[0] !== null, "non-accessor value was not nullified");
-        doPassFail(v.a.s[0] !== undefined, "non-accessor value is defined");
-        doPassFail(v.a.s[0].r === null, "accessor value was nullified");
-        doPassFail(v.a.s[0].t === 45, "non-accessor value was not nullified");
-    });
-
-// We need to pass out the exception raised from internal accessors.
-tryPostMessage(thunk(
-        'return {get a() { throw "accessor-exn"; }};'
-    ), true, null, 'accessor-exn');
-// We should still return the exception raised from nulled-out accessors.
-tryPostMessage(thunk(
-        'var obja = {get p() { throw "accessor-exn"; }}; ' +
-        'return {get a() { return obja; }};'
-    ), true, null, 'accessor-exn');
-// We should run the first nullified accessor, but no more.
-tryPostMessage(thunk(
-        'window.bcalled = undefined; ' +
-        'window.acalled = undefined; ' +
-        'window.pcalled = undefined; ' +
-        'var objb = {get b() { window.bcalled = true; return 42; }}; ' +
-        'var obja = {get a() { window.acalled = true; return objb; }}; ' +
-        'return { get p() { window.pcalled = true; return obja; }};'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v.p.a === null, "accessor value was nullified");
-        doPassFail(window.pcalled === true, "window.pcalled === true");
-        doPassFail(window.acalled === true, "window.acalled === true");
-        doPassFail(window.bcalled === undefined, "window.bcalled === undefined");
-    });
-
-// Reference equality between Boolean objects must be maintained.
-tryPostMessage(thunk(
-        'var t1 = new Boolean(true); ' +
-        'var t2 = new Boolean(true); ' +
-        'var f1 = new Boolean(false); ' +
-        'var f2 = new Boolean(false); ' +
-        'return [t1, t1, t2, f1, f1, f2];'
-    ), false, "evalThunk", function(v) {
-        doPassFail(equal(v[0], new Boolean(true)), "Boolean values correct (0)");
-        doPassFail(equal(v[3], new Boolean(false)), "Boolean values correct (3)");
-        doPassFail(equal(v[1], v[2]), "Boolean values correct (1,2)");
-        doPassFail(equal(v[4], v[5]), "Boolean values correct (4,5)");
-        doPassFail(v[0] === v[1], "References to Booleans correct (0,1)");
-        doPassFail(v[3] === v[4], "References to Booleans correct (3,4)");
-        doPassFail(v[0] !== v[2], "References to Booleans correct (0,2)");
-        doPassFail(v[3] !== v[5], "References to Booleans correct (3,5)");
-    });
-
-// Reference equality between Number objects must be maintained.
-tryPostMessage(thunk(
-        'var n1 = new Number(42.0); ' +
-        'var n2 = new Number(42.0); ' +
-        'return [n1, n1, n2];'
-    ), false, "evalThunk", function(v) {
-        doPassFail(equal(v[0], new Number(42.0)), "Number values correct (0)");
-        doPassFail(equal(v[0], v[2]), "Number values correct (0,2)");
-        doPassFail(v[0] === v[1], "References to numbers correct (0,1)");
-        doPassFail(v[0] !== v[2], "References to numbers correct (0,2)");
-    });
-
-// Reference equality between String objects must be maintained.
-tryPostMessage(thunk(
-        'var s1 = new String("gnirts"); ' +
-        'var s2 = new String("gnirts"); ' +
-        'return [s1, s1, s2];'
-    ), false, "evalThunk", function(v) {
-        doPassFail(equal(v[0], new String("gnirts")), "String values correct (0)");
-        doPassFail(equal(v[0], v[2]), "String values correct (0,2)");
-        doPassFail(v[0] === v[1], "References to strings correct (0,1)");
-        doPassFail(v[0] !== v[2], "References to strings correct (0,2)");
-    });
-
-// Properties added to String, Boolean and Number objects should not be serialized.
-tryPostMessage(thunk(
-        'var s = new String("gnirts"); ' +
-        'var n = new Number(42.0); ' +
-        'var b = new Boolean(true); ' +
-        's.foo = 1; n.foo = 2; b.foo = 3; ' +
-        'return [s, n, b];'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v[0].foo == undefined, "String object properties not serialized");
-        doPassFail(v[1].foo == undefined, "Number object properties not serialized");
-        doPassFail(v[2].foo == undefined, "Boolean object properties not serialized");
-    });
-
-// Reference equality between dates must be maintained.
-tryPostMessage(thunk(
-        'var d1 = new Date(1,2,3); ' +
-        'var d2 = new Date(1,2,3); ' +
-        'return [d1,d1,d2];'
-    ), false, "evalThunk", function(v) {
-        doPassFail(equal(v[0], new Date(1,2,3)), "Date values correct (0)");
-        doPassFail(equal(v[0], v[2]), "Date values correct (1)");
-        doPassFail(v[0] === v[1], "References to dates correct (0)");
-        doPassFail(v[0] !== v[2], "References to dates correct (1)");
-    });
-
-// Reference equality between regexps must be preserved.
-tryPostMessage(thunk(
-        'var rx1 = new RegExp("foo"); ' +
-        'var rx2 = new RegExp("foo"); ' +
-        'var rx3 = new RegExp("foo", "gim"); ' +
-        'rx3.exec("foofoofoo"); ' +
-        'doPassFail(rx3.lastIndex === 3, "lastIndex initially correct: was " + rx3.lastIndex); ' +
-        'return [rx1,rx1,rx2,rx3];'
-    ), false, "evalThunk", function(v) {
-        doPassFail(v[0].source === "foo", "Regexp value correct (0)");
-        doPassFail(v[0] === v[1], "References to regexps correct (0)");
-        doPassFail(v[0] !== v[2], "References to regexps correct (1)");
-        doPassFail(v[0].global === false, "global set (0)");
-        doPassFail(v[3].global === true, "global set (1)");
-        doPassFail(v[0].ignoreCase === false, "ignoreCase set (0)");
-        doPassFail(v[3].ignoreCase === true, "ignoreCase set (1)");
-        doPassFail(v[0].multiline === false, "multiline set (0)");
-        doPassFail(v[3].multiline === true, "multiline set (1)");
-        doPassFail(v[0].lastIndex === 0, "lastIndex correct (0)");
-        doPassFail(v[3].lastIndex === 0, "lastIndex correct (1)");
-    });
-
-if (window.eventSender) {
-    tryPostMessage(thunk(
-        'window.fileList = fileInput.files; ' +
-        'window.file0 = fileList[0]; ' +
-        'window.file1 = fileList[1]; ' +
-        'return window.fileList.length'), false, 2);
-    doPassFail(window.fileList[0] === window.file0, "sanity on file reference equality")
-    // The standard mandates that we do _not_ maintain reference equality for files in a transferred FileList.
-    tryPostMessage(thunk('return [window.file0, window.file0];'
-        ), false, "evalThunk", function(v) { doPassFail(v[0] === v[1], "file references transfer")});
-    tryPostMessage(thunk('return [window.fileList, window.file0];'
-        ), false, "evalThunk", function(v) { doPassFail(v[0][0] !== v[1], "FileList should not respect reference equality")});
-    tryPostMessage(thunk('return [window.file0, window.fileList];'
-        ), false, "evalThunk", function(v) { doPassFail(v[1][0] !== v[0], "FileList should not respect reference equality")});
-    tryPostMessage(thunk('return [window.fileList, window.fileList];'
-        ), false, "evalThunk", function(v) { doPassFail(v[0] === v[1], "FileList respects self-reference equality")});
-    tryPostMessage(thunk('return [window.fileList, window.file0, window.file1]'
-        ), false, "evalThunk", function(v) {
-            doPassFail(v[0].length === window.fileList.length, "FileList length sent correctly");
-            doPassFail(v[0][0] !== v[1], "FileList should not respect reference equality (0)");
-            doPassFail(v[0][1] !== v[2], "FileList should not respect reference equality (1)");
-            doPassFail(v[0][0].name == window.file0.name, "FileList preserves order and data (name0)");
-            doPassFail(v[0][1].name == window.file1.name, "FileList preserves order and data (name1)");
-            doPassFail(equal(v[0][0].lastModifiedDate, window.file0.lastModifiedDate), "FileList preserves order and data (date0)");
-            doPassFail(equal(v[0][1].lastModifiedDate, window.file1.lastModifiedDate), "FileList preserves order and data (date1)");
-        });
-}
-tryPostMessage('"done"');
index 1c3d1a1..fbe2220 100644 (file)
@@ -4,7 +4,14 @@
 <div id="description"></div>
 <input type="file" id="fileInput" multiple></input>
 <div id="console"></div>
-<script src="script-tests/postmessage-test.js"></script>
-<script src="script-tests/postmessage-clone-deep-array.js"></script>
+<script src="resources/postmessage-test.js"></script>
+<script>
+document.getElementById("description").innerHTML = "Tests that we support cloning deep(ish) arrays.";
+deepArray=[];
+for (var i = 0; i < 10000; i++)
+    deepArray=[deepArray];
+tryPostMessage('deepArray');
+tryPostMessage('"done"');
+</script>
 </body>
 </html>
index eb6d66b..d39001f 100644 (file)
@@ -4,7 +4,14 @@
 <div id="description"></div>
 <input type="file" id="fileInput" multiple></input>
 <div id="console"></div>
-<script src="script-tests/postmessage-test.js"></script>
-<script src="script-tests/postmessage-clone-really-deep-array.js"></script>
+<script src="resources/postmessage-test.js"></script>
+<script>
+document.getElementById("description").innerHTML = "Tests that we abort cloning overdeep arrays.";
+reallyDeepArray=[];
+for (var i = 0; i < 100000; i++)
+    reallyDeepArray=[reallyDeepArray];
+tryPostMessage('reallyDeepArray', true, null, DOMException.DATA_CLONE_ERR);
+tryPostMessage('"done"');
+</script>
 </body>
 </html>
index 8d60603..ef31fd0 100644 (file)
@@ -4,7 +4,364 @@
 <div id="description"></div>
 <input type="file" id="fileInput" multiple></input>
 <div id="console"></div>
-<script src="script-tests/postmessage-test.js"></script>
-<script src="script-tests/postmessage-clone.js"></script>
+<script src="resources/postmessage-test.js"></script>
+<script>
+document.getElementById("description").innerHTML = "Tests that we clone object hierarchies";
+
+tryPostMessage('null');
+tryPostMessage('undefined');
+tryPostMessage('1');
+tryPostMessage('true');
+tryPostMessage('"1"');
+tryPostMessage('({})');
+tryPostMessage('({a:1})');
+tryPostMessage('({a:"a"})');
+tryPostMessage('({b:"a", a:"b"})');
+tryPostMessage('({p0:"string0", p1:"string1", p2:"string2", p3:"string3", p4:"string4", p5:"string5", p6:"string6", p7:"string7", p8:"string8", p9:"string9", p10:"string10", p11:"string11", p12:"string12", p13:"string13", p14:"string14", p15:"string15", p16:"string16", p17:"string17", p18:"string18", p19:"string19"})');
+tryPostMessage('({p0:"string1", p1:"string1", p2:"string2", p3:"string3", p4:"string4", p5:"string5", p6:"string6", p7:"string7", p8:"string8", p9:"string9", p10:"string10", p11:"string11", p12:"string12", p13:"string13", p14:"string14", p15:"string15", p16:"string16", p17:"string17", p18:"string18", p19:"string19"})');
+tryPostMessage('({a:""})');
+tryPostMessage('({a:0})');
+tryPostMessage('({a:1})');
+tryPostMessage('[]');
+tryPostMessage('["a", "a", "b", "a", "b"]');
+tryPostMessage('["a", "a", "b", {a:"b", b:"a"}]');
+tryPostMessage('[1,2,3]');
+tryPostMessage('[,,1]');
+tryPostMessage('(function(){})', true, null, DOMException.DATA_CLONE_ERR);
+tryPostMessage('var x = 0; try { eval("badref"); } catch(e) { x = e; } x', true, null, DOMException.DATA_CLONE_ERR);
+tryPostMessage('new Date(1234567890000)');
+tryPostMessage('new ConstructorWithPrototype("foo")', false, '({field:"foo"})');
+tryPostMessage('new Boolean(true)');
+tryPostMessage('new Boolean(false)');
+tryPostMessage('new String("gnirts")');
+tryPostMessage('new Number(42.0)');
+cyclicObject={};
+cyclicObject.self = cyclicObject;
+tryPostMessage('cyclicObject', false, "cyclicObject");
+cyclicArray=[];
+cyclicArray[0] = cyclicArray;
+tryPostMessage('cyclicArray', false, "cyclicArray");
+objectGraph = {};
+object = {};
+objectGraph.graph1 = object;
+objectGraph.graph2 = object;
+tryPostMessage('objectGraph', false, "objectGraph");
+arrayGraph = [object, object];
+tryPostMessage('arrayGraph', false, "arrayGraph");
+tryPostMessage('window', true);
+tryPostMessage('({get a() { throw "x" }})', true);
+
+var map = new Map;
+var set = new Set;
+map.expando1 = {};
+map.expando2 = {};
+map.aSet = set;
+map.set(1, 2.5)
+map.set("entry", map.expando1);
+map.set(true, set);
+map.set(map.expando2, map);
+set.add(false)
+set.add(map)
+tryPostMessage("map", false, "evalThunk", function (v) {
+    newMap = v
+    doPassFail(newMap.get("entry") === newMap.expando1, "String keyed entry was cloned correctly");
+    doPassFail(newMap.get(newMap.expando2) === newMap, "Object key entry was cloned correctly");
+    shouldBe("newMap.get(true)", "newMap.aSet")
+    shouldBe("newMap.aSet.has(newMap)", "true")
+    newMap.forEach(function (value, key) { 
+        console.innerHTML += "LOG: " + value + " => " + key + "<br>"
+    })
+})
+
+if (window.eventSender) {
+    var fileInput = document.getElementById("fileInput");
+    var fileRect = fileInput.getClientRects()[0];
+    var targetX = fileRect.left + fileRect.width / 2;
+    var targetY = fileRect.top + fileRect.height / 2;
+    eventSender.beginDragWithFiles(['resources/file1.txt', 'resources/file2.txt']);
+    eventSender.mouseMoveTo(targetX, targetY);
+    eventSender.mouseUp();
+}
+var imageData = document.createElement("canvas").getContext("2d").createImageData(10,10);
+for (var i = 0; i < imageData.data.length * 4; i++)
+    imageData.data[i] = i % 256;
+var mutatedImageData = document.createElement("canvas").getContext("2d").createImageData(10,10);
+for (var i = 0; i < imageData.data.length * 4; i++)
+    mutatedImageData.data[i] = i % 256;
+tryPostMessage('imageData', false, imageData);
+tryPostMessage('imageData.data', false, imageData.data)
+tryPostMessage('mutatedImageData', false, imageData);
+tryPostMessage('mutatedImageData.data', false, imageData.data)
+for (var i = 0; i < imageData.data.length * 4; i++)
+    mutatedImageData.data[i] = 0;
+
+function thunk(s) {
+    return "(function() {" + s + "})()";
+}
+tryPostMessage(thunk('return 42;'), false, '42');
+tryPostMessage(thunk('return 42;'), false, thunk('return 40 + 2;'));
+tryPostMessage(thunk('return 42;'), false, "evalThunk",
+               function(v) { doPassFail(v == 42, "evalThunk OK"); })
+
+// Only enumerable properties should be serialized.
+tryPostMessage(thunk('var o = {x:"hello"}; Object.defineProperty(o, "y", {value:"goodbye"}); return o;'), false, '({x:"hello"})');
+
+// It's unclear what we should do if an accessor modifies an object out from under us
+// while we're serializing it; the standard does mandate certain aspects about evaluation
+// order, though, including that properties must be processed in their enumeration order.
+tryPostMessage(thunk(
+        'var a = [0, 1, 2]; ' +
+        'var b = { get x() { a[0] = 40; a[2] = 42; a.push(43); return 41; }}; ' +
+        'a[1] = b; ' +
+        'return a;'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.length === 3, "length correct"); // undefined
+        doPassFail(v[0] === 0, "evaluation order OK"); // mandatory
+        doPassFail(v[1].x === 41, "evaluation order OK/accessor reached"); // mandatory
+        doPassFail(v[2] === 42, "evaluation order OK"); // mandatory
+    });
+
+tryPostMessage(thunk(
+        'var a = [0, 1, 2]; ' +
+        'var b = { get x() { a.pop(); return 41; } }; ' +
+        'a[1] = b; ' +
+        'return a;'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.length === 3 || v.length === 2, "length correct"); // undefined
+        doPassFail(v[0] === 0, "index 0 OK"); // mandatory
+        doPassFail(v[1].x === 41, "accessor reached"); // mandatory
+        doPassFail(v[2] === undefined, "index 2 undefined"); // undefined
+    });
+
+tryPostMessage(thunk(
+        'var a = [0, 1, 2]; ' +
+        'var b = { get x() { a.pop(); return 41; } }; ' +
+        'a[2] = b; ' +
+        'return a;'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.length === 3, "length correct"); // undefined
+        doPassFail(v[0] === 0, "index 0 OK"); // mandatory
+        doPassFail(v[1] === 1, "index 1 OK"); // mandatory
+        doPassFail(v[2].x === 41, "index 2 OK"); // undefined
+    });
+
+// Now with objects! This is a little more tricky because the standard does not
+// define an enumeration order.
+tryPostMessage(thunk(
+        'var a = {p0: 0, p1: 1}; ' +
+        'Object.defineProperty(a, "p2", {get:function() {delete a.p3; return 42; }, enumerable: true, configurable: true}); ' +
+        'Object.defineProperty(a, "p3", {get:function() {delete a.p2; return 43; }, enumerable: true, configurable: true}); ' +
+        'Object.defineProperty(a, "p4", {get:function() { a.p5 = 45; return 44; }, enumerable: true, configurable: true}); ' +
+        'return a;'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.p0 === 0 && v.p1 === 1, "basic properties OK"); // mandatory
+        doPassFail(v.p2 === undefined && v.p3 !== undefined ||
+                   v.p2 !== undefined && v.p3 === undefined, "one accessor was run"); // mandatory
+        doPassFail(v.p2 !== undefined || Object.getOwnPropertyDescriptor(v, "p2") === undefined, "property was removed"); // undefined
+        doPassFail(v.p3 !== undefined || Object.getOwnPropertyDescriptor(v, "p3") === undefined, "property was removed"); // undefined
+        doPassFail(v.p4 === 44, "accessor was run"); // mandatory
+        doPassFail(Object.getOwnPropertyDescriptor(v, "p5") === undefined, "dynamic property not sent"); // undefined
+    });
+
+// Objects returned from accessors should still be coalesced.
+tryPostMessage(thunk(
+        'var obja = {get p() { return 42; }}; ' +
+        'var msg = {get a() { return obja; }, b: obja}; ' +
+        'return msg;'
+    ), false, "evalThunk", function(v) {
+        // Interestingly, the standard admits two answers here!
+        doPassFail(v.a === v.b, "reference equality preserved");
+        doPassFail((v.b.p === 42 && v.a.p === 42) ||
+            (v.b.p === null && v.a.p === null), "accessors used");
+    });
+tryPostMessage(thunk(
+        'var obja = {get p() { return 42; }}; ' +
+        'var msg = {a: obja, get b() { return obja; }}; ' +
+        'return msg;'
+    ), false, "evalThunk", function(v) {
+        // Interestingly, the standard admits two answers here!
+        doPassFail(v.a === v.b, "reference equality preserved (opposite order)");
+        doPassFail((v.b.p === 42 && v.a.p === 42) ||
+                   (v.b.p === null && v.a.p === null), "accessors used (opposite order)");
+    });
+// We should nullify the results from accessors more than one level deep,
+// but leave other fields untouched.
+tryPostMessage(thunk(
+        'var obja = {get p() { return 42; }, q: 43}; ' +
+        'return {get a() { return obja; }};'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.a.p === null, "accessor value was nullified");
+        doPassFail(v.a.q === 43, "non-accessor value was not nullified");
+    });
+tryPostMessage(thunk(
+        'var objb = {get r() { return 44; }, t: 45}; ' +
+        'var obja = {get p() { return 42; }, q: 43, s: objb}; ' +
+        'return {get a() { return obja; }};'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.a.p === null, "accessor value was nullified");
+        doPassFail(v.a.q === 43, "non-accessor value was not nullified");
+        doPassFail(v.s !== null, "non-accessor value was not nullified");
+        doPassFail(v.a.s.r === null, "accessor value was nullified");
+        doPassFail(v.a.s.t === 45, "non-accessor value was not nullified");
+    });
+tryPostMessage(thunk(
+        'var objb = {get r() { return 44; }, t: 45}; ' +
+        'var obja = {get p() { return 42; }, q: 43, s: [objb]}; ' +
+        'return {get c() { return 47; }, get a() { return obja; }, get b() { return 46; } };'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.b === 46, "accessor value was not nullified");
+        doPassFail(v.c === 47, "accessor value was not nullified");
+        doPassFail(v.a.p === null, "accessor value was nullified");
+        doPassFail(v.a.q === 43, "non-accessor value was not nullified");
+        doPassFail(v.a.s !== null, "non-accessor value was not nullified");
+        doPassFail(v.a.s !== undefined, "non-accessor value is defined");
+        doPassFail(v.a.s[0] !== null, "non-accessor value was not nullified");
+        doPassFail(v.a.s[0] !== undefined, "non-accessor value is defined");
+        doPassFail(v.a.s[0].r === null, "accessor value was nullified");
+        doPassFail(v.a.s[0].t === 45, "non-accessor value was not nullified");
+    });
+
+// We need to pass out the exception raised from internal accessors.
+tryPostMessage(thunk(
+        'return {get a() { throw "accessor-exn"; }};'
+    ), true, null, 'accessor-exn');
+// We should still return the exception raised from nulled-out accessors.
+tryPostMessage(thunk(
+        'var obja = {get p() { throw "accessor-exn"; }}; ' +
+        'return {get a() { return obja; }};'
+    ), true, null, 'accessor-exn');
+// We should run the first nullified accessor, but no more.
+tryPostMessage(thunk(
+        'window.bcalled = undefined; ' +
+        'window.acalled = undefined; ' +
+        'window.pcalled = undefined; ' +
+        'var objb = {get b() { window.bcalled = true; return 42; }}; ' +
+        'var obja = {get a() { window.acalled = true; return objb; }}; ' +
+        'return { get p() { window.pcalled = true; return obja; }};'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v.p.a === null, "accessor value was nullified");
+        doPassFail(window.pcalled === true, "window.pcalled === true");
+        doPassFail(window.acalled === true, "window.acalled === true");
+        doPassFail(window.bcalled === undefined, "window.bcalled === undefined");
+    });
+
+// Reference equality between Boolean objects must be maintained.
+tryPostMessage(thunk(
+        'var t1 = new Boolean(true); ' +
+        'var t2 = new Boolean(true); ' +
+        'var f1 = new Boolean(false); ' +
+        'var f2 = new Boolean(false); ' +
+        'return [t1, t1, t2, f1, f1, f2];'
+    ), false, "evalThunk", function(v) {
+        doPassFail(equal(v[0], new Boolean(true)), "Boolean values correct (0)");
+        doPassFail(equal(v[3], new Boolean(false)), "Boolean values correct (3)");
+        doPassFail(equal(v[1], v[2]), "Boolean values correct (1,2)");
+        doPassFail(equal(v[4], v[5]), "Boolean values correct (4,5)");
+        doPassFail(v[0] === v[1], "References to Booleans correct (0,1)");
+        doPassFail(v[3] === v[4], "References to Booleans correct (3,4)");
+        doPassFail(v[0] !== v[2], "References to Booleans correct (0,2)");
+        doPassFail(v[3] !== v[5], "References to Booleans correct (3,5)");
+    });
+
+// Reference equality between Number objects must be maintained.
+tryPostMessage(thunk(
+        'var n1 = new Number(42.0); ' +
+        'var n2 = new Number(42.0); ' +
+        'return [n1, n1, n2];'
+    ), false, "evalThunk", function(v) {
+        doPassFail(equal(v[0], new Number(42.0)), "Number values correct (0)");
+        doPassFail(equal(v[0], v[2]), "Number values correct (0,2)");
+        doPassFail(v[0] === v[1], "References to numbers correct (0,1)");
+        doPassFail(v[0] !== v[2], "References to numbers correct (0,2)");
+    });
+
+// Reference equality between String objects must be maintained.
+tryPostMessage(thunk(
+        'var s1 = new String("gnirts"); ' +
+        'var s2 = new String("gnirts"); ' +
+        'return [s1, s1, s2];'
+    ), false, "evalThunk", function(v) {
+        doPassFail(equal(v[0], new String("gnirts")), "String values correct (0)");
+        doPassFail(equal(v[0], v[2]), "String values correct (0,2)");
+        doPassFail(v[0] === v[1], "References to strings correct (0,1)");
+        doPassFail(v[0] !== v[2], "References to strings correct (0,2)");
+    });
+
+// Properties added to String, Boolean and Number objects should not be serialized.
+tryPostMessage(thunk(
+        'var s = new String("gnirts"); ' +
+        'var n = new Number(42.0); ' +
+        'var b = new Boolean(true); ' +
+        's.foo = 1; n.foo = 2; b.foo = 3; ' +
+        'return [s, n, b];'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v[0].foo == undefined, "String object properties not serialized");
+        doPassFail(v[1].foo == undefined, "Number object properties not serialized");
+        doPassFail(v[2].foo == undefined, "Boolean object properties not serialized");
+    });
+
+// Reference equality between dates must be maintained.
+tryPostMessage(thunk(
+        'var d1 = new Date(1,2,3); ' +
+        'var d2 = new Date(1,2,3); ' +
+        'return [d1,d1,d2];'
+    ), false, "evalThunk", function(v) {
+        doPassFail(equal(v[0], new Date(1,2,3)), "Date values correct (0)");
+        doPassFail(equal(v[0], v[2]), "Date values correct (1)");
+        doPassFail(v[0] === v[1], "References to dates correct (0)");
+        doPassFail(v[0] !== v[2], "References to dates correct (1)");
+    });
+
+// Reference equality between regexps must be preserved.
+tryPostMessage(thunk(
+        'var rx1 = new RegExp("foo"); ' +
+        'var rx2 = new RegExp("foo"); ' +
+        'var rx3 = new RegExp("foo", "gim"); ' +
+        'rx3.exec("foofoofoo"); ' +
+        'doPassFail(rx3.lastIndex === 3, "lastIndex initially correct: was " + rx3.lastIndex); ' +
+        'return [rx1,rx1,rx2,rx3];'
+    ), false, "evalThunk", function(v) {
+        doPassFail(v[0].source === "foo", "Regexp value correct (0)");
+        doPassFail(v[0] === v[1], "References to regexps correct (0)");
+        doPassFail(v[0] !== v[2], "References to regexps correct (1)");
+        doPassFail(v[0].global === false, "global set (0)");
+        doPassFail(v[3].global === true, "global set (1)");
+        doPassFail(v[0].ignoreCase === false, "ignoreCase set (0)");
+        doPassFail(v[3].ignoreCase === true, "ignoreCase set (1)");
+        doPassFail(v[0].multiline === false, "multiline set (0)");
+        doPassFail(v[3].multiline === true, "multiline set (1)");
+        doPassFail(v[0].lastIndex === 0, "lastIndex correct (0)");
+        doPassFail(v[3].lastIndex === 0, "lastIndex correct (1)");
+    });
+
+if (window.eventSender) {
+    tryPostMessage(thunk(
+        'window.fileList = fileInput.files; ' +
+        'window.file0 = fileList[0]; ' +
+        'window.file1 = fileList[1]; ' +
+        'return window.fileList.length'), false, 2);
+    doPassFail(window.fileList[0] === window.file0, "sanity on file reference equality")
+    // The standard mandates that we do _not_ maintain reference equality for files in a transferred FileList.
+    tryPostMessage(thunk('return [window.file0, window.file0];'
+        ), false, "evalThunk", function(v) { doPassFail(v[0] === v[1], "file references transfer")});
+    tryPostMessage(thunk('return [window.fileList, window.file0];'
+        ), false, "evalThunk", function(v) { doPassFail(v[0][0] !== v[1], "FileList should not respect reference equality")});
+    tryPostMessage(thunk('return [window.file0, window.fileList];'
+        ), false, "evalThunk", function(v) { doPassFail(v[1][0] !== v[0], "FileList should not respect reference equality")});
+    tryPostMessage(thunk('return [window.fileList, window.fileList];'
+        ), false, "evalThunk", function(v) { doPassFail(v[0] === v[1], "FileList respects self-reference equality")});
+    tryPostMessage(thunk('return [window.fileList, window.file0, window.file1]'
+        ), false, "evalThunk", function(v) {
+            doPassFail(v[0].length === window.fileList.length, "FileList length sent correctly");
+            doPassFail(v[0][0] !== v[1], "FileList should not respect reference equality (0)");
+            doPassFail(v[0][1] !== v[2], "FileList should not respect reference equality (1)");
+            doPassFail(v[0][0].name == window.file0.name, "FileList preserves order and data (name0)");
+            doPassFail(v[0][1].name == window.file1.name, "FileList preserves order and data (name1)");
+            doPassFail(equal(v[0][0].lastModifiedDate, window.file0.lastModifiedDate), "FileList preserves order and data (date0)");
+            doPassFail(equal(v[0][1].lastModifiedDate, window.file1.lastModifiedDate), "FileList preserves order and data (date1)");
+        });
+}
+tryPostMessage('"done"');
+</script>
 </body>
 </html>
index aefbf1b..c6d6f13 100644 (file)
@@ -3,10 +3,19 @@
     <head>
         <link href="resources/min-width.css" rel="stylesheet" type="text/css">
         <script src="../../resources/js-test-pre.js"></script>
-        <script src="script-tests/min-width-helpers.js"></script>
+        <script src="resources/min-width-helpers.js"></script>
     </head>
     <body>
-        <script src="script-tests/min-width-css-block-table.js"></script>
+        <script>
+        description("This test checks that the min-width style is applied to block CSS tables.");
+
+        function computeLogicalWidth(writingMode, direction, tableStyle)
+        {
+            return computeLogicalWidthHelper("css", "block", writingMode, direction, tableStyle);
+        }
+
+        runTests("css");
+        </script>
         <script src="../../resources/js-test-post.js"></script>
     </body>
 </html>
index b8bf3eb..3c779e4 100644 (file)
@@ -3,10 +3,19 @@
     <head>
         <link href="resources/min-width.css" rel="stylesheet" type="text/css">
         <script src="../../resources/js-test-pre.js"></script>
-        <script src="script-tests/min-width-helpers.js"></script>
+        <script src="resources/min-width-helpers.js"></script>
     </head>
     <body>
-        <script src="script-tests/min-width-css-inline-table.js"></script>
+        <script>
+        description("This test checks that the min-width style is applied to inline CSS tables.");
+
+        function computeLogicalWidth(writingMode, direction, tableStyle)
+        {
+            return computeLogicalWidthHelper("css", "inline", writingMode, direction, tableStyle);
+        }
+
+        runTests("css");
+        </script>
         <script src="../../resources/js-test-post.js"></script>
     </body>
 </html>
index acdf77e..e1d8016 100644 (file)
@@ -3,10 +3,19 @@
     <head>
         <link href="resources/min-width.css" rel="stylesheet" type="text/css">
         <script src="../../resources/js-test-pre.js"></script>
-        <script src="script-tests/min-width-helpers.js"></script>
+        <script src="resources/min-width-helpers.js"></script>
     </head>
     <body>
-        <script src="script-tests/min-width-html-block-table.js"></script>
+        <script>
+        description("This test checks that the min-width style is applied to block HTML tables.");
+
+        function computeLogicalWidth(writingMode, direction, tableStyle)
+        {
+            return computeLogicalWidthHelper("html", "block", writingMode, direction, tableStyle);
+        }
+
+        runTests("html");
+        </script>
         <script src="../../resources/js-test-post.js"></script>
     </body>
 </html>
index 302785a..b0db3fb 100644 (file)
@@ -3,10 +3,19 @@
     <head>
         <link href="resources/min-width.css" rel="stylesheet" type="text/css">
         <script src="../../resources/js-test-pre.js"></script>
-        <script src="script-tests/min-width-helpers.js"></script>
+        <script src="resources/min-width-helpers.js"></script>
     </head>
     <body>
-        <script src="script-tests/min-width-html-inline-table.js"></script>
+        <script>
+        description("This test checks that the min-width style is applied to inline HTML tables.");
+
+        function computeLogicalWidth(writingMode, direction, tableStyle)
+        {
+            return computeLogicalWidthHelper("html", "inline", writingMode, direction, tableStyle);
+        }
+
+        runTests("html");
+        </script>
         <script src="../../resources/js-test-post.js"></script>
     </body>
 </html>
diff --git a/LayoutTests/fast/table/script-tests/min-width-css-block-table.js b/LayoutTests/fast/table/script-tests/min-width-css-block-table.js
deleted file mode 100644 (file)
index d522e46..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-description("This test checks that the min-width style is applied to block CSS tables.");
-
-// Requires min-width-helpers.js.
-
-function computeLogicalWidth(writingMode, direction, tableStyle)
-{
-    return computeLogicalWidthHelper("css", "block", writingMode, direction, tableStyle);
-}
-
-runTests("css");
diff --git a/LayoutTests/fast/table/script-tests/min-width-css-inline-table.js b/LayoutTests/fast/table/script-tests/min-width-css-inline-table.js
deleted file mode 100644 (file)
index f3c3cf2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-description("This test checks that the min-width style is applied to inline CSS tables.");
-
-// Requires min-width-helpers.js.
-
-function computeLogicalWidth(writingMode, direction, tableStyle)
-{
-    return computeLogicalWidthHelper("css", "inline", writingMode, direction, tableStyle);
-}
-
-runTests("css");
\ No newline at end of file
diff --git a/LayoutTests/fast/table/script-tests/min-width-html-block-table.js b/LayoutTests/fast/table/script-tests/min-width-html-block-table.js
deleted file mode 100644 (file)
index 7da2f40..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-description("This test checks that the min-width style is applied to block HTML tables.");
-
-// Requires min-width-helpers.js.
-
-function computeLogicalWidth(writingMode, direction, tableStyle)
-{
-    return computeLogicalWidthHelper("html", "block", writingMode, direction, tableStyle);
-}
-
-runTests("html");
diff --git a/LayoutTests/fast/table/script-tests/min-width-html-inline-table.js b/LayoutTests/fast/table/script-tests/min-width-html-inline-table.js
deleted file mode 100644 (file)
index e2ac24e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-description("This test checks that the min-width style is applied to inline HTML tables.");
-
-// Requires min-width-helpers.js.
-
-function computeLogicalWidth(writingMode, direction, tableStyle)
-{
-    return computeLogicalWidthHelper("html", "inline", writingMode, direction, tableStyle);
-}
-
-runTests("html");
index aa4b681..12b437b 100644 (file)
@@ -1,4 +1,4 @@
-Test for page-break-after:avoid
+Test for break-after:avoid
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
index aa4b681..bee5816 100644 (file)
@@ -1,4 +1,4 @@
-Test for page-break-after:avoid
+Test for break-after:avoid-page
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
index 5883533..364c045 100644 (file)
@@ -8,7 +8,51 @@
 <p id="description"></p>
 <div id="console"></div>
 <div id="sandbox"></div>
-<script src="script-tests/break-after-avoid.js"></script>
+<script>
+description("Test for break-after:avoid-page");
+
+function test()
+{
+    createBlockWithRatioToPageHeight("page1", 0.5).style.breakBefore = "page";
+    // A block 'page2-1' must move to the next page because it has 'page-break-after:avoid'
+    // and both 'page2-1' and 'page2-2' cannot be placed in the current page at the same time.
+    createBlockWithRatioToPageHeight("page2-1", 0.3).style.breakAfter = "avoid-page";
+    createBlockWithRatioToPageHeight("page2-2", 0.3);
+
+    createBlockWithRatioToPageHeight("page3-1", 0.5).style.breakBefore = "page";
+    // A page break can occur inside of 'page3-3' block because it has child elements.
+    createBlockWithRatioToPageHeight("page3-2", 0.3).style.breakAfter = "avoid-page";
+    createBlockWithNumberOfLines("page3-3", 10);
+
+    createBlockWithRatioToPageHeight("page5", 0.5).style.breakBefore = "page";
+    // It seems unrealistic, but block 'page6-1' must move to the next page.
+    createBlockWithRatioToPageHeight("page6-1", 0.1).style.breakAfter = "avoid-page";
+    createBlockWithRatioToPageHeight("page6-2", 0.1).style.breakAfter = "avoid-page";
+    createBlockWithRatioToPageHeight("page6-3", 0.1).style.breakAfter = "avoid-page";
+    createBlockWithRatioToPageHeight("page6-4", 0.1).style.breakAfter = "avoid-page";
+    createBlockWithRatioToPageHeight("page6-5", 0.1).style.breakAfter = "avoid-page";
+    createBlockWithRatioToPageHeight("page6-6", 0.1).style.breakAfter = "avoid-page";
+    createBlockWithRatioToPageHeight("page6-7", 0.1);
+
+
+    pageNumberForElementShouldBe("page1", 1);
+    pageNumberForElementShouldBe("page2-1", 2);
+    pageNumberForElementShouldBe("page2-2", 2);
+
+    pageNumberForElementShouldBe("page3-1", 3);
+    pageNumberForElementShouldBe("page3-2", 3);
+    pageNumberForElementShouldBe("page3-3", 3);
+
+    pageNumberForElementShouldBe("page5", 5);
+    pageNumberForElementShouldBe("page6-1", 6);
+    // Omit tests for intermediate blocks.
+    pageNumberForElementShouldBe("page6-7", 6);
+
+    document.body.removeChild(document.getElementById("sandbox"));
+}
+
+var successfullyParsed = true;
+</script>
 <script>runPrintingTest(test);</script>
 <script src="../resources/js-test-post.js"></script>
 </body>
index d5439e1..b032287 100644 (file)
@@ -8,7 +8,51 @@
 <p id="description"></p>
 <div id="console"></div>
 <div id="sandbox"></div>
-<script src="script-tests/page-break-after-avoid.js"></script>
+<script>
+description("Test for break-after:avoid");
+
+function test()
+{
+    createBlockWithRatioToPageHeight("page1", 0.5).style.breakBefore = "page";
+    // A block 'page2-1' must move to the next page because it has 'page-break-after:avoid'
+    // and both 'page2-1' and 'page2-2' cannot be placed in the current page at the same time.
+    createBlockWithRatioToPageHeight("page2-1", 0.3).style.breakAfter = "avoid";
+    createBlockWithRatioToPageHeight("page2-2", 0.3);
+
+    createBlockWithRatioToPageHeight("page3-1", 0.5).style.breakBefore = "page";
+    // A page break can occur inside of 'page3-3' block because it has child elements.
+    createBlockWithRatioToPageHeight("page3-2", 0.3).style.breakAfter = "avoid";
+    createBlockWithNumberOfLines("page3-3", 10);
+
+    createBlockWithRatioToPageHeight("page5", 0.5).style.breakBefore = "page";
+    // It seems unrealistic, but block 'page6-1' must move to the next page.
+    createBlockWithRatioToPageHeight("page6-1", 0.1).style.breakAfter = "avoid";
+    createBlockWithRatioToPageHeight("page6-2", 0.1).style.breakAfter = "avoid";
+    createBlockWithRatioToPageHeight("page6-3", 0.1).style.breakAfter = "avoid";
+    createBlockWithRatioToPageHeight("page6-4", 0.1).style.breakAfter = "avoid";
+    createBlockWithRatioToPageHeight("page6-5", 0.1).style.breakAfter = "avoid";
+    createBlockWithRatioToPageHeight("page6-6", 0.1).style.breakAfter = "avoid";
+    createBlockWithRatioToPageHeight("page6-7", 0.1);
+
+
+    pageNumberForElementShouldBe("page1", 1);
+    pageNumberForElementShouldBe("page2-1", 2);
+    pageNumberForElementShouldBe("page2-2", 2);
+
+    pageNumberForElementShouldBe("page3-1", 3);
+    pageNumberForElementShouldBe("page3-2", 3);
+    pageNumberForElementShouldBe("page3-3", 3);
+
+    pageNumberForElementShouldBe("page5", 5);
+    pageNumberForElementShouldBe("page6-1", 6);
+    // Omit tests for intermediate blocks.
+    pageNumberForElementShouldBe("page6-7", 6);
+
+    document.body.removeChild(document.getElementById("sandbox"));
+}
+
+var successfullyParsed = true;
+</script>
 <script>runPrintingTest(test);</script>
 <script src="../resources/js-test-post.js"></script>
 </body>
diff --git a/LayoutTests/printing/script-tests/break-after-avoid-page.js b/LayoutTests/printing/script-tests/break-after-avoid-page.js
deleted file mode 100644 (file)
index 12c98c8..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-description("Test for page-break-after:avoid");
-
-function test()
-{
-    createBlockWithRatioToPageHeight("page1", 0.5).style.breakBefore = "page";
-    // A block 'page2-1' must move to the next page because it has 'page-break-after:avoid'
-    // and both 'page2-1' and 'page2-2' cannot be placed in the current page at the same time.
-    createBlockWithRatioToPageHeight("page2-1", 0.3).style.breakAfter = "avoid-page";
-    createBlockWithRatioToPageHeight("page2-2", 0.3);
-
-    createBlockWithRatioToPageHeight("page3-1", 0.5).style.breakBefore = "page";
-    // A page break can occur inside of 'page3-3' block because it has child elements.
-    createBlockWithRatioToPageHeight("page3-2", 0.3).style.breakAfter = "avoid-page";
-    createBlockWithNumberOfLines("page3-3", 10);
-
-    createBlockWithRatioToPageHeight("page5", 0.5).style.breakBefore = "page";
-    // It seems unrealistic, but block 'page6-1' must move to the next page.
-    createBlockWithRatioToPageHeight("page6-1", 0.1).style.breakAfter = "avoid-page";
-    createBlockWithRatioToPageHeight("page6-2", 0.1).style.breakAfter = "avoid-page";
-    createBlockWithRatioToPageHeight("page6-3", 0.1).style.breakAfter = "avoid-page";
-    createBlockWithRatioToPageHeight("page6-4", 0.1).style.breakAfter = "avoid-page";
-    createBlockWithRatioToPageHeight("page6-5", 0.1).style.breakAfter = "avoid-page";
-    createBlockWithRatioToPageHeight("page6-6", 0.1).style.breakAfter = "avoid-page";
-    createBlockWithRatioToPageHeight("page6-7", 0.1);
-
-
-    pageNumberForElementShouldBe("page1", 1);
-    pageNumberForElementShouldBe("page2-1", 2);
-    pageNumberForElementShouldBe("page2-2", 2);
-
-    pageNumberForElementShouldBe("page3-1", 3);
-    pageNumberForElementShouldBe("page3-2", 3);
-    pageNumberForElementShouldBe("page3-3", 3);
-
-    pageNumberForElementShouldBe("page5", 5);
-    pageNumberForElementShouldBe("page6-1", 6);
-    // Omit tests for intermediate blocks.
-    pageNumberForElementShouldBe("page6-7", 6);
-
-    document.body.removeChild(document.getElementById("sandbox"));
-}
-
-var successfullyParsed = true;
diff --git a/LayoutTests/printing/script-tests/break-after-avoid.js b/LayoutTests/printing/script-tests/break-after-avoid.js
deleted file mode 100644 (file)
index 3e694bd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-description("Test for page-break-after:avoid");
-
-function test()
-{
-    createBlockWithRatioToPageHeight("page1", 0.5).style.breakBefore = "page";
-    // A block 'page2-1' must move to the next page because it has 'page-break-after:avoid'
-    // and both 'page2-1' and 'page2-2' cannot be placed in the current page at the same time.
-    createBlockWithRatioToPageHeight("page2-1", 0.3).style.breakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page2-2", 0.3);
-
-    createBlockWithRatioToPageHeight("page3-1", 0.5).style.breakBefore = "page";
-    // A page break can occur inside of 'page3-3' block because it has child elements.
-    createBlockWithRatioToPageHeight("page3-2", 0.3).style.breakAfter = "avoid";
-    createBlockWithNumberOfLines("page3-3", 10);
-
-    createBlockWithRatioToPageHeight("page5", 0.5).style.breakBefore = "page";
-    // It seems unrealistic, but block 'page6-1' must move to the next page.
-    createBlockWithRatioToPageHeight("page6-1", 0.1).style.breakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-2", 0.1).style.breakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-3", 0.1).style.breakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-4", 0.1).style.breakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-5", 0.1).style.breakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-6", 0.1).style.breakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-7", 0.1);
-
-
-    pageNumberForElementShouldBe("page1", 1);
-    pageNumberForElementShouldBe("page2-1", 2);
-    pageNumberForElementShouldBe("page2-2", 2);
-
-    pageNumberForElementShouldBe("page3-1", 3);
-    pageNumberForElementShouldBe("page3-2", 3);
-    pageNumberForElementShouldBe("page3-3", 3);
-
-    pageNumberForElementShouldBe("page5", 5);
-    pageNumberForElementShouldBe("page6-1", 6);
-    // Omit tests for intermediate blocks.
-    pageNumberForElementShouldBe("page6-7", 6);
-
-    document.body.removeChild(document.getElementById("sandbox"));
-}
-
-var successfullyParsed = true;
diff --git a/LayoutTests/printing/script-tests/page-break-after-avoid.js b/LayoutTests/printing/script-tests/page-break-after-avoid.js
deleted file mode 100644 (file)
index 6487b98..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-description("Test for page-break-after:avoid");
-
-function test()
-{
-    createBlockWithRatioToPageHeight("page1", 0.5).style.pageBreakBefore = "always";
-    // A block 'page2-1' must move to the next page because it has 'page-break-after:avoid'
-    // and both 'page2-1' and 'page2-2' cannot be placed in the current page at the same time.
-    createBlockWithRatioToPageHeight("page2-1", 0.3).style.pageBreakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page2-2", 0.3);
-
-    createBlockWithRatioToPageHeight("page3-1", 0.5).style.pageBreakBefore = "always";
-    // A page break can occur inside of 'page3-3' block because it has child elements.
-    createBlockWithRatioToPageHeight("page3-2", 0.3).style.pageBreakAfter = "avoid";
-    createBlockWithNumberOfLines("page3-3", 10);
-
-    createBlockWithRatioToPageHeight("page5", 0.5).style.pageBreakBefore = "always";
-    // It seems unrealistic, but block 'page6-1' must move to the next page.
-    createBlockWithRatioToPageHeight("page6-1", 0.1).style.pageBreakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-2", 0.1).style.pageBreakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-3", 0.1).style.pageBreakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-4", 0.1).style.pageBreakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-5", 0.1).style.pageBreakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-6", 0.1).style.pageBreakAfter = "avoid";
-    createBlockWithRatioToPageHeight("page6-7", 0.1);
-
-
-    pageNumberForElementShouldBe("page1", 1);
-    pageNumberForElementShouldBe("page2-1", 2);
-    pageNumberForElementShouldBe("page2-2", 2);
-
-    pageNumberForElementShouldBe("page3-1", 3);
-    pageNumberForElementShouldBe("page3-2", 3);
-    pageNumberForElementShouldBe("page3-3", 3);
-
-    pageNumberForElementShouldBe("page5", 5);
-    pageNumberForElementShouldBe("page6-1", 6);
-    // Omit tests for intermediate blocks.
-    pageNumberForElementShouldBe("page6-7", 6);
-
-    document.body.removeChild(document.getElementById("sandbox"));
-}
-
-var successfullyParsed = true;
diff --git a/LayoutTests/printing/script-tests/page-break-always-for-overflow.js b/LayoutTests/printing/script-tests/page-break-always-for-overflow.js
deleted file mode 100644 (file)
index 7e39132..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-description("Test page-break-{before,after}:always for overflow:{visible,hidden,scroll,auto} elements.");
-
-function test()
-{
-    var overflowValues = ["visible", "hidden", "scroll", "auto"];
-    var pageBreakPositions = ["page-break-before", "page-break-after"];
-
-    var testHtml = "";
-    for (var position = 0; position < pageBreakPositions.length; position++) {
-        for (var value = 0; value < overflowValues.length; value++) {
-            var overflowStyle = "overflow:" + overflowValues[value];
-            var pageBreakStyle = pageBreakPositions[position] + ":always";
-            var testId = 'test-' + pageBreakStyle + '-for-' + overflowStyle;
-            testHtml += '<div style="' + overflowStyle + '"><p id="' + testId + '" style="' + pageBreakStyle + '">' + overflowStyle + ', ' + pageBreakStyle + '</p></div>\n';
-        }
-    }
-    testHtml += '<p id="test-last-page">end</p>';
-    document.getElementById("sandbox").innerHTML = testHtml;
-
-    var expectedValues = [
-        // page-break-{before,after}:always should take effect regardless of overflow value.
-        ['test-page-break-before:always-for-overflow:visible', 1],
-        ['test-page-break-before:always-for-overflow:hidden', 2],
-        ['test-page-break-before:always-for-overflow:scroll', 3],
-        ['test-page-break-before:always-for-overflow:auto', 4],
-        ['test-page-break-after:always-for-overflow:visible', 4],
-        ['test-page-break-after:always-for-overflow:hidden', 5],
-        ['test-page-break-after:always-for-overflow:scroll', 6],
-        ['test-page-break-after:always-for-overflow:auto', 7],
-        ['test-last-page', 8]
-    ];
-
-    for (var i = 0; i < expectedValues.length; i++)
-        pageNumberForElementShouldBe(expectedValues[i][0], expectedValues[i][1]);
-
-    document.body.removeChild(document.getElementById("sandbox"));
-}
-
-var successfullyParsed = true;
index bc019b8..176bf18 100644 (file)
@@ -1,60 +1,60 @@
-This test checks the use of SVGAnimatedEnumeration within SVGPatternElement
+This test checks the use of SVGAnimatedEnumeration within SVGMaskElement
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
 
-Check initial 'patternUnits' value
-PASS patternElement.patternUnits.toString() is "[object SVGAnimatedEnumeration]"
-PASS typeof(patternElement.patternUnits.baseVal) is "number"
-PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+Check initial 'maskUnits' value
+PASS maskElement.maskUnits.toString() is "[object SVGAnimatedEnumeration]"
+PASS typeof(maskElement.maskUnits.baseVal) is "number"
+PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
 
 Switch to 'objectBoundingBox'
-PASS patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
+PASS maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
 
 Try setting invalid values
-PASS patternElement.patternUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
-PASS patternElement.patternUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
-PASS patternElement.patternUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
+PASS maskElement.maskUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
+PASS maskElement.maskUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
+PASS maskElement.maskUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
 
 Switch to 'userSpaceOnUse'
-PASS patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS patternElement.getAttribute('patternUnits') is "userSpaceOnUse"
+PASS maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS maskElement.getAttribute('maskUnits') is "userSpaceOnUse"
 
-Check initial 'patternContentUnits' value
-PASS patternElement.patternContentUnits.toString() is "[object SVGAnimatedEnumeration]"
-PASS typeof(patternElement.patternContentUnits.baseVal) is "number"
-PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+Check initial 'maskContentUnits' value
+PASS maskElement.maskContentUnits.toString() is "[object SVGAnimatedEnumeration]"
+PASS typeof(maskElement.maskContentUnits.baseVal) is "number"
+PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
 
 Switch to 'objectBoundingBox'
-PASS patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
+PASS maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
 
 Try setting invalid values
-PASS patternElement.patternContentUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
-PASS patternElement.patternContentUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
-PASS patternElement.patternContentUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
+PASS maskElement.maskContentUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
+PASS maskElement.maskContentUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
+PASS maskElement.maskContentUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
 
 Switch to 'userSpaceOnUse'
-PASS patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS patternElement.getAttribute('patternContentUnits') is "userSpaceOnUse"
+PASS maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS maskElement.getAttribute('maskContentUnits') is "userSpaceOnUse"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 75787bc..1db8219 100644 (file)
@@ -6,7 +6,81 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/SVGAnimatedEnumeration-SVGPatternElement.js"></script>
+<script>
+description("This test checks the use of SVGAnimatedEnumeration within SVGMaskElement");
+
+var maskElement = document.createElementNS("http://www.w3.org/2000/svg", "mask");
+maskElement.setAttribute("maskUnits", "userSpaceOnUse");
+maskElement.setAttribute("maskContentUnits", "userSpaceOnUse");
+
+// maskUnits
+debug("");
+debug("Check initial 'maskUnits' value");
+shouldBeEqualToString("maskElement.maskUnits.toString()", "[object SVGAnimatedEnumeration]");
+shouldBeEqualToString("typeof(maskElement.maskUnits.baseVal)", "number");
+shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+
+debug("");
+debug("Switch to 'objectBoundingBox'");
+shouldBe("maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
+
+debug("");
+debug("Try setting invalid values");
+shouldThrow("maskElement.maskUnits.baseVal = 3");
+shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
+
+shouldThrow("maskElement.maskUnits.baseVal = -1");
+shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
+
+shouldThrow("maskElement.maskUnits.baseVal = 0");
+shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
+
+debug("");
+debug("Switch to 'userSpaceOnUse'");
+shouldBe("maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "userSpaceOnUse");
+
+// maskContentUnits
+debug("");
+debug("Check initial 'maskContentUnits' value");
+shouldBeEqualToString("maskElement.maskContentUnits.toString()", "[object SVGAnimatedEnumeration]");
+shouldBeEqualToString("typeof(maskElement.maskContentUnits.baseVal)", "number");
+shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+
+debug("");
+debug("Switch to 'objectBoundingBox'");
+shouldBe("maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
+
+debug("");
+debug("Try setting invalid values");
+shouldThrow("maskElement.maskContentUnits.baseVal = 3");
+shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
+
+shouldThrow("maskElement.maskContentUnits.baseVal = -1");
+shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
+
+shouldThrow("maskElement.maskContentUnits.baseVal = 0");
+shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
+
+debug("");
+debug("Switch to 'userSpaceOnUse'");
+shouldBe("maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "userSpaceOnUse");
+
+successfullyParsed = true;
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
index 176bf18..bc019b8 100644 (file)
@@ -1,60 +1,60 @@
-This test checks the use of SVGAnimatedEnumeration within SVGMaskElement
+This test checks the use of SVGAnimatedEnumeration within SVGPatternElement
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
 
-Check initial 'maskUnits' value
-PASS maskElement.maskUnits.toString() is "[object SVGAnimatedEnumeration]"
-PASS typeof(maskElement.maskUnits.baseVal) is "number"
-PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+Check initial 'patternUnits' value
+PASS patternElement.patternUnits.toString() is "[object SVGAnimatedEnumeration]"
+PASS typeof(patternElement.patternUnits.baseVal) is "number"
+PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
 
 Switch to 'objectBoundingBox'
-PASS maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
+PASS patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
 
 Try setting invalid values
-PASS maskElement.maskUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
-PASS maskElement.maskUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
-PASS maskElement.maskUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskUnits') is "objectBoundingBox"
+PASS patternElement.patternUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
+PASS patternElement.patternUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
+PASS patternElement.patternUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternUnits') is "objectBoundingBox"
 
 Switch to 'userSpaceOnUse'
-PASS maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS maskElement.maskUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS maskElement.getAttribute('maskUnits') is "userSpaceOnUse"
+PASS patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS patternElement.patternUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS patternElement.getAttribute('patternUnits') is "userSpaceOnUse"
 
-Check initial 'maskContentUnits' value
-PASS maskElement.maskContentUnits.toString() is "[object SVGAnimatedEnumeration]"
-PASS typeof(maskElement.maskContentUnits.baseVal) is "number"
-PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+Check initial 'patternContentUnits' value
+PASS patternElement.patternContentUnits.toString() is "[object SVGAnimatedEnumeration]"
+PASS typeof(patternElement.patternContentUnits.baseVal) is "number"
+PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
 
 Switch to 'objectBoundingBox'
-PASS maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
+PASS patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
 
 Try setting invalid values
-PASS maskElement.maskContentUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
-PASS maskElement.maskContentUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
-PASS maskElement.maskContentUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
-PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
-PASS maskElement.getAttribute('maskContentUnits') is "objectBoundingBox"
+PASS patternElement.patternContentUnits.baseVal = 3 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
+PASS patternElement.patternContentUnits.baseVal = -1 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
+PASS patternElement.patternContentUnits.baseVal = 0 threw exception SVG_INVALID_VALUE_ERR (DOM SVG Exception 1): An invalid value was passed to an operation or assigned to an attribute..
+PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+PASS patternElement.getAttribute('patternContentUnits') is "objectBoundingBox"
 
 Switch to 'userSpaceOnUse'
-PASS maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS maskElement.maskContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
-PASS maskElement.getAttribute('maskContentUnits') is "userSpaceOnUse"
+PASS patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS patternElement.patternContentUnits.baseVal is SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE
+PASS patternElement.getAttribute('patternContentUnits') is "userSpaceOnUse"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 226804c..de20529 100644 (file)
@@ -6,7 +6,81 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/SVGAnimatedEnumeration-SVGMaskElement.js"></script>
+<script>
+description("This test checks the use of SVGAnimatedEnumeration within SVGPatternElement");
+
+var patternElement = document.createElementNS("http://www.w3.org/2000/svg", "pattern");
+patternElement.setAttribute("patternUnits", "userSpaceOnUse");
+patternElement.setAttribute("patternContentUnits", "userSpaceOnUse");
+
+// patternUnits
+debug("");
+debug("Check initial 'patternUnits' value");
+shouldBeEqualToString("patternElement.patternUnits.toString()", "[object SVGAnimatedEnumeration]");
+shouldBeEqualToString("typeof(patternElement.patternUnits.baseVal)", "number");
+shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+
+debug("");
+debug("Switch to 'objectBoundingBox'");
+shouldBe("patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
+
+debug("");
+debug("Try setting invalid values");
+shouldThrow("patternElement.patternUnits.baseVal = 3");
+shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
+
+shouldThrow("patternElement.patternUnits.baseVal = -1");
+shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
+
+shouldThrow("patternElement.patternUnits.baseVal = 0");
+shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
+
+debug("");
+debug("Switch to 'userSpaceOnUse'");
+shouldBe("patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "userSpaceOnUse");
+
+// patternContentUnits
+debug("");
+debug("Check initial 'patternContentUnits' value");
+shouldBeEqualToString("patternElement.patternContentUnits.toString()", "[object SVGAnimatedEnumeration]");
+shouldBeEqualToString("typeof(patternElement.patternContentUnits.baseVal)", "number");
+shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+
+debug("");
+debug("Switch to 'objectBoundingBox'");
+shouldBe("patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
+
+debug("");
+debug("Try setting invalid values");
+shouldThrow("patternElement.patternContentUnits.baseVal = 3");
+shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
+
+shouldThrow("patternElement.patternContentUnits.baseVal = -1");
+shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
+
+shouldThrow("patternElement.patternContentUnits.baseVal = 0");
+shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
+shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
+
+debug("");
+debug("Switch to 'userSpaceOnUse'");
+shouldBe("patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
+shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "userSpaceOnUse");
+
+successfullyParsed = true;
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration-SVGMaskElement.js b/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration-SVGMaskElement.js
deleted file mode 100644 (file)
index 9db907d..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-description("This test checks the use of SVGAnimatedEnumeration within SVGMaskElement");
-
-var maskElement = document.createElementNS("http://www.w3.org/2000/svg", "mask");
-maskElement.setAttribute("maskUnits", "userSpaceOnUse");
-maskElement.setAttribute("maskContentUnits", "userSpaceOnUse");
-
-// maskUnits
-debug("");
-debug("Check initial 'maskUnits' value");
-shouldBeEqualToString("maskElement.maskUnits.toString()", "[object SVGAnimatedEnumeration]");
-shouldBeEqualToString("typeof(maskElement.maskUnits.baseVal)", "number");
-shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-
-debug("");
-debug("Switch to 'objectBoundingBox'");
-shouldBe("maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
-
-debug("");
-debug("Try setting invalid values");
-shouldThrow("maskElement.maskUnits.baseVal = 3");
-shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
-
-shouldThrow("maskElement.maskUnits.baseVal = -1");
-shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
-
-shouldThrow("maskElement.maskUnits.baseVal = 0");
-shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "objectBoundingBox");
-
-debug("");
-debug("Switch to 'userSpaceOnUse'");
-shouldBe("maskElement.maskUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBe("maskElement.maskUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBeEqualToString("maskElement.getAttribute('maskUnits')", "userSpaceOnUse");
-
-// maskContentUnits
-debug("");
-debug("Check initial 'maskContentUnits' value");
-shouldBeEqualToString("maskElement.maskContentUnits.toString()", "[object SVGAnimatedEnumeration]");
-shouldBeEqualToString("typeof(maskElement.maskContentUnits.baseVal)", "number");
-shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-
-debug("");
-debug("Switch to 'objectBoundingBox'");
-shouldBe("maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
-
-debug("");
-debug("Try setting invalid values");
-shouldThrow("maskElement.maskContentUnits.baseVal = 3");
-shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
-
-shouldThrow("maskElement.maskContentUnits.baseVal = -1");
-shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
-
-shouldThrow("maskElement.maskContentUnits.baseVal = 0");
-shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "objectBoundingBox");
-
-debug("");
-debug("Switch to 'userSpaceOnUse'");
-shouldBe("maskElement.maskContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBe("maskElement.maskContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBeEqualToString("maskElement.getAttribute('maskContentUnits')", "userSpaceOnUse");
-
-successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration-SVGPatternElement.js b/LayoutTests/svg/dom/script-tests/SVGAnimatedEnumeration-SVGPatternElement.js
deleted file mode 100644 (file)
index be28dc0..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-description("This test checks the use of SVGAnimatedEnumeration within SVGPatternElement");
-
-var patternElement = document.createElementNS("http://www.w3.org/2000/svg", "pattern");
-patternElement.setAttribute("patternUnits", "userSpaceOnUse");
-patternElement.setAttribute("patternContentUnits", "userSpaceOnUse");
-
-// patternUnits
-debug("");
-debug("Check initial 'patternUnits' value");
-shouldBeEqualToString("patternElement.patternUnits.toString()", "[object SVGAnimatedEnumeration]");
-shouldBeEqualToString("typeof(patternElement.patternUnits.baseVal)", "number");
-shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-
-debug("");
-debug("Switch to 'objectBoundingBox'");
-shouldBe("patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
-
-debug("");
-debug("Try setting invalid values");
-shouldThrow("patternElement.patternUnits.baseVal = 3");
-shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
-
-shouldThrow("patternElement.patternUnits.baseVal = -1");
-shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
-
-shouldThrow("patternElement.patternUnits.baseVal = 0");
-shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "objectBoundingBox");
-
-debug("");
-debug("Switch to 'userSpaceOnUse'");
-shouldBe("patternElement.patternUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBe("patternElement.patternUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBeEqualToString("patternElement.getAttribute('patternUnits')", "userSpaceOnUse");
-
-// patternContentUnits
-debug("");
-debug("Check initial 'patternContentUnits' value");
-shouldBeEqualToString("patternElement.patternContentUnits.toString()", "[object SVGAnimatedEnumeration]");
-shouldBeEqualToString("typeof(patternElement.patternContentUnits.baseVal)", "number");
-shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-
-debug("");
-debug("Switch to 'objectBoundingBox'");
-shouldBe("patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
-
-debug("");
-debug("Try setting invalid values");
-shouldThrow("patternElement.patternContentUnits.baseVal = 3");
-shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
-
-shouldThrow("patternElement.patternContentUnits.baseVal = -1");
-shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
-
-shouldThrow("patternElement.patternContentUnits.baseVal = 0");
-shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX");
-shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "objectBoundingBox");
-
-debug("");
-debug("Switch to 'userSpaceOnUse'");
-shouldBe("patternElement.patternContentUnits.baseVal = SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBe("patternElement.patternContentUnits.baseVal", "SVGUnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE");
-shouldBeEqualToString("patternElement.getAttribute('patternContentUnits')", "userSpaceOnUse");
-
-successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGColor.js b/LayoutTests/svg/dom/script-tests/SVGColor.js
deleted file mode 100644 (file)
index 308c096..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-description("This test checks the SVGColor API");
-
-// Setup a real SVG document, as we want to access CSS style information.
-var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
-svgElement.setAttribute("width", "150");
-svgElement.setAttribute("height", "50");
-
-var stopElement = document.createElementNS("http://www.w3.org/2000/svg", "stop");
-stopElement.setAttribute("style", "stop-color: red; color: green");
-svgElement.appendChild(stopElement);
-document.getElementById("description").appendChild(svgElement);
-
-function checkStopColor(type, red, green, blue) {
-    shouldBe("stopColor.colorType", type);
-    shouldBeEqualToString("(rgbColor = stopColor.rgbColor).toString()", "[object RGBColor]");
-    shouldBe("rgbColor.red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "" + red);
-    shouldBe("rgbColor.green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "" + green);
-    shouldBe("rgbColor.blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "" + blue);
-}
-
-debug("");
-debug("Check initial color values");
-shouldBeEqualToString("(stopColor = stopElement.style.getPropertyCSSValue('stop-color')).toString()", "[object SVGColor]");
-checkStopColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 255, 0, 0);
-shouldBeEqualToString("stopElement.style.stopColor", "rgb(255, 0, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(stopElement).stopColor", "rgb(255, 0, 0)");
-
-debug("");
-debug("Try invalid arguments for setColor()");
-shouldThrow("stopColor.setColor(null, null, null)");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_RGBCOLOR, svgElement, '');");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_RGBCOLOR, '', '')");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_CURRENTCOLOR + 1, '', '');");
-shouldThrow("stopColor.setColor()");
-shouldThrow("stopColor.setColor(stopColor)");
-
-debug("");
-debug("Try assigning to the readonly colorType property, which silently fails");
-shouldBeUndefined("stopColor.colorType = SVGColor.SVG_COLORTYPE_UNKKNOWN;");
-shouldBe("stopColor.colorType", "SVGColor.SVG_COLORTYPE_RGBCOLOR");
-shouldBeEqualToString("stopElement.style.stopColor", "rgb(255, 0, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(stopElement).stopColor", "rgb(255, 0, 0)");
-
-debug("");
-debug("Test using setColor() and SVG_COLORTYPE_UNKNOWN");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_UNKKNOWN, '', '')");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_UNKKNOWN, 'rgb(0,128,128)', '')");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_UNKKNOWN, '', 'icc-color(myRGB, 0, 1, 2)')");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_UNKKNOWN, 'rgb(0,0,0)', 'icc-color(myRGB, 0, 1, 2)')");
-
-debug("");
-debug("Test using setColor() and SVG_COLORTYPE_RGBCOLOR_ICCCOLOR");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_RGBCOLOR_ICCCOLOR, 'rgb(77,0,77)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("stopColor.colorType", "SVGColor.SVG_COLORTYPE_RGBCOLOR");
-// FIXME: No support for ICC colors.
-checkStopColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 255, 0, 0);
-shouldBeEqualToString("stopElement.style.stopColor", "rgb(255, 0, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(stopElement).stopColor", "rgb(255, 0, 0)");
-
-debug("");
-debug("Test using setColor() and SVG_COLORTYPE_CURRENTCOLOR");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_CURRENTCOLOR, 'rgb(77,0,77)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("stopColor.colorType", "SVGColor.SVG_COLORTYPE_RGBCOLOR");
-checkStopColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 255, 0, 0);
-shouldBeEqualToString("stopElement.style.stopColor", "rgb(255, 0, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(stopElement).stopColor", "rgb(255, 0, 0)");
-
-debug("");
-debug("Test using setColor() and SVG_COLORTYPE_RGBCOLOR");
-shouldThrow("stopColor.setColor(SVGColor.SVG_COLORTYPE_RGBCOLOR, 'rgb(0,77,0)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("stopColor.colorType", "SVGColor.SVG_COLORTYPE_RGBCOLOR");
-checkStopColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 255, 0, 0);
-shouldBeEqualToString("document.defaultView.getComputedStyle(stopElement).stopColor", "rgb(255, 0, 0)");
-
-successfullyParsed = true;
diff --git a/LayoutTests/svg/dom/script-tests/SVGPaint.js b/LayoutTests/svg/dom/script-tests/SVGPaint.js
deleted file mode 100644 (file)
index d3c0ecb..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-description("This test checks the SVGPaint API");
-
-// Setup a real SVG document, as we want to access CSS style information.
-var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
-svgElement.setAttribute("width", "150");
-svgElement.setAttribute("height", "50");
-
-var rectElement = document.createElementNS("http://www.w3.org/2000/svg", "rect");
-rectElement.setAttribute("style", "color: lime; fill: green");
-rectElement.setAttribute("width", "150");
-rectElement.setAttribute("height", "50");
-svgElement.appendChild(rectElement);
-document.getElementById("description").appendChild(svgElement);
-
-// FIXME: Most tests that examine the computed style after modifying the SVGPaint object fail, as we don't support
-// invalidation of the style, if a CSSValue changes, it's also dangerous, as the CSSValues are possibly shared.
-// We would need copy-on-write support for CSSValue first, to make this work. It's low priority though.
-// No-one supports modifying the SVGPaint object.
-
-function resetStyle() {
-    debug("");
-    debug("Reset style to initial value");
-    rectElement.setAttribute("style", "color: lime; fill: green");
-    shouldBeEqualToString("(fillPaint = rectElement.style.getPropertyCSSValue('fill')).toString()", "[object SVGPaint]");
-    shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-    shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-    shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-}
-
-function checkFillColor(type, red, green, blue) {
-    shouldBe("fillPaint.colorType", type);
-    shouldBeEqualToString("(fillColor = fillPaint.rgbColor).toString()", "[object RGBColor]");
-    shouldBe("fillColor.red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "" + red);
-    shouldBe("fillColor.green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "" + green);
-    shouldBe("fillColor.blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "" + blue);
-}
-
-debug("");
-debug("Check initial paint values");
-shouldBeEqualToString("(fillPaint = rectElement.style.getPropertyCSSValue('fill')).toString()", "[object SVGPaint]");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Try invalid arguments for setPaint()");
-shouldThrow("fillPaint.setPaint(null, null, null, null)");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_RGBCOLOR, svgElement, '', '');");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_RGBCOLOR, '', '')");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR + 1, '', '', '');");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_NONE - 1, '', '', '');");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI + 1, '', '', '');");
-shouldThrow("fillPaint.setPaint()");
-shouldThrow("fillPaint.setPaint(fillPaint)");
-
-debug("");
-debug("Try invalid arguments for setUri()");
-shouldThrow("fillPaint.setUri()");
-
-debug("");
-debug("Try assigning to the readonly paintType property, which silently fails");
-shouldBeUndefined("fillPaint.paintType = SVGPaint.SVG_PAINTTYPE_UNKKNOWN;");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_UNKNOWN");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_UNKKNOWN, '', '', '')");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_UNKKNOWN, 'url(#foo)', '', '')");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_UNKKNOWN, '', 'rgb(0,128,128)', '')");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_UNKKNOWN, '', '', 'icc-color(myRGB, 0, 1, 2)')");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_UNKKNOWN, 'url(#foo)', 'rgb(0,0,0)', 'icc-color(myRGB, 0, 1, 2)')");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_NONE - a");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_NONE, '', '', '')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-resetStyle();
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_NONE - b");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_NONE, 'url(#foo)', '', '')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-resetStyle();
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_NONE - c");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_NONE, '', 'rgb(0,128,128)', '')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-resetStyle();
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_NONE - d");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_NONE, '', '', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-resetStyle();
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_NONE - e");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_NONE, 'url(#foo)', 'rgb(0,0,0)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI - a");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI, '', '', '')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI - b");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI, '', 'rgb(0,128,128)', '')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI - c");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI, '', '', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI - d");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI, 'url(#test)', '', '')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-resetStyle();
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI - e");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI, 'url(#foo)', 'rgb(0,0,0)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI_NONE");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI_NONE, 'url(#test)', 'rgb(0,0,0)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI_CURRENTCOLOR");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI_CURRENTCOLOR, 'url(#foo)', 'rgb(0,0,0)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI_RGBCOLOR");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI_RGBCOLOR, 'url(#test)', 'rgb(77,0,77)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR, 'url(#foo)', 'rgb(77,0,77)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR, 'url(#test)', 'rgb(77,0,77)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_CURRENTCOLOR");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_CURRENTCOLOR, 'url(#foo)', 'rgb(77,0,77)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setPaint() and SVG_PAINTTYPE_RGBCOLOR");
-shouldThrow("fillPaint.setPaint(SVGPaint.SVG_PAINTTYPE_RGBCOLOR, 'url(#test)', 'rgb(0,77,0)', 'icc-color(myRGB, 0, 1, 2)')");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-debug("");
-debug("Test using setUri()");
-shouldBeUndefined("fillPaint.setUri('url(#foobar)');");
-shouldBe("fillPaint.paintType", "SVGPaint.SVG_PAINTTYPE_RGBCOLOR");
-shouldBeEqualToString("fillPaint.uri", "");
-checkFillColor("SVGColor.SVG_COLORTYPE_RGBCOLOR", 0, 128, 0);
-shouldBeEqualToString("rectElement.style.fill", "rgb(0, 128, 0)");
-shouldBeEqualToString("document.defaultView.getComputedStyle(rectElement).fill", "rgb(0, 128, 0)");
-
-successfullyParsed = true;
index 71cd642..b22616c 100644 (file)
@@ -9,6 +9,53 @@
 <h1>SVG 1.1 dynamic update tests</h1>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/SVGFEFloodElement-inherit-flood-color-css-prop.js"></script>
+<script>
+// [Expected rendering result] A simple rect with feFlood filter - and a series of PASS messages
+
+description("Tests dynamic updates of the inherited 'flood-color' attribute of the SVGFEFloodElement object")
+createSVGTestCase();
+
+var floodElement = createSVGElement("feFlood");
+floodElement.setAttribute("flood-color", "inherit");
+floodElement.setAttribute("flood-opacity", ".8");
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.setAttribute("style", "flood-color:rgb(145, 32, 103)");
+filterElement.appendChild(floodElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+rootSVGElement.setAttribute("width", "700");
+rootSVGElement.setAttribute("height", "200");
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", 60);
+rectElement.setAttribute("y", 100);
+rectElement.setAttribute("width", 100);
+rectElement.setAttribute("height", 100);
+rectElement.setAttribute("stroke", "#AF1E9D");
+rectElement.setAttribute("stroke-width", "8");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("document.defaultView.getComputedStyle(floodElement).getPropertyValue('flood-color')", "rgb(145, 32, 103)");
+
+function repaintTest() {
+    filterElement.setAttribute("style", "flood-color:rgb(64, 128, 103)");
+    shouldBeEqualToString("document.defaultView.getComputedStyle(floodElement).getPropertyValue('flood-color')", "rgb(64, 128, 103)");
+
+    completeTest();
+}
+
+var successfullyParsed = true;
+</script>
 </body>
 </html>
index 8d420bc..bc9c3e9 100644 (file)
@@ -9,6 +9,53 @@
 <h1>SVG 1.1 dynamic update tests</h1>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/SVGFEGaussianBlurElement-svgdom-stdDeviation-call.js"></script>
+<script>
+// [Expected rendering result] A simple rectangle with feGaussianBlur filter - and a series of PASS messages
+
+description("Tests dynamic updates of the 'stdDeviation' property of the SVGFEGaussianBlurElement object")
+createSVGTestCase();
+
+var blurElement = createSVGElement("feGaussianBlur");
+blurElement.setAttribute("stdDeviation", "5");
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "userSpaceOnUse");
+filterElement.setAttribute("x", "0");
+filterElement.setAttribute("y", "0");
+filterElement.setAttribute("width", "200");
+filterElement.setAttribute("height", "200");
+filterElement.appendChild(blurElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+rootSVGElement.setAttribute("width", "700");
+rootSVGElement.setAttribute("height", "200");
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("x", 60);
+rectElement.setAttribute("y", 20);
+rectElement.setAttribute("width", 100);
+rectElement.setAttribute("height", 100);
+rectElement.setAttribute("stroke", "#AF1E9D");
+rectElement.setAttribute("stroke-width", "8");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("blurElement.stdDeviationX.baseVal", "5");
+shouldBe("blurElement.stdDeviationY.baseVal", "5");
+
+function repaintTest() {
+    blurElement.setStdDeviation(10, 10);
+    shouldBe("blurElement.stdDeviationX.baseVal", "10");
+    shouldBe("blurElement.stdDeviationY.baseVal", "10");
+
+    completeTest();
+}
+
+var successfullyParsed = true;
+</script>
 </body>
 </html>
index c4070e3..cea06f7 100644 (file)
@@ -9,6 +9,70 @@
 <h1>SVG 1.1 dynamic update tests</h1>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/SVGFESpecularLightingElement-dom-surfaceScale-attr.js"></script>
+<script>
+// [Expected rendering result] A shining circle - and a series of PASS messages
+
+description("Tests dynamic updates of the 'surfaceScale' attribute of the SVGFESpecularLightingElement object")
+createSVGTestCase();
+
+var distantElement = createSVGElement("feDistantLight");
+distantElement.setAttribute("azimuth", "45");
+distantElement.setAttribute("elevation", "45");
+
+var specularElement = createSVGElement("feSpecularLighting");
+specularElement.setAttribute("in", "SourceGraphic");
+specularElement.setAttribute("specularConstant", "1");
+specularElement.setAttribute("specularExponent", "1");
+specularElement.setAttribute("surfaceScale", "1");
+specularElement.setAttribute("lighting-color", "greenyellow");
+specularElement.appendChild(distantElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "objectBoundingBox");
+filterElement.setAttribute("x", "0%");
+filterElement.setAttribute("y", "0%");
+filterElement.setAttribute("width", "100%");
+filterElement.setAttribute("height", "100%");
+filterElement.appendChild(specularElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+rootSVGElement.setAttribute("width", "200");
+rootSVGElement.setAttribute("height", "200");
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("fill", "black");
+
+var backgroundElement = createSVGElement("rect");
+backgroundElement.setAttribute("x", 60);
+backgroundElement.setAttribute("y", 20);
+backgroundElement.setAttribute("width", 100);
+backgroundElement.setAttribute("height", 60);
+gElement.appendChild(backgroundElement);
+rootSVGElement.appendChild(gElement);
+
+var rectElement = createSVGElement("image");
+rectElement.setAttribute("x", 60);
+rectElement.setAttribute("y", 20);
+rectElement.setAttribute("width", 100);
+rectElement.setAttribute("height", 60);
+rectElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/bumpMap2.png");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBeEqualToString("specularElement.getAttribute('surfaceScale')", "1");
+
+function repaintTest() {
+    specularElement.setAttribute("surfaceScale", "10");
+    shouldBeEqualToString("specularElement.getAttribute('surfaceScale')", "10");
+
+    completeTest();
+}
+
+var successfullyParsed = true;
+</script>
 </body>
 </html>
index c2b719a..ed82681 100644 (file)
@@ -9,6 +9,71 @@
 <h1>SVG 1.1 dynamic update tests</h1>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/SVGFESpecularLightingElement-svgdom-surfaceScale-prop.js"></script>
+<script>
+// [Expected rendering result] A shining circle - and a series of PASS messages
+
+description("Tests dynamic updates of the 'surfaceScale' property of the SVGFESpecularLightingElement object")
+createSVGTestCase();
+
+var distantElement = createSVGElement("feDistantLight");
+distantElement.setAttribute("azimuth", "45");
+distantElement.setAttribute("elevation", "45");
+
+var specularElement = createSVGElement("feSpecularLighting");
+specularElement.setAttribute("in", "SourceGraphic");
+specularElement.setAttribute("specularConstant", "1");
+specularElement.setAttribute("specularExponent", "1");
+specularElement.setAttribute("surfaceScale", "1");
+specularElement.setAttribute("lighting-color", "greenyellow");
+specularElement.appendChild(distantElement);
+
+var filterElement = createSVGElement("filter");
+filterElement.setAttribute("id", "myFilter");
+filterElement.setAttribute("filterUnits", "objectBoundingBox");
+filterElement.setAttribute("x", "0%");
+filterElement.setAttribute("y", "0%");
+filterElement.setAttribute("width", "100%");
+filterElement.setAttribute("height", "100%");
+filterElement.appendChild(specularElement);
+
+var defsElement = createSVGElement("defs");
+defsElement.appendChild(filterElement);
+
+rootSVGElement.appendChild(defsElement);
+rootSVGElement.setAttribute("width", "200");
+rootSVGElement.setAttribute("height", "150");
+
+var gElement = createSVGElement("g");
+gElement.setAttribute("fill", "black");
+
+var backgroundElement = createSVGElement("rect");
+backgroundElement.setAttribute("x", 60);
+backgroundElement.setAttribute("y", 20);
+backgroundElement.setAttribute("width", 100);
+backgroundElement.setAttribute("height", 60);
+gElement.appendChild(backgroundElement);
+rootSVGElement.appendChild(gElement);
+
+var rectElement = createSVGElement("image");
+rectElement.setAttribute("x", 60);
+rectElement.setAttribute("y", 20);
+rectElement.setAttribute("width", 100);
+rectElement.setAttribute("height", 60);
+rectElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/bumpMap2.png");
+rectElement.setAttribute("filter", "url(#myFilter)");
+rootSVGElement.appendChild(rectElement);
+
+shouldBe("specularElement.surfaceScale.baseVal", "1");
+
+function repaintTest() {
+    specularElement.surfaceScale.baseVal = 10;
+    shouldBe("specularElement.surfaceScale.baseVal", "10");
+
+    completeTest();
+}
+
+
+var successfullyParsed = true;
+</script>
 </body>
 </html>
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEFloodElement-inherit-flood-color-css-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEFloodElement-inherit-flood-color-css-prop.js
deleted file mode 100644 (file)
index 0f38a70..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-// [Name] SVGFEFLoodElement-inherit-flood-color-attr.js
-// [Expected rendering result] A simple rect with feFlood filter - and a series of PASS messages
-
-description("Tests dynamic updates of the inherited 'flood-color' attribute of the SVGFEFloodElement object")
-createSVGTestCase();
-
-var floodElement = createSVGElement("feFlood");
-floodElement.setAttribute("flood-color", "inherit");
-floodElement.setAttribute("flood-opacity", ".8");
-
-var filterElement = createSVGElement("filter");
-filterElement.setAttribute("id", "myFilter");
-filterElement.setAttribute("filterUnits", "userSpaceOnUse");
-filterElement.setAttribute("x", "0");
-filterElement.setAttribute("y", "0");
-filterElement.setAttribute("width", "200");
-filterElement.setAttribute("height", "200");
-filterElement.setAttribute("style", "flood-color:rgb(145, 32, 103)");
-filterElement.appendChild(floodElement);
-
-var defsElement = createSVGElement("defs");
-defsElement.appendChild(filterElement);
-
-rootSVGElement.appendChild(defsElement);
-rootSVGElement.setAttribute("width", "700");
-rootSVGElement.setAttribute("height", "200");
-
-var rectElement = createSVGElement("rect");
-rectElement.setAttribute("x", 60);
-rectElement.setAttribute("y", 100);
-rectElement.setAttribute("width", 100);
-rectElement.setAttribute("height", 100);
-rectElement.setAttribute("stroke", "#AF1E9D");
-rectElement.setAttribute("stroke-width", "8");
-rectElement.setAttribute("filter", "url(#myFilter)");
-rootSVGElement.appendChild(rectElement);
-
-shouldBeEqualToString("document.defaultView.getComputedStyle(floodElement).getPropertyValue('flood-color')", "rgb(145, 32, 103)");
-
-function repaintTest() {
-    filterElement.setAttribute("style", "flood-color:rgb(64, 128, 103)");
-    shouldBeEqualToString("document.defaultView.getComputedStyle(floodElement).getPropertyValue('flood-color')", "rgb(64, 128, 103)");
-
-    completeTest();
-}
-
-var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFEGaussianBlurElement-svgdom-stdDeviation-call.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFEGaussianBlurElement-svgdom-stdDeviation-call.js
deleted file mode 100644 (file)
index 5f50667..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-// [Name] SVGFEGaussianBlurElement-dom-stdDeviation-prop.js
-// [Expected rendering result] A simple rectangle with feGaussianBlur filter - and a series of PASS messages
-
-description("Tests dynamic updates of the 'stdDeviation' property of the SVGFEGaussianBlurElement object")
-createSVGTestCase();
-
-var blurElement = createSVGElement("feGaussianBlur");
-blurElement.setAttribute("stdDeviation", "5");
-
-var filterElement = createSVGElement("filter");
-filterElement.setAttribute("id", "myFilter");
-filterElement.setAttribute("filterUnits", "userSpaceOnUse");
-filterElement.setAttribute("x", "0");
-filterElement.setAttribute("y", "0");
-filterElement.setAttribute("width", "200");
-filterElement.setAttribute("height", "200");
-filterElement.appendChild(blurElement);
-
-var defsElement = createSVGElement("defs");
-defsElement.appendChild(filterElement);
-
-rootSVGElement.appendChild(defsElement);
-rootSVGElement.setAttribute("width", "700");
-rootSVGElement.setAttribute("height", "200");
-
-var rectElement = createSVGElement("rect");
-rectElement.setAttribute("x", 60);
-rectElement.setAttribute("y", 20);
-rectElement.setAttribute("width", 100);
-rectElement.setAttribute("height", 100);
-rectElement.setAttribute("stroke", "#AF1E9D");
-rectElement.setAttribute("stroke-width", "8");
-rectElement.setAttribute("filter", "url(#myFilter)");
-rootSVGElement.appendChild(rectElement);
-
-shouldBe("blurElement.stdDeviationX.baseVal", "5");
-shouldBe("blurElement.stdDeviationY.baseVal", "5");
-
-function repaintTest() {
-    blurElement.setStdDeviation(10, 10);
-    shouldBe("blurElement.stdDeviationX.baseVal", "10");
-    shouldBe("blurElement.stdDeviationY.baseVal", "10");
-
-    completeTest();
-}
-
-var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-dom-surfaceScale-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-dom-surfaceScale-attr.js
deleted file mode 100644 (file)
index f514dc5..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// [Name] SVGFESpecularLightingElement-dom-surfaceScale-attr.js
-// [Expected rendering result] A shining circle - and a series of PASS messages
-
-description("Tests dynamic updates of the 'surfaceScale' attribute of the SVGFESpecularLightingElement object")
-createSVGTestCase();
-
-var distantElement = createSVGElement("feDistantLight");
-distantElement.setAttribute("azimuth", "45");
-distantElement.setAttribute("elevation", "45");
-
-var specularElement = createSVGElement("feSpecularLighting");
-specularElement.setAttribute("in", "SourceGraphic");
-specularElement.setAttribute("specularConstant", "1");
-specularElement.setAttribute("specularExponent", "1");
-specularElement.setAttribute("surfaceScale", "1");
-specularElement.setAttribute("lighting-color", "greenyellow");
-specularElement.appendChild(distantElement);
-
-var filterElement = createSVGElement("filter");
-filterElement.setAttribute("id", "myFilter");
-filterElement.setAttribute("filterUnits", "objectBoundingBox");
-filterElement.setAttribute("x", "0%");
-filterElement.setAttribute("y", "0%");
-filterElement.setAttribute("width", "100%");
-filterElement.setAttribute("height", "100%");
-filterElement.appendChild(specularElement);
-
-var defsElement = createSVGElement("defs");
-defsElement.appendChild(filterElement);
-
-rootSVGElement.appendChild(defsElement);
-rootSVGElement.setAttribute("width", "200");
-rootSVGElement.setAttribute("height", "200");
-
-var gElement = createSVGElement("g");
-gElement.setAttribute("fill", "black");
-
-var backgroundElement = createSVGElement("rect");
-backgroundElement.setAttribute("x", 60);
-backgroundElement.setAttribute("y", 20);
-backgroundElement.setAttribute("width", 100);
-backgroundElement.setAttribute("height", 60);
-gElement.appendChild(backgroundElement);
-rootSVGElement.appendChild(gElement);
-
-var rectElement = createSVGElement("image");
-rectElement.setAttribute("x", 60);
-rectElement.setAttribute("y", 20);
-rectElement.setAttribute("width", 100);
-rectElement.setAttribute("height", 60);
-rectElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/bumpMap2.png");
-rectElement.setAttribute("filter", "url(#myFilter)");
-rootSVGElement.appendChild(rectElement);
-
-shouldBeEqualToString("specularElement.getAttribute('surfaceScale')", "1");
-
-function repaintTest() {
-    specularElement.setAttribute("surfaceScale", "10");
-    shouldBeEqualToString("specularElement.getAttribute('surfaceScale')", "10");
-
-    completeTest();
-}
-
-var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-svgdom-surfaceScale-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGFESpecularLightingElement-svgdom-surfaceScale-prop.js
deleted file mode 100644 (file)
index 59e85ff..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-// [Name] SVGFESpecularLightingElement-svgdom-surfaceScale-prop.js
-// [Expected rendering result] A shining circle - and a series of PASS messages
-
-description("Tests dynamic updates of the 'surfaceScale' property of the SVGFESpecularLightingElement object")
-createSVGTestCase();
-
-var distantElement = createSVGElement("feDistantLight");
-distantElement.setAttribute("azimuth", "45");
-distantElement.setAttribute("elevation", "45");
-
-var specularElement = createSVGElement("feSpecularLighting");
-specularElement.setAttribute("in", "SourceGraphic");
-specularElement.setAttribute("specularConstant", "1");
-specularElement.setAttribute("specularExponent", "1");
-specularElement.setAttribute("surfaceScale", "1");
-specularElement.setAttribute("lighting-color", "greenyellow");
-specularElement.appendChild(distantElement);
-
-var filterElement = createSVGElement("filter");
-filterElement.setAttribute("id", "myFilter");
-filterElement.setAttribute("filterUnits", "objectBoundingBox");
-filterElement.setAttribute("x", "0%");
-filterElement.setAttribute("y", "0%");
-filterElement.setAttribute("width", "100%");
-filterElement.setAttribute("height", "100%");
-filterElement.appendChild(specularElement);
-
-var defsElement = createSVGElement("defs");
-defsElement.appendChild(filterElement);
-
-rootSVGElement.appendChild(defsElement);
-rootSVGElement.setAttribute("width", "200");
-rootSVGElement.setAttribute("height", "150");
-
-var gElement = createSVGElement("g");
-gElement.setAttribute("fill", "black");
-
-var backgroundElement = createSVGElement("rect");
-backgroundElement.setAttribute("x", 60);
-backgroundElement.setAttribute("y", 20);
-backgroundElement.setAttribute("width", 100);
-backgroundElement.setAttribute("height", 60);
-gElement.appendChild(backgroundElement);
-rootSVGElement.appendChild(gElement);
-
-var rectElement = createSVGElement("image");
-rectElement.setAttribute("x", 60);
-rectElement.setAttribute("y", 20);
-rectElement.setAttribute("width", 100);
-rectElement.setAttribute("height", 60);
-rectElement.setAttributeNS(xlinkNS, "xlink:href", "../W3C-SVG-1.1/resources/bumpMap2.png");
-rectElement.setAttribute("filter", "url(#myFilter)");
-rootSVGElement.appendChild(rectElement);
-
-shouldBe("specularElement.surfaceScale.baseVal", "1");
-
-function repaintTest() {
-    specularElement.surfaceScale.baseVal = 10;
-    shouldBe("specularElement.surfaceScale.baseVal", "10");
-
-    completeTest();
-}
-
-
-var successfullyParsed = true;