[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
zimmermann at webkit.org
zimmermann at webkit.org
Wed Dec 22 15:26:04 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 8c91b83cf7210c48f80e256d3e8c1ed414883b47
Author: zimmermann at webkit.org <zimmermann at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Nov 3 11:13:10 2010 +0000
2010-11-03 Nikolas Zimmermann <nzimmermann at rim.com>
Reviewed by Dirk Schulze.
Convert SVGAnimatedString/SVGStringList to the new SVG*PropertyTearOff concept
https://bugs.webkit.org/show_bug.cgi?id=48898
Convert SVGAnimatedString/SVGStringList to the new svg animated type concept.
SVGStringList is special compared to all other SVG*Lists, as it returns non-live elements.
That means myStringList.getItem(0) = 'foobar' doesn't take effect.
When appending an item to a SVGStringList, that has been taken from another list, it's not removed from the list origin.
That demanded a new SVGStringListPropertyTearOff which does just that.
Tests: svg/W3C-SVG-1.1-SE/types-dom-06-f.svg
svg/dom/SVGStringList.html
* GNUmakefile.am: Add SVGAnimatedString.h / SVGStringListPropertyTearOff.h to build.
* WebCore.gypi: Ditto.
* WebCore.pro: Ditto.
* WebCore.vcproj/WebCore.vcproj: Ditto.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* bindings/scripts/CodeGenerator.pm: Recognize SVGAnimatedString as new style svg animated type. Map SVGStringList to SVGStringListPropertyTearOff.
* bindings/scripts/CodeGeneratorJS.pm: Handle SVGStringListPropertyTearOff in GetSVGPropertyTypes.
* bindings/scripts/CodeGeneratorObjC.pm: Ditto.
* bindings/scripts/CodeGeneratorV8.pm: Ditto.
* svg/DeprecatedSVGAnimatedPropertyTraits.h: Remove SVGAnimatedString handling.
* svg/DeprecatedSVGAnimatedTemplate.h: Ditto.
* svg/SVGAElement.cpp: Renamed target to svgTarget() to avoid clashes with Element::target(), adjust the bindings to call svgTarget() instead of target(), when processing SVGAElement.
(WebCore::SVGAElement::parseMappedAttribute):
(WebCore::SVGAElement::synchronizeProperty):
* svg/SVGAElement.h:
* svg/SVGAltGlyphElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
* svg/SVGAnimatedString.h: Added.
* svg/SVGCursorElement.h: Ditto.
* svg/SVGFEBlendElement.h: Ditto.
* svg/SVGFEColorMatrixElement.h: Ditto.
* svg/SVGFEComponentTransferElement.h: Ditto.
* svg/SVGFECompositeElement.h: Ditto.
* svg/SVGFEConvolveMatrixElement.h: Ditto.
* svg/SVGFEDiffuseLightingElement.h: Ditto.
* svg/SVGFEDisplacementMapElement.h: Ditto.
* svg/SVGFEGaussianBlurElement.h: Ditto.
* svg/SVGFEImageElement.h: Ditto.
* svg/SVGFEMergeNodeElement.h: Ditto.
* svg/SVGFEMorphologyElement.h: Ditto.
* svg/SVGFEOffsetElement.h: Ditto.
* svg/SVGFESpecularLightingElement.h: Ditto.
* svg/SVGFETileElement.h: Ditto.
* svg/SVGFilterElement.h: Ditto.
* svg/SVGFilterPrimitiveStandardAttributes.h: Ditto.
* svg/SVGForeignObjectElement.h: Ditto.
* svg/SVGGradientElement.h: Ditto.
* svg/SVGImageElement.h: Ditto.
* svg/SVGLengthList.idl: Remove leftover SVGListProperty marker.
* svg/SVGMPathElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
* svg/SVGPatternElement.h: Ditto.
* svg/SVGScriptElement.h: Ditto.
* svg/SVGStringList.cpp: Make SVGStringList a plain Vector<String>.
(WebCore::SVGStringList::commitChange): React to SVGStringList changes.
(WebCore::SVGStringList::reset):
(WebCore::SVGStringList::parse):
* svg/SVGStringList.h:
(WebCore::SVGStringList::SVGStringList):
* svg/SVGStyledElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
* svg/SVGTRefElement.h: Ditto.
* svg/SVGTests.cpp: Adapt to SVGStringList API changes.
(WebCore::SVGTests::SVGTests):
(WebCore::SVGTests::hasExtension):
(WebCore::SVGTests::isValid):
(WebCore::SVGTests::parseMappedAttribute):
(WebCore::SVGTests::isKnownAttribute):
* svg/SVGTests.h: Ditto.
(WebCore::SVGTests::requiredFeatures):
(WebCore::SVGTests::requiredExtensions):
(WebCore::SVGTests::systemLanguage):
* svg/SVGTextPathElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
* svg/SVGURIReference.h: Adapt to SVGStringList API changes.
(WebCore::SVGURIReference::~SVGURIReference):
* svg/SVGUseElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
* svg/SVGViewElement.cpp: Adapt to SVGStringList API changes.
(WebCore::SVGViewElement::SVGViewElement):
(WebCore::SVGViewElement::parseMappedAttribute):
* svg/SVGViewElement.h: Ditto.
(WebCore::SVGViewElement::viewTarget):
* svg/properties/SVGAnimatedPropertyMacros.h: Moved GetOwnerElementForType heleprs from SVGAnimatedPropertySynchronizer into this file.
* svg/properties/SVGAnimatedPropertySynchronizer.h:
* svg/properties/SVGPropertyTraits.h: Handle SVGStringList.
* svg/properties/SVGStringListPropertyTearOff.h: Added. This is a simplified version of SVGListPropertyTearOff, tied to SVGStringList and its special demands.
(WebCore::SVGStringListPropertyTearOff::create):
(WebCore::SVGStringListPropertyTearOff::clear):
(WebCore::SVGStringListPropertyTearOff::numberOfItems):
(WebCore::SVGStringListPropertyTearOff::initialize):
(WebCore::SVGStringListPropertyTearOff::getItem):
(WebCore::SVGStringListPropertyTearOff::insertItemBefore):
(WebCore::SVGStringListPropertyTearOff::replaceItem):
(WebCore::SVGStringListPropertyTearOff::removeItem):
(WebCore::SVGStringListPropertyTearOff::appendItem):
(WebCore::SVGStringListPropertyTearOff::SVGStringListPropertyTearOff):
2010-11-03 Nikolas Zimmermann <nzimmermann at rim.com>
Reviewed by Dirk Schulze.
Convert SVGAnimatedString/SVGStringList to the new SVG*PropertyTearOff concept
https://bugs.webkit.org/show_bug.cgi?id=48898
Add a new SVGStringList test ensuring that the items returned by getItem etc. are not live (it's a plain DOMString).
Add a new test from SVG 1.1 2nd edition regarding SVGStringList. The list operations all pass, but because of a bug
in SVGTests requiredFeatures handling (see bug 40887) there's still one red rectangle in the middle.
* platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.checksum: Added.
* platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.png: Added.
* platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.txt: Added.
* svg/W3C-SVG-1.1-SE/types-dom-06-f.svg: Added.
* svg/dom/SVGStringList-expected.txt: Added.
* svg/dom/SVGStringList.html: Added.
* svg/dom/script-tests/SVGStringList.js: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71227 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 5d7416d..8282244 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,22 @@
+2010-11-03 Nikolas Zimmermann <nzimmermann at rim.com>
+
+ Reviewed by Dirk Schulze.
+
+ Convert SVGAnimatedString/SVGStringList to the new SVG*PropertyTearOff concept
+ https://bugs.webkit.org/show_bug.cgi?id=48898
+
+ Add a new SVGStringList test ensuring that the items returned by getItem etc. are not live (it's a plain DOMString).
+ Add a new test from SVG 1.1 2nd edition regarding SVGStringList. The list operations all pass, but because of a bug
+ in SVGTests requiredFeatures handling (see bug 40887) there's still one red rectangle in the middle.
+
+ * platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.checksum: Added.
+ * platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.png: Added.
+ * platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.txt: Added.
+ * svg/W3C-SVG-1.1-SE/types-dom-06-f.svg: Added.
+ * svg/dom/SVGStringList-expected.txt: Added.
+ * svg/dom/SVGStringList.html: Added.
+ * svg/dom/script-tests/SVGStringList.js: Added.
+
2010-11-03 Daniel Bates <dbates at rim.com>
Rubber-stamped by Nikolas Zimmermann.
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.checksum b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.checksum
new file mode 100644
index 0000000..a6a479e
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.checksum
@@ -0,0 +1 @@
+75067bde302796fc224de015777d773d
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.png b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.png
new file mode 100644
index 0000000..d760119
Binary files /dev/null and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.txt b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.txt
new file mode 100644
index 0000000..0e0cd3e
--- /dev/null
+++ b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-06-f-expected.txt
@@ -0,0 +1,22 @@
+layer at (0,0) size 480x360
+ RenderView at (0,0) size 480x360
+layer at (0,0) size 480x360
+ RenderSVGRoot {svg} at (0,0) size 480x360
+ RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+ RenderSVGContainer {g} at (0,0) size 480x360
+ RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+ RenderSVGText {text} at (160,53) size 160x21 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,0) size 160x21
+ chunk 1 (middle anchor) text run 1 at (160.00,70.00) startOffset 0 endOffset 17 width 160.00: "SVGStringList DOM"
+ RenderSVGContainer {g} at (80,100) size 320x100
+ RenderSVGPath {rect} at (80,100) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,100.00)}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+ RenderSVGPath {rect} at (190,100) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(190.00,100.00)}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+ RenderSVGPath {rect} at (300,100) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,100.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+ RenderSVGPath {rect} at (190,100) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(190.00,100.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+ RenderSVGPath {rect} at (300,100) size 100x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,100.00)}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
+ RenderSVGPath {rect} at (0,0) size 480x360 [x=0.00] [y=0.00] [width=480.00] [height=360.00]
+ RenderSVGContainer {g} at (10,310) size 231x37
+ RenderSVGText {text} at (10,310) size 231x37 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,0) size 231x37
+ chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 231.00: "$Revision: 1.5 $"
+ RenderSVGPath {rect} at (0,0) size 480x360 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
diff --git a/LayoutTests/svg/W3C-SVG-1.1-SE/types-dom-06-f.svg b/LayoutTests/svg/W3C-SVG-1.1-SE/types-dom-06-f.svg
new file mode 100644
index 0000000..de6a4c3
--- /dev/null
+++ b/LayoutTests/svg/W3C-SVG-1.1-SE/types-dom-06-f.svg
@@ -0,0 +1,133 @@
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink" onload="runtest()">
+ <!--======================================================================-->
+ <!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
+ <!--= Institute of Technology, European Research Consortium for =-->
+ <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
+ <!--= All Rights Reserved. =-->
+ <!--= See http://www.w3.org/Consortium/Legal/. =-->
+ <!--======================================================================-->
+ <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
+ template-version="1.4" reviewer="CM" author="ED" status="accepted"
+ version="$Revision: 1.5 $" testname="$RCSfile: types-dom-06-f.svg,v $">
+ <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/types.html#InterfaceSVGStringList">
+ <p>
+ This tests parts of the SVGStringList interface. Particularly it tests that
+ strings that are taken from one SVGStringList and then inserted into another
+ SVGStringList duplicates the value instead of removing the value from the
+ first list when it's inserted into the second list.
+ </p>
+ </d:testDescription>
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+ Run the test. No interaction required.
+ </p>
+ </d:operatorScript>
+ <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+
+ </p>
+ <p>
+ The test has passed if there are three green rectangles visible and no red. Red is an indication that the test failed.
+ </p>
+ </d:passCriteria>
+ </d:SVGTestCase>
+ <title id="test-title">$RCSfile: types-dom-06-f.svg,v $</title>
+ <defs>
+ <font-face
+ font-family="SVGFreeSansASCII"
+ unicode-range="U+0-7F">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
+ </font-face-src>
+ </font-face>
+ </defs>
+ <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+
+ <defs>
+ <script type="application/ecmascript">
+ function runtest()
+ {
+ try {
+ var r1 = document.getElementById("r1");
+ var r2 = document.getElementById("r2");
+ var r3 = document.getElementById("r3");
+ var i0 = r1.requiredFeatures.getItem(0);
+ var i1 = r1.requiredFeatures.getItem(1);
+
+ if(i0 != "http://www.w3.org/TR/SVG11/feature#Shape")
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ if(i1 != "this.is.a.bogus.feature.string")
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ if(r1.requiredFeatures.numberOfItems != 2)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ r2.requiredFeatures.appendItem(i1);
+ if(r1.requiredFeatures.numberOfItems != 2)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ if(r2.requiredFeatures.numberOfItems != 1)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ r3.requiredFeatures.insertItemBefore(i0,0);
+ if(r3.requiredFeatures.numberOfItems != 2)
+ {
+ r3.setAttribute("fill", "red");
+ return;
+ }
+ if(r1.requiredFeatures.numberOfItems != 2)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ }
+ catch(e)
+ {
+ var f = document.getElementById("fail");
+ f.setAttribute("fill", "red");
+ }
+ }
+ </script>
+ </defs>
+
+ <text x="50%" y="70" text-anchor="middle">SVGStringList DOM</text>
+
+ <!-- background images -->
+ <g>
+ <rect width="100" height="100" fill="lime" transform="translate(80 100)"/>
+ <rect width="100" height="100" fill="lime" transform="translate(190 100)"/>
+ <rect width="100" height="100" fill="red" transform="translate(300 100)"/>
+ </g>
+
+ <!-- tests -->
+ <rect id="r1" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape this.is.a.bogus.feature.string" width="100" height="100" fill="red" transform="translate(100 100)"/>
+ <rect id="r2" width="100" height="100" fill="red" transform="translate(190 100)"/>
+ <rect id="r3" width="100" height="100" fill="lime" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape" transform="translate(300 100)"/>
+
+ <rect id="fail" width="100%" height="100%" fill="none"/>
+ </g>
+ <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none"
+ fill="black">$Revision: 1.5 $</text>
+ </g>
+ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
+ <!-- comment out this watermark once the test is approved --><!--
+ <g id="draft-watermark">
+ <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
+ </g>-->
+</svg>
diff --git a/LayoutTests/svg/dom/SVGStringList-expected.txt b/LayoutTests/svg/dom/SVGStringList-expected.txt
new file mode 100644
index 0000000..cb4683f
--- /dev/null
+++ b/LayoutTests/svg/dom/SVGStringList-expected.txt
@@ -0,0 +1,20 @@
+This test checks the SVGStringList API - utilizing the requiredFeatures property of SVGRectElement
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+Check initial requiredFeatures values
+PASS rect.requiredFeatures.numberOfItems is 2
+PASS rect.requiredFeatures.getItem(0) is "foo"
+PASS rect.requiredFeatures.getItem(1) is "bar"
+
+Check that getItem() does NOT return live strings, as the IDL defines the return types as plain DOMString
+PASS firstItem = 'test' is "test"
+PASS rect.requiredFeatures.numberOfItems is 2
+PASS rect.requiredFeatures.getItem(0) is "foo"
+PASS rect.requiredFeatures.getItem(1) is "bar"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dom/SVGStringList.html b/LayoutTests/svg/dom/SVGStringList.html
new file mode 100644
index 0000000..1f3dc22
--- /dev/null
+++ b/LayoutTests/svg/dom/SVGStringList.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGStringList.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dom/script-tests/SVGStringList.js b/LayoutTests/svg/dom/script-tests/SVGStringList.js
new file mode 100644
index 0000000..36e5694
--- /dev/null
+++ b/LayoutTests/svg/dom/script-tests/SVGStringList.js
@@ -0,0 +1,21 @@
+description("This test checks the SVGStringList API - utilizing the requiredFeatures property of SVGRectElement");
+
+var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
+var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+rect.setAttribute("requiredFeatures", "foo bar");
+
+debug("");
+debug("Check initial requiredFeatures values");
+shouldBe("rect.requiredFeatures.numberOfItems", "2");
+shouldBeEqualToString("rect.requiredFeatures.getItem(0)", "foo");
+shouldBeEqualToString("rect.requiredFeatures.getItem(1)", "bar");
+
+debug("");
+debug("Check that getItem() does NOT return live strings, as the IDL defines the return types as plain DOMString");
+var firstItem = rect.requiredFeatures.getItem(0);
+shouldBeEqualToString("firstItem = 'test'", "test");
+shouldBe("rect.requiredFeatures.numberOfItems", "2");
+shouldBeEqualToString("rect.requiredFeatures.getItem(0)", "foo");
+shouldBeEqualToString("rect.requiredFeatures.getItem(1)", "bar");
+
+successfullyParsed = true;
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index d30ca7c..d26423a 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,103 @@
+2010-11-03 Nikolas Zimmermann <nzimmermann at rim.com>
+
+ Reviewed by Dirk Schulze.
+
+ Convert SVGAnimatedString/SVGStringList to the new SVG*PropertyTearOff concept
+ https://bugs.webkit.org/show_bug.cgi?id=48898
+
+ Convert SVGAnimatedString/SVGStringList to the new svg animated type concept.
+ SVGStringList is special compared to all other SVG*Lists, as it returns non-live elements.
+ That means myStringList.getItem(0) = 'foobar' doesn't take effect.
+
+ When appending an item to a SVGStringList, that has been taken from another list, it's not removed from the list origin.
+ That demanded a new SVGStringListPropertyTearOff which does just that.
+
+ Tests: svg/W3C-SVG-1.1-SE/types-dom-06-f.svg
+ svg/dom/SVGStringList.html
+
+ * GNUmakefile.am: Add SVGAnimatedString.h / SVGStringListPropertyTearOff.h to build.
+ * WebCore.gypi: Ditto.
+ * WebCore.pro: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * bindings/scripts/CodeGenerator.pm: Recognize SVGAnimatedString as new style svg animated type. Map SVGStringList to SVGStringListPropertyTearOff.
+ * bindings/scripts/CodeGeneratorJS.pm: Handle SVGStringListPropertyTearOff in GetSVGPropertyTypes.
+ * bindings/scripts/CodeGeneratorObjC.pm: Ditto.
+ * bindings/scripts/CodeGeneratorV8.pm: Ditto.
+ * svg/DeprecatedSVGAnimatedPropertyTraits.h: Remove SVGAnimatedString handling.
+ * svg/DeprecatedSVGAnimatedTemplate.h: Ditto.
+ * svg/SVGAElement.cpp: Renamed target to svgTarget() to avoid clashes with Element::target(), adjust the bindings to call svgTarget() instead of target(), when processing SVGAElement.
+ (WebCore::SVGAElement::parseMappedAttribute):
+ (WebCore::SVGAElement::synchronizeProperty):
+ * svg/SVGAElement.h:
+ * svg/SVGAltGlyphElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
+ * svg/SVGAnimatedString.h: Added.
+ * svg/SVGCursorElement.h: Ditto.
+ * svg/SVGFEBlendElement.h: Ditto.
+ * svg/SVGFEColorMatrixElement.h: Ditto.
+ * svg/SVGFEComponentTransferElement.h: Ditto.
+ * svg/SVGFECompositeElement.h: Ditto.
+ * svg/SVGFEConvolveMatrixElement.h: Ditto.
+ * svg/SVGFEDiffuseLightingElement.h: Ditto.
+ * svg/SVGFEDisplacementMapElement.h: Ditto.
+ * svg/SVGFEGaussianBlurElement.h: Ditto.
+ * svg/SVGFEImageElement.h: Ditto.
+ * svg/SVGFEMergeNodeElement.h: Ditto.
+ * svg/SVGFEMorphologyElement.h: Ditto.
+ * svg/SVGFEOffsetElement.h: Ditto.
+ * svg/SVGFESpecularLightingElement.h: Ditto.
+ * svg/SVGFETileElement.h: Ditto.
+ * svg/SVGFilterElement.h: Ditto.
+ * svg/SVGFilterPrimitiveStandardAttributes.h: Ditto.
+ * svg/SVGForeignObjectElement.h: Ditto.
+ * svg/SVGGradientElement.h: Ditto.
+ * svg/SVGImageElement.h: Ditto.
+ * svg/SVGLengthList.idl: Remove leftover SVGListProperty marker.
+ * svg/SVGMPathElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
+ * svg/SVGPatternElement.h: Ditto.
+ * svg/SVGScriptElement.h: Ditto.
+ * svg/SVGStringList.cpp: Make SVGStringList a plain Vector<String>.
+ (WebCore::SVGStringList::commitChange): React to SVGStringList changes.
+ (WebCore::SVGStringList::reset):
+ (WebCore::SVGStringList::parse):
+ * svg/SVGStringList.h:
+ (WebCore::SVGStringList::SVGStringList):
+ * svg/SVGStyledElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
+ * svg/SVGTRefElement.h: Ditto.
+ * svg/SVGTests.cpp: Adapt to SVGStringList API changes.
+ (WebCore::SVGTests::SVGTests):
+ (WebCore::SVGTests::hasExtension):
+ (WebCore::SVGTests::isValid):
+ (WebCore::SVGTests::parseMappedAttribute):
+ (WebCore::SVGTests::isKnownAttribute):
+ * svg/SVGTests.h: Ditto.
+ (WebCore::SVGTests::requiredFeatures):
+ (WebCore::SVGTests::requiredExtensions):
+ (WebCore::SVGTests::systemLanguage):
+ * svg/SVGTextPathElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
+ * svg/SVGURIReference.h: Adapt to SVGStringList API changes.
+ (WebCore::SVGURIReference::~SVGURIReference):
+ * svg/SVGUseElement.h: s/DECLARE_ANIMATED_PROPERTY/DECLARED_ANIMATED_STATIC_PROPERTY_NEW/
+ * svg/SVGViewElement.cpp: Adapt to SVGStringList API changes.
+ (WebCore::SVGViewElement::SVGViewElement):
+ (WebCore::SVGViewElement::parseMappedAttribute):
+ * svg/SVGViewElement.h: Ditto.
+ (WebCore::SVGViewElement::viewTarget):
+ * svg/properties/SVGAnimatedPropertyMacros.h: Moved GetOwnerElementForType heleprs from SVGAnimatedPropertySynchronizer into this file.
+ * svg/properties/SVGAnimatedPropertySynchronizer.h:
+ * svg/properties/SVGPropertyTraits.h: Handle SVGStringList.
+ * svg/properties/SVGStringListPropertyTearOff.h: Added. This is a simplified version of SVGListPropertyTearOff, tied to SVGStringList and its special demands.
+ (WebCore::SVGStringListPropertyTearOff::create):
+ (WebCore::SVGStringListPropertyTearOff::clear):
+ (WebCore::SVGStringListPropertyTearOff::numberOfItems):
+ (WebCore::SVGStringListPropertyTearOff::initialize):
+ (WebCore::SVGStringListPropertyTearOff::getItem):
+ (WebCore::SVGStringListPropertyTearOff::insertItemBefore):
+ (WebCore::SVGStringListPropertyTearOff::replaceItem):
+ (WebCore::SVGStringListPropertyTearOff::removeItem):
+ (WebCore::SVGStringListPropertyTearOff::appendItem):
+ (WebCore::SVGStringListPropertyTearOff::SVGStringListPropertyTearOff):
+
2010-11-03 Zoltan Herczeg <zherczeg at webkit.org>
Reviewed by Dirk Schulze.
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index 16bdaec..c4f927f 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -3038,6 +3038,7 @@ webcore_sources += \
WebCore/svg/properties/SVGProperty.h \
WebCore/svg/properties/SVGPropertyTearOff.h \
WebCore/svg/properties/SVGPropertyTraits.h \
+ WebCore/svg/properties/SVGStringListPropertyTearOff.h \
WebCore/svg/RadialGradientAttributes.h \
WebCore/svg/SVGAElement.cpp \
WebCore/svg/SVGAElement.h \
@@ -3061,6 +3062,7 @@ webcore_sources += \
WebCore/svg/SVGAnimatedPoints.h \
WebCore/svg/SVGAnimatedPreserveAspectRatio.h \
WebCore/svg/SVGAnimatedRect.h \
+ WebCore/svg/SVGAnimatedString.h \
WebCore/svg/SVGAnimateElement.cpp \
WebCore/svg/SVGAnimateElement.h \
WebCore/svg/SVGAnimateMotionElement.cpp \
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index e7ff438..d2c8695 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -3957,6 +3957,7 @@
'svg/properties/SVGProperty.h',
'svg/properties/SVGPropertyTearOff.h',
'svg/properties/SVGPropertyTraits.h',
+ 'svg/properties/SVGStringListPropertyTearOff.h',
'svg/ColorDistance.cpp',
'svg/ColorDistance.h',
'svg/DeprecatedSVGAnimatedProperty.h',
@@ -3996,6 +3997,7 @@
'svg/SVGAnimatedPoints.h',
'svg/SVGAnimatedPreserveAspectRatio.h',
'svg/SVGAnimatedRect.h',
+ 'svg/SVGAnimatedString.h',
'svg/SVGAnimationElement.cpp',
'svg/SVGAnimationElement.h',
'svg/SVGCircleElement.cpp',
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index c028a26..6f5f86a 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -2367,6 +2367,7 @@ HEADERS += \
svg/properties/SVGProperty.h \
svg/properties/SVGPropertyTearOff.h \
svg/properties/SVGPropertyTraits.h \
+ svg/properties/SVGStringListPropertyTearOff.h \
svg/SVGAElement.h \
svg/SVGAltGlyphElement.h \
svg/SVGAngle.h \
@@ -2383,6 +2384,7 @@ HEADERS += \
svg/SVGAnimatedPoints.h \
svg/SVGAnimatedPreserveAspectRatio.h \
svg/SVGAnimatedRect.h \
+ svg/SVGAnimatedString.h \
svg/SVGAnimateElement.h \
svg/SVGAnimateMotionElement.h \
svg/SVGAnimateTransformElement.h \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index efe3559..d6928d8 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -61672,6 +61672,10 @@
>
</File>
<File
+ RelativePath="..\svg\SVGAnimatedString.h"
+ >
+ </File>
+ <File
RelativePath="..\svg\SVGAnimateElement.h"
>
</File>
@@ -62734,6 +62738,10 @@
RelativePath="..\svg\properties\SVGPropertyTraits.h"
>
</File>
+ <File
+ RelativePath="..\svg\properties\SVGStringListPropertyTearOff.h"
+ >
+ </File>
</Filter>
</Filter>
<Filter
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 0bc0fa6..3a5c495 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -113,6 +113,7 @@
084D0E3D11F5816100081E1A /* SVGResources.h in Headers */ = {isa = PBXBuildFile; fileRef = 084D0E3911F5816100081E1A /* SVGResources.h */; settings = {ATTRIBUTES = (Private, ); }; };
084D0E3E11F5816100081E1A /* SVGResourcesCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 084D0E3A11F5816100081E1A /* SVGResourcesCache.cpp */; };
084D0E3F11F5816100081E1A /* SVGResourcesCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 084D0E3B11F5816100081E1A /* SVGResourcesCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 084DB59B128008CC002A6D64 /* SVGAnimatedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 084DB59A128008CC002A6D64 /* SVGAnimatedString.h */; settings = {ATTRIBUTES = (Private, ); }; };
084DBAA10ED39D360038C226 /* WMLVariables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 084DBA9D0ED39D350038C226 /* WMLVariables.cpp */; };
084DBAA20ED39D360038C226 /* WMLVariables.h in Headers */ = {isa = PBXBuildFile; fileRef = 084DBA9E0ED39D360038C226 /* WMLVariables.h */; };
08525E631278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 08525E621278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -243,6 +244,7 @@
08E192530EDE0C3A0087B780 /* WMLErrorHandling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08E192510EDE0C390087B780 /* WMLErrorHandling.cpp */; };
08E192540EDE0C3A0087B780 /* WMLErrorHandling.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E192520EDE0C3A0087B780 /* WMLErrorHandling.h */; };
08E4FE460E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */; };
+ 08E58FF512801CF70045903D /* SVGStringListPropertyTearOff.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E58FF412801CF70045903D /* SVGStringListPropertyTearOff.h */; settings = {ATTRIBUTES = (Private, ); }; };
08E6A2E80EEE035200AC1206 /* WMLPostfieldElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08E6A2E60EEE035200AC1206 /* WMLPostfieldElement.cpp */; };
08E6A2E90EEE035200AC1206 /* WMLPostfieldElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 08E6A2E70EEE035200AC1206 /* WMLPostfieldElement.h */; };
08E6E0F10EFF42BA00029FBF /* WMLFieldSetElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08E6E0EF0EFF42BA00029FBF /* WMLFieldSetElement.cpp */; };
@@ -6136,6 +6138,7 @@
084D0E3911F5816100081E1A /* SVGResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGResources.h; sourceTree = "<group>"; };
084D0E3A11F5816100081E1A /* SVGResourcesCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGResourcesCache.cpp; sourceTree = "<group>"; };
084D0E3B11F5816100081E1A /* SVGResourcesCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGResourcesCache.h; sourceTree = "<group>"; };
+ 084DB59A128008CC002A6D64 /* SVGAnimatedString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedString.h; sourceTree = "<group>"; };
084DBA9D0ED39D350038C226 /* WMLVariables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLVariables.cpp; sourceTree = "<group>"; };
084DBA9E0ED39D360038C226 /* WMLVariables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLVariables.h; sourceTree = "<group>"; };
08525E621278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedStaticPropertyTearOff.h; sourceTree = "<group>"; };
@@ -6253,6 +6256,7 @@
08E192510EDE0C390087B780 /* WMLErrorHandling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLErrorHandling.cpp; sourceTree = "<group>"; };
08E192520EDE0C3A0087B780 /* WMLErrorHandling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLErrorHandling.h; sourceTree = "<group>"; };
08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGLengthCustom.cpp; sourceTree = "<group>"; };
+ 08E58FF412801CF70045903D /* SVGStringListPropertyTearOff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGStringListPropertyTearOff.h; sourceTree = "<group>"; };
08E6A2E60EEE035200AC1206 /* WMLPostfieldElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLPostfieldElement.cpp; sourceTree = "<group>"; };
08E6A2E70EEE035200AC1206 /* WMLPostfieldElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLPostfieldElement.h; sourceTree = "<group>"; };
08E6E0EF0EFF42BA00029FBF /* WMLFieldSetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLFieldSetElement.cpp; sourceTree = "<group>"; };
@@ -11754,6 +11758,7 @@
088A0E01126EF1DB00978F7A /* SVGProperty.h */,
088A0E02126EF1DB00978F7A /* SVGPropertyTearOff.h */,
088A0E03126EF1DB00978F7A /* SVGPropertyTraits.h */,
+ 08E58FF412801CF70045903D /* SVGStringListPropertyTearOff.h */,
);
path = properties;
sourceTree = "<group>";
@@ -16034,6 +16039,7 @@
B22277F40D00BF1F0071B782 /* SVGAnimatedPreserveAspectRatio.idl */,
08C859BF1274575300A5728D /* SVGAnimatedRect.h */,
B22277F50D00BF1F0071B782 /* SVGAnimatedRect.idl */,
+ 084DB59A128008CC002A6D64 /* SVGAnimatedString.h */,
B22277F60D00BF1F0071B782 /* SVGAnimatedString.idl */,
B22277F80D00BF1F0071B782 /* SVGAnimatedTransformList.idl */,
B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */,
@@ -20830,6 +20836,7 @@
088A0E08126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h in Headers */,
08C859C01274575400A5728D /* SVGAnimatedRect.h in Headers */,
08525E631278C00100A84778 /* SVGAnimatedStaticPropertyTearOff.h in Headers */,
+ 084DB59B128008CC002A6D64 /* SVGAnimatedString.h in Headers */,
B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */,
B22279930D00BF220071B782 /* SVGAnimateMotionElement.h in Headers */,
B22279950D00BF220071B782 /* SVGAnimateTransformElement.h in Headers */,
@@ -20973,6 +20980,7 @@
E4AFD0100DAF335500F5F55C /* SVGSMILElement.h in Headers */,
B2227AA90D00BF220071B782 /* SVGStopElement.h in Headers */,
B2227AAC0D00BF220071B782 /* SVGStringList.h in Headers */,
+ 08E58FF512801CF70045903D /* SVGStringListPropertyTearOff.h in Headers */,
B2227AAF0D00BF220071B782 /* SVGStylable.h in Headers */,
B2227AB20D00BF220071B782 /* SVGStyledElement.h in Headers */,
B2227AB40D00BF220071B782 /* SVGStyledLocatableElement.h in Headers */,
diff --git a/WebCore/bindings/scripts/CodeGenerator.pm b/WebCore/bindings/scripts/CodeGenerator.pm
index 834ca0d..641261b 100644
--- a/WebCore/bindings/scripts/CodeGenerator.pm
+++ b/WebCore/bindings/scripts/CodeGenerator.pm
@@ -60,7 +60,8 @@ my %svgNewStyleAnimatedTypeHash = ("SVGAnimatedAngle" => 1, "SVGAnimatedBoolean"
"SVGAnimatedEnumeration" => 1, "SVGAnimatedInteger" => 1,
"SVGAnimatedLength" => 1, "SVGAnimatedLengthList" => 1,
"SVGAnimatedNumber" => 1, "SVGAnimatedNumberList" => 1,
- "SVGAnimatedPreserveAspectRatio" => 1, "SVGAnimatedRect" => 1);
+ "SVGAnimatedPreserveAspectRatio" => 1, "SVGAnimatedRect" => 1,
+ "SVGAnimatedString" => 1);
my %svgAnimatedTypeHash = ("SVGAnimatedAngle" => 1, "SVGAnimatedBoolean" => 1,
"SVGAnimatedEnumeration" => 1, "SVGAnimatedInteger" => 1,
@@ -83,7 +84,8 @@ my %svgNativeType = (
"SVGNumber" => "SVGPropertyTearOff<float>",
"SVGNumberList" => "SVGListPropertyTearOff<SVGNumberList>",
"SVGPreserveAspectRatio" => "SVGPropertyTearOff<SVGPreserveAspectRatio>",
- "SVGRect" => "SVGPropertyTearOff<FloatRect>"
+ "SVGRect" => "SVGPropertyTearOff<FloatRect>",
+ "SVGStringList" => "SVGStringListPropertyTearOff"
);
# Cache of IDL file pathnames.
@@ -480,13 +482,18 @@ sub AttributeNameForGetterAndSetter
my ($generator, $attribute) = @_;
my $attributeName = $attribute->signature->name;
+ my $attributeType = $generator->StripModule($attribute->signature->type);
# Avoid clash with C++ keyword.
$attributeName = "_operator" if $attributeName eq "operator";
+ # SVGAElement defines a non-virtual "String& target() const" method which clashes with "virtual String target() const" in Element.
+ # To solve this issue the SVGAElement method was renamed to "svgTarget", take care of that when calling this method.
+ $attributeName = "svgTarget" if $attributeName eq "target" and $attributeType eq "SVGAnimatedString";
+
# SVG animated types need to use a special attribute name.
# The rest of the special casing for SVG animated types is handled in the language-specific code generators.
- $attributeName .= "Animated" if $generator->IsSVGAnimatedType($generator->StripModule($attribute->signature->type));
+ $attributeName .= "Animated" if $generator->IsSVGAnimatedType($attributeType);
return $attributeName;
}
diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm
index 5e4a669..919bee9 100644
--- a/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -2506,6 +2506,9 @@ sub GetSVGPropertyTypes
$svgListPropertyType = $svgWrappedNativeType;
$headerIncludes{"$svgWrappedNativeType.h"} = 1;
$headerIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1;
+ } elsif ($svgNativeType =~ /SVGStringListPropertyTearOff/) {
+ $svgListPropertyType = "SVGStringList";
+ $headerIncludes{"$svgWrappedNativeType.h"} = 1;
}
return ($svgPropertyType, $svgListPropertyType, $svgNativeType);
@@ -2679,7 +2682,13 @@ sub NativeToJSValue
# Convert from abstract SVGProperty to real type, so the right toJS() method can be invoked.
$value = "static_cast<" . GetNativeType($type) . ">($value)";
} elsif ($codeGenerator->IsSVGTypeNeedingTearOff($type) and not $implClassName =~ /List$/) {
- $value = $codeGenerator->GetSVGTypeNeedingTearOff($type) . "::create($value)";
+ my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($type);
+ if ($tearOffType eq "SVGStringListPropertyTearOff") {
+ my $extraImp = "GetOwnerElementForType<$implClassName, IsDerivedFromSVGElement<$implClassName>::value>::ownerElement(imp), ";
+ $value = $codeGenerator->GetSVGTypeNeedingTearOff($type) . "::create($extraImp$value)";
+ } else {
+ $value = $codeGenerator->GetSVGTypeNeedingTearOff($type) . "::create($value)";
+ }
}
return "toJS(exec, $globalObject, WTF::getPtr($value))";
diff --git a/WebCore/bindings/scripts/CodeGeneratorObjC.pm b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
index 3b6cdf8..eed8cf9 100644
--- a/WebCore/bindings/scripts/CodeGeneratorObjC.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
@@ -690,6 +690,8 @@ sub GetSVGPropertyTypes
} elsif ($svgNativeType =~ /SVGListPropertyTearOff/) {
$svgListPropertyType = "WebCore::$svgWrappedNativeType";
$svgListPropertyType =~ s/</\<WebCore::/;
+ } elsif ($svgNativeType =~ /SVGStringListPropertyTearOff/) {
+ $svgListPropertyType = "WebCore::SVGStringList";
}
return ($svgPropertyType, $svgListPropertyType, $svgNativeType);
@@ -1024,7 +1026,13 @@ sub GenerateHeader
push(@internalHeaderContent, "\n#import <WebCore/$className.h>\n\n");
push(@internalHeaderContent, "#import <WebCore/SVGAnimatedPropertyTearOff.h>\n\n") if $svgPropertyType;
- push(@internalHeaderContent, "#import <WebCore/SVGAnimatedListPropertyTearOff.h>\n\n") if $svgListPropertyType;
+ if ($svgListPropertyType) {
+ if ($svgListPropertyType eq "WebCore::SVGStringList") {
+ push(@internalHeaderContent, "#import <WebCore/SVGStringListPropertyTearOff.h>\n\n");
+ } else {
+ push(@internalHeaderContent, "#import <WebCore/SVGAnimatedListPropertyTearOff.h>\n\n");
+ }
+ }
push(@internalHeaderContent, $interfaceAvailabilityVersionCheck) if length $interfaceAvailabilityVersion;
if ($interfaceName eq "Node") {
@@ -1319,7 +1327,12 @@ sub GenerateImplementation
} elsif (ConversionNeeded($attribute->signature->type)) {
if ($codeGenerator->IsSVGTypeNeedingTearOff($attribute->signature->type) and not $implClassName =~ /List$/) {
my $idlTypeWithNamespace = GetSVGTypeWithNamespace($attribute->signature->type);
- $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($getterContentHead";
+ if ($idlTypeWithNamespace eq "WebCore::SVGStringListPropertyTearOff") {
+ my $extraImp = "WebCore::GetOwnerElementForType<$implClassNameWithNamespace, WebCore::IsDerivedFromSVGElement<$implClassNameWithNamespace>::value>::ownerElement(IMPL), ";
+ $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($extraImp$getterContentHead";
+ } else {
+ $getterContentHead = "kit(WTF::getPtr(${idlTypeWithNamespace}::create($getterContentHead";
+ }
$getterContentTail .= ")))";
} else {
$getterContentHead = "kit(WTF::getPtr($getterContentHead";
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index d7f320e..ecfd8ae 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -226,6 +226,9 @@ sub GetSVGPropertyTypes
} elsif ($svgNativeType =~ /SVGListPropertyTearOff/) {
$svgListPropertyType = $svgWrappedNativeType;
$implIncludes{"SVGAnimatedListPropertyTearOff.h"} = 1,
+ } elsif ($svgNativeType =~ /SVGStringListPropertyTearOff/) {
+ $svgListPropertyType = "SVGStringList";
+ $implIncludes{"$svgWrappedNativeType.h"} = 1;
}
return ($svgPropertyType, $svgListPropertyType, $svgNativeType);
@@ -921,8 +924,13 @@ END
push(@implContentDecls, " return toV8(static_cast<$svgNativeType*>($result));\n");
} elsif ($codeGenerator->IsSVGTypeNeedingTearOff($attrType) and not $implClassName =~ /List$/) {
$implIncludes{"V8$attrType.h"} = 1;
- my $svgNativeType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType);
- push(@implContentDecls, " return toV8(WTF::getPtr(${svgNativeType}::create($result)));\n");
+ my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($attrType);
+ if ($tearOffType eq "SVGStringListPropertyTearOff") {
+ my $extraImp = "GetOwnerElementForType<$implClassName, IsDerivedFromSVGElement<$implClassName>::value>::ownerElement(imp), ";
+ push(@implContentDecls, " return toV8(WTF::getPtr(${tearOffType}::create($extraImp$result)));\n");
+ } else {
+ push(@implContentDecls, " return toV8(WTF::getPtr(${tearOffType}::create($result)));\n");
+ }
} elsif ($attrIsPodType) {
$implIncludes{"V8${attrType}.h"} = 1;
push(@implContentDecls, " return toV8(wrapper.release().get());\n");
diff --git a/WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h b/WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h
index 66be29c..e20a4c7 100644
--- a/WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h
+++ b/WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h
@@ -30,18 +30,6 @@ namespace WebCore {
template<typename Type>
struct DeprecatedSVGAnimatedPropertyTraits : public Noncopyable { };
-// SVGAnimatedString
-template<>
-struct DeprecatedSVGAnimatedPropertyTraits<String> : public Noncopyable {
- typedef const String& PassType;
- typedef String ReturnType;
- typedef String StoredType;
-
- static ReturnType null() { return String(); }
- static ReturnType toReturnType(const StoredType& type) { return type; }
- static String toString(PassType type) { return type; }
-};
-
// SVGAnimatedTransformList
template<>
struct DeprecatedSVGAnimatedPropertyTraits<SVGTransformList*> : public Noncopyable {
diff --git a/WebCore/svg/DeprecatedSVGAnimatedTemplate.h b/WebCore/svg/DeprecatedSVGAnimatedTemplate.h
index 252fa0b..9258692 100644
--- a/WebCore/svg/DeprecatedSVGAnimatedTemplate.h
+++ b/WebCore/svg/DeprecatedSVGAnimatedTemplate.h
@@ -152,7 +152,6 @@ namespace WebCore {
}
// Common type definitions, to ease IDL generation.
- typedef DeprecatedSVGAnimatedTemplate<String> SVGAnimatedString;
typedef DeprecatedSVGAnimatedTemplate<SVGTransformList*> SVGAnimatedTransformList;
}
diff --git a/WebCore/svg/SVGAElement.cpp b/WebCore/svg/SVGAElement.cpp
index 56078ad..8e429d0 100644
--- a/WebCore/svg/SVGAElement.cpp
+++ b/WebCore/svg/SVGAElement.cpp
@@ -71,7 +71,7 @@ String SVGAElement::title() const
void SVGAElement::parseMappedAttribute(Attribute* attr)
{
if (attr->name() == SVGNames::targetAttr)
- setTargetBaseValue(attr->value());
+ setSVGTargetBaseValue(attr->value());
else {
if (SVGURIReference::parseMappedAttribute(attr))
return;
@@ -105,14 +105,14 @@ void SVGAElement::synchronizeProperty(const QualifiedName& attrName)
SVGStyledTransformableElement::synchronizeProperty(attrName);
if (attrName == anyQName()) {
- synchronizeTarget();
+ synchronizeSVGTarget();
synchronizeHref();
synchronizeExternalResourcesRequired();
return;
}
if (attrName == SVGNames::targetAttr)
- synchronizeTarget();
+ synchronizeSVGTarget();
else if (SVGURIReference::isKnownAttribute(attrName))
synchronizeHref();
else if (SVGExternalResourcesRequired::isKnownAttribute(attrName))
diff --git a/WebCore/svg/SVGAElement.h b/WebCore/svg/SVGAElement.h
index 0effda2..f919a6e 100644
--- a/WebCore/svg/SVGAElement.h
+++ b/WebCore/svg/SVGAElement.h
@@ -46,6 +46,7 @@ namespace WebCore {
virtual bool isValid() const { return SVGTests::isValid(); }
virtual String title() const;
+ virtual String target() const { return svgTarget(); }
virtual void parseMappedAttribute(Attribute*);
virtual void svgAttributeChanged(const QualifiedName&);
@@ -62,10 +63,13 @@ namespace WebCore {
virtual bool childShouldCreateRenderer(Node*) const;
- DECLARE_ANIMATED_PROPERTY(SVGAElement, SVGNames::targetAttr, String, Target, target)
+ // This defines a non-virtual "String& target() const" method before, that would clash with "virtual String target() const"
+ // in Element. That's why it's now named "String& svgTarget() const", to avoid the clash. The CodeGenerators take care
+ // of calling svgTargetAnimated() instead of targetAnimated(), see CodeGenerator.pm.
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGAElement, SVGNames::targetAttr, String, SVGTarget, svgTarget)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGAElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGAElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGAElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGAltGlyphElement.h b/WebCore/svg/SVGAltGlyphElement.h
index ae0903a..b9d0bc0 100644
--- a/WebCore/svg/SVGAltGlyphElement.h
+++ b/WebCore/svg/SVGAltGlyphElement.h
@@ -52,7 +52,7 @@ namespace WebCore {
virtual bool childShouldCreateRenderer(Node*) const;
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGAltGlyphElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGAltGlyphElement, XLinkNames::hrefAttr, String, Href, href)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGAnimatedString.h b/WebCore/svg/SVGAnimatedString.h
new file mode 100644
index 0000000..c8b842f
--- /dev/null
+++ b/WebCore/svg/SVGAnimatedString.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SVGAnimatedString_h
+#define SVGAnimatedString_h
+
+#if ENABLE(SVG)
+#include "SVGAnimatedStaticPropertyTearOff.h"
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+typedef SVGAnimatedStaticPropertyTearOff<String> SVGAnimatedString;
+
+} // namespace WebCore
+
+#endif // ENABLE(SVG)
+#endif
diff --git a/WebCore/svg/SVGCursorElement.h b/WebCore/svg/SVGCursorElement.h
index e09739a..d3bcb8b 100644
--- a/WebCore/svg/SVGCursorElement.h
+++ b/WebCore/svg/SVGCursorElement.h
@@ -58,7 +58,7 @@ namespace WebCore {
DECLARE_ANIMATED_PROPERTY_NEW(SVGCursorElement, SVGNames::yAttr, SVGLength, Y, y)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGCursorElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGCursorElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGCursorElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGFEBlendElement.h b/WebCore/svg/SVGFEBlendElement.h
index a0010be..44d45bf 100644
--- a/WebCore/svg/SVGFEBlendElement.h
+++ b/WebCore/svg/SVGFEBlendElement.h
@@ -38,8 +38,8 @@ private:
virtual void synchronizeProperty(const QualifiedName&);
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
- DECLARE_ANIMATED_PROPERTY(SVGFEBlendElement, SVGNames::inAttr, String, In1, in1)
- DECLARE_ANIMATED_PROPERTY(SVGFEBlendElement, SVGNames::in2Attr, String, In2, in2)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEBlendElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEBlendElement, SVGNames::in2Attr, String, In2, in2)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEBlendElement, SVGNames::modeAttr, int, Mode, mode)
};
diff --git a/WebCore/svg/SVGFEColorMatrixElement.h b/WebCore/svg/SVGFEColorMatrixElement.h
index 9e26c7f..dcdeb41 100644
--- a/WebCore/svg/SVGFEColorMatrixElement.h
+++ b/WebCore/svg/SVGFEColorMatrixElement.h
@@ -40,7 +40,7 @@ private:
virtual void synchronizeProperty(const QualifiedName&);
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
- DECLARE_ANIMATED_PROPERTY(SVGFEColorMatrixElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEColorMatrixElement, SVGNames::inAttr, String, In1, in1)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEColorMatrixElement, SVGNames::typeAttr, int, Type, type)
DECLARE_ANIMATED_LIST_PROPERTY_NEW(SVGFEColorMatrixElement, SVGNames::valuesAttr, SVGNumberList, Values, values)
};
diff --git a/WebCore/svg/SVGFEComponentTransferElement.h b/WebCore/svg/SVGFEComponentTransferElement.h
index 957661e..fe0e562 100644
--- a/WebCore/svg/SVGFEComponentTransferElement.h
+++ b/WebCore/svg/SVGFEComponentTransferElement.h
@@ -38,7 +38,7 @@ private:
virtual void synchronizeProperty(const QualifiedName&);
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
- DECLARE_ANIMATED_PROPERTY(SVGFEComponentTransferElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEComponentTransferElement, SVGNames::inAttr, String, In1, in1)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGFECompositeElement.h b/WebCore/svg/SVGFECompositeElement.h
index 35de97e..4870848 100644
--- a/WebCore/svg/SVGFECompositeElement.h
+++ b/WebCore/svg/SVGFECompositeElement.h
@@ -39,8 +39,8 @@ private:
virtual void synchronizeProperty(const QualifiedName&);
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
- DECLARE_ANIMATED_PROPERTY(SVGFECompositeElement, SVGNames::inAttr, String, In1, in1)
- DECLARE_ANIMATED_PROPERTY(SVGFECompositeElement, SVGNames::in2Attr, String, In2, in2)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFECompositeElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFECompositeElement, SVGNames::in2Attr, String, In2, in2)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFECompositeElement, SVGNames::operatorAttr, int, _operator, _operator)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFECompositeElement, SVGNames::k1Attr, float, K1, k1)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFECompositeElement, SVGNames::k2Attr, float, K2, k2)
diff --git a/WebCore/svg/SVGFEConvolveMatrixElement.h b/WebCore/svg/SVGFEConvolveMatrixElement.h
index cb9a3f0..a5a8f63 100644
--- a/WebCore/svg/SVGFEConvolveMatrixElement.h
+++ b/WebCore/svg/SVGFEConvolveMatrixElement.h
@@ -44,7 +44,7 @@ private:
static const AtomicString& kernelUnitLengthXIdentifier();
static const AtomicString& kernelUnitLengthYIdentifier();
- DECLARE_ANIMATED_PROPERTY(SVGFEConvolveMatrixElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEConvolveMatrixElement, SVGNames::inAttr, String, In1, in1)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEConvolveMatrixElement, SVGNames::orderXAttr, long, OrderX, orderX)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEConvolveMatrixElement, SVGNames::orderYAttr, long, OrderY, orderY)
DECLARE_ANIMATED_LIST_PROPERTY_NEW(SVGFEConvolveMatrixElement, SVGNames::kernelMatrixAttr, SVGNumberList, KernelMatrix, kernelMatrix)
diff --git a/WebCore/svg/SVGFEDiffuseLightingElement.h b/WebCore/svg/SVGFEDiffuseLightingElement.h
index b333f7d..fa946e6 100644
--- a/WebCore/svg/SVGFEDiffuseLightingElement.h
+++ b/WebCore/svg/SVGFEDiffuseLightingElement.h
@@ -46,7 +46,7 @@ private:
static const AtomicString& kernelUnitLengthXIdentifier();
static const AtomicString& kernelUnitLengthYIdentifier();
- DECLARE_ANIMATED_PROPERTY(SVGFEDiffuseLightingElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDiffuseLightingElement, SVGNames::inAttr, String, In1, in1)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDiffuseLightingElement, SVGNames::diffuseConstantAttr, float, DiffuseConstant, diffuseConstant)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDiffuseLightingElement, SVGNames::surfaceScaleAttr, float, SurfaceScale, surfaceScale)
DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFEDiffuseLightingElement, SVGNames::kernelUnitLengthAttr, kernelUnitLengthXIdentifier(), float, KernelUnitLengthX, kernelUnitLengthX)
diff --git a/WebCore/svg/SVGFEDisplacementMapElement.h b/WebCore/svg/SVGFEDisplacementMapElement.h
index 8321997..a2c9e43 100644
--- a/WebCore/svg/SVGFEDisplacementMapElement.h
+++ b/WebCore/svg/SVGFEDisplacementMapElement.h
@@ -39,8 +39,8 @@ private:
virtual void synchronizeProperty(const QualifiedName&);
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
- DECLARE_ANIMATED_PROPERTY(SVGFEDisplacementMapElement, SVGNames::inAttr, String, In1, in1)
- DECLARE_ANIMATED_PROPERTY(SVGFEDisplacementMapElement, SVGNames::in2Attr, String, In2, in2)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDisplacementMapElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDisplacementMapElement, SVGNames::in2Attr, String, In2, in2)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDisplacementMapElement, SVGNames::xChannelSelectorAttr, int, XChannelSelector, xChannelSelector)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDisplacementMapElement, SVGNames::yChannelSelectorAttr, int, YChannelSelector, yChannelSelector)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEDisplacementMapElement, SVGNames::scaleAttr, float, Scale, scale)
diff --git a/WebCore/svg/SVGFEGaussianBlurElement.h b/WebCore/svg/SVGFEGaussianBlurElement.h
index a4610af..3ddb437 100644
--- a/WebCore/svg/SVGFEGaussianBlurElement.h
+++ b/WebCore/svg/SVGFEGaussianBlurElement.h
@@ -44,7 +44,7 @@ private:
static const AtomicString& stdDeviationXIdentifier();
static const AtomicString& stdDeviationYIdentifier();
- DECLARE_ANIMATED_PROPERTY(SVGFEGaussianBlurElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEGaussianBlurElement, SVGNames::inAttr, String, In1, in1)
DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFEGaussianBlurElement, SVGNames::stdDeviationAttr, stdDeviationXIdentifier(), float, StdDeviationX, stdDeviationX)
DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFEGaussianBlurElement, SVGNames::stdDeviationAttr, stdDeviationYIdentifier(), float, StdDeviationY, stdDeviationY)
};
diff --git a/WebCore/svg/SVGFEImageElement.h b/WebCore/svg/SVGFEImageElement.h
index 74dfa74..0dcf2c8 100644
--- a/WebCore/svg/SVGFEImageElement.h
+++ b/WebCore/svg/SVGFEImageElement.h
@@ -59,7 +59,7 @@ private:
DECLARE_ANIMATED_PROPERTY_NEW(SVGFEImageElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGFEImageElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEImageElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEImageElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGFEMergeNodeElement.h b/WebCore/svg/SVGFEMergeNodeElement.h
index 89506dc..a40d7a2 100644
--- a/WebCore/svg/SVGFEMergeNodeElement.h
+++ b/WebCore/svg/SVGFEMergeNodeElement.h
@@ -22,8 +22,8 @@
#define SVGFEMergeNodeElement_h
#if ENABLE(SVG) && ENABLE(FILTERS)
+#include "SVGAnimatedPropertyMacros.h"
#include "SVGElement.h"
-#include "SVGNames.h"
namespace WebCore {
@@ -38,7 +38,7 @@ namespace WebCore {
virtual void svgAttributeChanged(const QualifiedName&);
virtual void synchronizeProperty(const QualifiedName&);
- DECLARE_ANIMATED_PROPERTY(SVGFEMergeNodeElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEMergeNodeElement, SVGNames::inAttr, String, In1, in1)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGFEMorphologyElement.h b/WebCore/svg/SVGFEMorphologyElement.h
index 39b9333..845294b 100644
--- a/WebCore/svg/SVGFEMorphologyElement.h
+++ b/WebCore/svg/SVGFEMorphologyElement.h
@@ -43,7 +43,7 @@ private:
static const AtomicString& radiusXIdentifier();
static const AtomicString& radiusYIdentifier();
- DECLARE_ANIMATED_PROPERTY(SVGFEMorphologyElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEMorphologyElement, SVGNames::inAttr, String, In1, in1)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEMorphologyElement, SVGNames::operatorAttr, int, _operator, _operator)
DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFEMorphologyElement, SVGNames::radiusAttr, radiusXIdentifier(), float, RadiusX, radiusX)
DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFEMorphologyElement, SVGNames::radiusAttr, radiusYIdentifier(), float, RadiusY, radiusY)
diff --git a/WebCore/svg/SVGFEOffsetElement.h b/WebCore/svg/SVGFEOffsetElement.h
index b09b1d0..6f5e843 100644
--- a/WebCore/svg/SVGFEOffsetElement.h
+++ b/WebCore/svg/SVGFEOffsetElement.h
@@ -39,7 +39,7 @@ private:
virtual void synchronizeProperty(const QualifiedName&);
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
- DECLARE_ANIMATED_PROPERTY(SVGFEOffsetElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEOffsetElement, SVGNames::inAttr, String, In1, in1)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEOffsetElement, SVGNames::dxAttr, float, Dx, dx)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEOffsetElement, SVGNames::dyAttr, float, Dy, dy)
};
diff --git a/WebCore/svg/SVGFESpecularLightingElement.h b/WebCore/svg/SVGFESpecularLightingElement.h
index 24a1c84..c5d3ac4 100644
--- a/WebCore/svg/SVGFESpecularLightingElement.h
+++ b/WebCore/svg/SVGFESpecularLightingElement.h
@@ -42,7 +42,7 @@ private:
static const AtomicString& kernelUnitLengthXIdentifier();
static const AtomicString& kernelUnitLengthYIdentifier();
- DECLARE_ANIMATED_PROPERTY(SVGFESpecularLightingElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFESpecularLightingElement, SVGNames::inAttr, String, In1, in1)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFESpecularLightingElement, SVGNames::specularConstantAttr, float, SpecularConstant, specularConstant)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFESpecularLightingElement, SVGNames::specularExponentAttr, float, SpecularExponent, specularExponent)
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFESpecularLightingElement, SVGNames::surfaceScaleAttr, float, SurfaceScale, surfaceScale)
diff --git a/WebCore/svg/SVGFETileElement.h b/WebCore/svg/SVGFETileElement.h
index b943c55..ffa9d81 100644
--- a/WebCore/svg/SVGFETileElement.h
+++ b/WebCore/svg/SVGFETileElement.h
@@ -38,7 +38,7 @@ private:
virtual void synchronizeProperty(const QualifiedName&);
virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*);
- DECLARE_ANIMATED_PROPERTY(SVGFETileElement, SVGNames::inAttr, String, In1, in1)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFETileElement, SVGNames::inAttr, String, In1, in1)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGFilterElement.h b/WebCore/svg/SVGFilterElement.h
index ce9f75e..4efb958 100644
--- a/WebCore/svg/SVGFilterElement.h
+++ b/WebCore/svg/SVGFilterElement.h
@@ -72,7 +72,7 @@ private:
DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFilterElement, SVGNames::filterResAttr, filterResYIdentifier(), long, FilterResY, filterResY)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGFilterElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFilterElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFilterElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
index 6202888..6ac1962 100644
--- a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
+++ b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
@@ -66,7 +66,7 @@ private:
DECLARE_ANIMATED_PROPERTY_NEW(SVGFilterPrimitiveStandardAttributes, SVGNames::yAttr, SVGLength, Y, y)
DECLARE_ANIMATED_PROPERTY_NEW(SVGFilterPrimitiveStandardAttributes, SVGNames::widthAttr, SVGLength, Width, width)
DECLARE_ANIMATED_PROPERTY_NEW(SVGFilterPrimitiveStandardAttributes, SVGNames::heightAttr, SVGLength, Height, height)
- DECLARE_ANIMATED_PROPERTY(SVGFilterPrimitiveStandardAttributes, SVGNames::resultAttr, String, Result, result)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFilterPrimitiveStandardAttributes, SVGNames::resultAttr, String, Result, result)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGForeignObjectElement.h b/WebCore/svg/SVGForeignObjectElement.h
index 55ddb3c..ee17c19 100644
--- a/WebCore/svg/SVGForeignObjectElement.h
+++ b/WebCore/svg/SVGForeignObjectElement.h
@@ -58,7 +58,7 @@ namespace WebCore {
DECLARE_ANIMATED_PROPERTY_NEW(SVGForeignObjectElement, SVGNames::heightAttr, SVGLength, Height, height)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGForeignObjectElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGForeignObjectElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGForeignObjectElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGGradientElement.h b/WebCore/svg/SVGGradientElement.h
index fdfb72c..6e23608 100644
--- a/WebCore/svg/SVGGradientElement.h
+++ b/WebCore/svg/SVGGradientElement.h
@@ -54,7 +54,7 @@ namespace WebCore {
DECLARE_ANIMATED_PROPERTY(SVGGradientElement, SVGNames::gradientTransformAttr, SVGTransformList*, GradientTransform, gradientTransform)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGGradientElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGGradientElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGGradientElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGImageElement.h b/WebCore/svg/SVGImageElement.h
index 33e2f39..b9f3865 100644
--- a/WebCore/svg/SVGImageElement.h
+++ b/WebCore/svg/SVGImageElement.h
@@ -73,7 +73,7 @@ namespace WebCore {
DECLARE_ANIMATED_PROPERTY_NEW(SVGImageElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGImageElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGImageElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGImageElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGLengthList.idl b/WebCore/svg/SVGLengthList.idl
index 73a8d21..a5771d2 100644
--- a/WebCore/svg/SVGLengthList.idl
+++ b/WebCore/svg/SVGLengthList.idl
@@ -26,7 +26,7 @@
module svg {
- interface [Conditional=SVG, SVGListProperty=SVGLengthList] SVGLengthList {
+ interface [Conditional=SVG] SVGLengthList {
readonly attribute unsigned long numberOfItems;
void clear()
diff --git a/WebCore/svg/SVGMPathElement.h b/WebCore/svg/SVGMPathElement.h
index c025cf9..3d10e5b 100644
--- a/WebCore/svg/SVGMPathElement.h
+++ b/WebCore/svg/SVGMPathElement.h
@@ -44,7 +44,7 @@ namespace WebCore {
virtual void synchronizeProperty(const QualifiedName&);
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGMPathElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGMPathElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGMPathElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGPatternElement.h b/WebCore/svg/SVGPatternElement.h
index 79152c8..ce63a22 100644
--- a/WebCore/svg/SVGPatternElement.h
+++ b/WebCore/svg/SVGPatternElement.h
@@ -73,7 +73,7 @@ namespace WebCore {
DECLARE_ANIMATED_PROPERTY(SVGPatternElement, SVGNames::patternTransformAttr, SVGTransformList*, PatternTransform, patternTransform)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGPatternElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPatternElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPatternElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGScriptElement.h b/WebCore/svg/SVGScriptElement.h
index d4eb61d..e8695fb 100644
--- a/WebCore/svg/SVGScriptElement.h
+++ b/WebCore/svg/SVGScriptElement.h
@@ -76,7 +76,7 @@ namespace WebCore {
virtual void dispatchErrorEvent();
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGScriptElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGScriptElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGScriptElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGStringList.cpp b/WebCore/svg/SVGStringList.cpp
index 9f4809f..3eb392a 100644
--- a/WebCore/svg/SVGStringList.cpp
+++ b/WebCore/svg/SVGStringList.cpp
@@ -23,29 +23,31 @@
#if ENABLE(SVG)
#include "SVGStringList.h"
+#include "SVGElement.h"
#include "SVGParserUtilities.h"
namespace WebCore {
-SVGStringList::SVGStringList(const QualifiedName& attributeName)
- : SVGList<String>(attributeName)
+void SVGStringList::commitChange(SVGElement* contextElement)
{
+ ASSERT(contextElement);
+ contextElement->invalidateSVGAttributes();
+ contextElement->svgAttributeChanged(m_attributeName);
}
-void SVGStringList::reset(const String& str)
+void SVGStringList::reset(const String& string)
{
- ExceptionCode ec = 0;
+ parse(string, ' ');
- parse(str, ' ');
- if (numberOfItems() == 0)
- appendItem(String(""), ec); // Create empty string...
+ // Add empty string, if list is empty.
+ if (isEmpty())
+ append(String(""));
}
void SVGStringList::parse(const String& data, UChar delimiter)
{
// TODO : more error checking/reporting
- ExceptionCode ec = 0;
- clear(ec);
+ clear();
const UChar* ptr = data.characters();
const UChar* end = ptr + data.length();
@@ -55,7 +57,7 @@ void SVGStringList::parse(const String& data, UChar delimiter)
ptr++;
if (ptr == start)
break;
- appendItem(String(start, ptr - start), ec);
+ append(String(start, ptr - start));
skipOptionalSpacesOrDelimiter(ptr, end, delimiter);
}
}
diff --git a/WebCore/svg/SVGStringList.h b/WebCore/svg/SVGStringList.h
index e8841ea..c741b9d 100644
--- a/WebCore/svg/SVGStringList.h
+++ b/WebCore/svg/SVGStringList.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann at kde.org>
* Copyright (C) 2004, 2005, 2006 Rob Buis <buis at kde.org>
*
* This library is free software; you can redistribute it and/or
@@ -22,23 +22,32 @@
#define SVGStringList_h
#if ENABLE(SVG)
-#include "PlatformString.h"
-#include "SVGList.h"
+#include "QualifiedName.h"
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
namespace WebCore {
- class SVGStringList : public SVGList<String> {
- public:
- static PassRefPtr<SVGStringList> create(const QualifiedName& attributeName) { return adoptRef(new SVGStringList(attributeName)); }
+class SVGElement;
- void reset(const String& str);
- void parse(const String& data, UChar delimiter = ',');
-
- private:
- SVGStringList(const QualifiedName&);
- };
+class SVGStringList : public Vector<String> {
+public:
+ SVGStringList(const QualifiedName& attributeName)
+ : m_attributeName(attributeName)
+ {
+ }
+
+ void reset(const String&);
+ void parse(const String&, UChar delimiter = ',');
+
+ // Only used by SVGStringListPropertyTearOff.
+ void commitChange(SVGElement* contextElement);
+
+private:
+ const QualifiedName& m_attributeName;
+};
} // namespace WebCore
#endif // ENABLE(SVG)
-#endif // SVGStringList_h
+#endif
diff --git a/WebCore/svg/SVGStyledElement.h b/WebCore/svg/SVGStyledElement.h
index 5e996b3..4f796b8 100644
--- a/WebCore/svg/SVGStyledElement.h
+++ b/WebCore/svg/SVGStyledElement.h
@@ -22,8 +22,8 @@
#define SVGStyledElement_h
#if ENABLE(SVG)
+#include "SVGAnimatedPropertyMacros.h"
#include "HTMLNames.h"
-#include "SVGElement.h"
#include "SVGLocatable.h"
#include "SVGStylable.h"
#include <wtf/HashSet.h>
@@ -83,7 +83,7 @@ namespace WebCore {
HashSet<SVGStyledElement*> m_elementsWithRelativeLengths;
- DECLARE_ANIMATED_PROPERTY(SVGStyledElement, HTMLNames::classAttr, String, ClassName, className)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGStyledElement, HTMLNames::classAttr, String, ClassName, className)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGTRefElement.h b/WebCore/svg/SVGTRefElement.h
index 7a79ae5..ffbfa55 100644
--- a/WebCore/svg/SVGTRefElement.h
+++ b/WebCore/svg/SVGTRefElement.h
@@ -45,7 +45,7 @@ namespace WebCore {
void updateReferencedText();
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGTRefElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGTRefElement, XLinkNames::hrefAttr, String, Href, href)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGTests.cpp b/WebCore/svg/SVGTests.cpp
index e4813cd..3317964 100644
--- a/WebCore/svg/SVGTests.cpp
+++ b/WebCore/svg/SVGTests.cpp
@@ -26,63 +26,41 @@
#include "Attribute.h"
#include "DOMImplementation.h"
#include "Language.h"
-#include "SVGElement.h"
#include "SVGNames.h"
#include "SVGStringList.h"
namespace WebCore {
SVGTests::SVGTests()
+ : m_features(SVGNames::requiredFeaturesAttr)
+ , m_extensions(SVGNames::requiredExtensionsAttr)
+ , m_systemLanguage(SVGNames::systemLanguageAttr)
{
}
-SVGTests::~SVGTests()
+bool SVGTests::hasExtension(const String&) const
{
-}
-
-SVGStringList* SVGTests::requiredFeatures() const
-{
- if (!m_features)
- m_features = SVGStringList::create(SVGNames::requiredFeaturesAttr);
-
- return m_features.get();
-}
-
-SVGStringList* SVGTests::requiredExtensions() const
-{
- if (!m_extensions)
- m_extensions = SVGStringList::create(SVGNames::requiredExtensionsAttr);
-
- return m_extensions.get();
-}
-
-SVGStringList* SVGTests::systemLanguage() const
-{
- if (!m_systemLanguage)
- m_systemLanguage = SVGStringList::create(SVGNames::systemLanguageAttr);
-
- return m_systemLanguage.get();
+ // FIXME: Implement me!
+ return false;
}
bool SVGTests::isValid() const
{
- ExceptionCode ec = 0;
-
- if (m_features) {
- for (unsigned long i = 0; i < m_features->numberOfItems(); i++) {
- String value = m_features->getItem(i, ec);
- if (value.isEmpty() || !DOMImplementation::hasFeature(value, String()))
- return false;
- }
+ unsigned featuresSize = m_features.size();
+ for (unsigned i = 0; i < featuresSize; ++i) {
+ String value = m_features.at(i);
+ if (value.isEmpty() || !DOMImplementation::hasFeature(value, String()))
+ return false;
}
- if (m_systemLanguage) {
- for (unsigned long i = 0; i < m_systemLanguage->numberOfItems(); i++)
- if (m_systemLanguage->getItem(i, ec) != defaultLanguage().substring(0, 2))
- return false;
+ unsigned systemLanguageSize = m_systemLanguage.size();
+ for (unsigned i = 0; i < systemLanguageSize; ++i) {
+ String value = m_systemLanguage.at(i);
+ if (value != defaultLanguage().substring(0, 2))
+ return false;
}
- if (m_extensions && m_extensions->numberOfItems() > 0)
+ if (!m_extensions.isEmpty())
return false;
return true;
@@ -91,13 +69,13 @@ bool SVGTests::isValid() const
bool SVGTests::parseMappedAttribute(Attribute* attr)
{
if (attr->name() == SVGNames::requiredFeaturesAttr) {
- requiredFeatures()->reset(attr->value());
+ m_features.reset(attr->value());
return true;
} else if (attr->name() == SVGNames::requiredExtensionsAttr) {
- requiredExtensions()->reset(attr->value());
+ m_extensions.reset(attr->value());
return true;
} else if (attr->name() == SVGNames::systemLanguageAttr) {
- systemLanguage()->reset(attr->value());
+ m_systemLanguage.reset(attr->value());
return true;
}
@@ -106,9 +84,9 @@ bool SVGTests::parseMappedAttribute(Attribute* attr)
bool SVGTests::isKnownAttribute(const QualifiedName& attrName)
{
- return (attrName == SVGNames::requiredFeaturesAttr ||
- attrName == SVGNames::requiredExtensionsAttr ||
- attrName == SVGNames::systemLanguageAttr);
+ return attrName == SVGNames::requiredFeaturesAttr
+ || attrName == SVGNames::requiredExtensionsAttr
+ || attrName == SVGNames::systemLanguageAttr;
}
}
diff --git a/WebCore/svg/SVGTests.h b/WebCore/svg/SVGTests.h
index c5bb70f..f662e9a 100644
--- a/WebCore/svg/SVGTests.h
+++ b/WebCore/svg/SVGTests.h
@@ -22,37 +22,33 @@
#define SVGTests_h
#if ENABLE(SVG)
-#include <wtf/Forward.h>
-#include <wtf/RefPtr.h>
+#include "SVGStringList.h"
namespace WebCore {
- class Attribute;
- class QualifiedName;
- class SVGStringList;
+class Attribute;
+class QualifiedName;
- class SVGTests {
- public:
- SVGStringList* requiredFeatures() const;
- SVGStringList* requiredExtensions() const;
- SVGStringList* systemLanguage() const;
+class SVGTests {
+public:
+ SVGStringList& requiredFeatures() { return m_features; }
+ SVGStringList& requiredExtensions() { return m_extensions; }
+ SVGStringList& systemLanguage() { return m_systemLanguage; }
- bool hasExtension(const String&) const { return false; }
+ bool hasExtension(const String&) const;
+ bool isValid() const;
- bool isValid() const;
-
- bool parseMappedAttribute(Attribute*);
- bool isKnownAttribute(const QualifiedName&);
+ bool parseMappedAttribute(Attribute*);
+ bool isKnownAttribute(const QualifiedName&);
- protected:
- SVGTests();
- ~SVGTests();
+protected:
+ SVGTests();
- private:
- mutable RefPtr<SVGStringList> m_features;
- mutable RefPtr<SVGStringList> m_extensions;
- mutable RefPtr<SVGStringList> m_systemLanguage;
- };
+private:
+ SVGStringList m_features;
+ SVGStringList m_extensions;
+ SVGStringList m_systemLanguage;
+};
} // namespace WebCore
diff --git a/WebCore/svg/SVGTextPathElement.h b/WebCore/svg/SVGTextPathElement.h
index b06c2bf..2375078 100644
--- a/WebCore/svg/SVGTextPathElement.h
+++ b/WebCore/svg/SVGTextPathElement.h
@@ -72,7 +72,7 @@ namespace WebCore {
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGTextPathElement, SVGNames::spacingAttr, int, Spacing, spacing)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGTextPathElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGTextPathElement, XLinkNames::hrefAttr, String, Href, href)
};
} // namespace WebCore
diff --git a/WebCore/svg/SVGURIReference.h b/WebCore/svg/SVGURIReference.h
index 096f5a5..3804791 100644
--- a/WebCore/svg/SVGURIReference.h
+++ b/WebCore/svg/SVGURIReference.h
@@ -27,20 +27,20 @@
namespace WebCore {
- class Attribute;
+class Attribute;
- class SVGURIReference {
- public:
- virtual ~SVGURIReference() { }
+class SVGURIReference {
+public:
+ virtual ~SVGURIReference() { }
- bool parseMappedAttribute(Attribute*);
- bool isKnownAttribute(const QualifiedName&);
+ bool parseMappedAttribute(Attribute*);
+ bool isKnownAttribute(const QualifiedName&);
- static String getTarget(const String& url);
+ static String getTarget(const String& url);
- protected:
- virtual void setHrefBaseValue(DeprecatedSVGAnimatedPropertyTraits<String>::PassType) = 0;
- };
+protected:
+ virtual void setHrefBaseValue(const String&) = 0;
+};
} // namespace WebCore
diff --git a/WebCore/svg/SVGUseElement.h b/WebCore/svg/SVGUseElement.h
index bb7e6d0..b127450 100644
--- a/WebCore/svg/SVGUseElement.h
+++ b/WebCore/svg/SVGUseElement.h
@@ -87,7 +87,7 @@ namespace WebCore {
DECLARE_ANIMATED_PROPERTY_NEW(SVGUseElement, SVGNames::heightAttr, SVGLength, Height, height)
// SVGURIReference
- DECLARE_ANIMATED_PROPERTY(SVGUseElement, XLinkNames::hrefAttr, String, Href, href)
+ DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGUseElement, XLinkNames::hrefAttr, String, Href, href)
// SVGExternalResourcesRequired
DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGUseElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
diff --git a/WebCore/svg/SVGViewElement.cpp b/WebCore/svg/SVGViewElement.cpp
index 6a83066..c59a080 100644
--- a/WebCore/svg/SVGViewElement.cpp
+++ b/WebCore/svg/SVGViewElement.cpp
@@ -34,6 +34,7 @@ namespace WebCore {
inline SVGViewElement::SVGViewElement(const QualifiedName& tagName, Document* document)
: SVGStyledElement(tagName, document)
+ , m_viewTarget(SVGNames::viewTargetAttr)
{
}
@@ -42,18 +43,10 @@ PassRefPtr<SVGViewElement> SVGViewElement::create(const QualifiedName& tagName,
return adoptRef(new SVGViewElement(tagName, document));
}
-SVGStringList* SVGViewElement::viewTarget() const
-{
- if (!m_viewTarget)
- m_viewTarget = SVGStringList::create(SVGNames::viewTargetAttr);
-
- return m_viewTarget.get();
-}
-
void SVGViewElement::parseMappedAttribute(Attribute* attr)
{
if (attr->name() == SVGNames::viewTargetAttr)
- viewTarget()->reset(attr->value());
+ viewTarget().reset(attr->value());
else {
if (SVGExternalResourcesRequired::parseMappedAttribute(attr)
|| SVGFitToViewBox::parseMappedAttribute(document(), attr)
diff --git a/WebCore/svg/SVGViewElement.h b/WebCore/svg/SVGViewElement.h
index 4c14900..7e239e3 100644
--- a/WebCore/svg/SVGViewElement.h
+++ b/WebCore/svg/SVGViewElement.h
@@ -23,6 +23,7 @@
#if ENABLE(SVG)
#include "SVGAnimatedPropertyMacros.h"
+#include "SVGStringList.h"
#include "SVGStyledElement.h"
#include "SVGExternalResourcesRequired.h"
#include "SVGFitToViewBox.h"
@@ -30,7 +31,6 @@
namespace WebCore {
- class SVGStringList;
class SVGViewElement : public SVGStyledElement,
public SVGExternalResourcesRequired,
public SVGFitToViewBox,
@@ -38,7 +38,7 @@ namespace WebCore {
public:
static PassRefPtr<SVGViewElement> create(const QualifiedName&, Document*);
- SVGStringList* viewTarget() const;
+ SVGStringList& viewTarget() { return m_viewTarget; }
private:
SVGViewElement(const QualifiedName&, Document*);
@@ -54,8 +54,8 @@ namespace WebCore {
// SVGFitToViewBox
DECLARE_ANIMATED_PROPERTY_NEW(SVGViewElement, SVGNames::viewBoxAttr, FloatRect, ViewBox, viewBox)
DECLARE_ANIMATED_PROPERTY_NEW(SVGViewElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
-
- mutable RefPtr<SVGStringList> m_viewTarget;
+
+ SVGStringList m_viewTarget;
};
} // namespace WebCore
diff --git a/WebCore/svg/properties/SVGAnimatedPropertyMacros.h b/WebCore/svg/properties/SVGAnimatedPropertyMacros.h
index 12d0565..e1c75b9 100644
--- a/WebCore/svg/properties/SVGAnimatedPropertyMacros.h
+++ b/WebCore/svg/properties/SVGAnimatedPropertyMacros.h
@@ -32,6 +32,42 @@
namespace WebCore {
+class SVGElement;
+
+// GetOwnerElementForType implementation
+template<typename OwnerType, bool isDerivedFromSVGElement>
+struct GetOwnerElementForType;
+
+template<typename OwnerType>
+struct GetOwnerElementForType<OwnerType, true> {
+ static SVGElement* ownerElement(OwnerType* type)
+ {
+ return type;
+ }
+};
+
+template<typename OwnerType>
+struct GetOwnerElementForType<OwnerType, false> {
+ static SVGElement* ownerElement(OwnerType* type)
+ {
+ SVGElement* context = type->contextElement();
+ ASSERT(context);
+ return context;
+ }
+};
+
+// IsDerivedFromSVGElement implementation
+template<typename OwnerType>
+struct IsDerivedFromSVGElement {
+ static const bool value = true;
+};
+
+class SVGViewSpec;
+template<>
+struct IsDerivedFromSVGElement<SVGViewSpec> {
+ static const bool value = false;
+};
+
template<typename PropertyType>
struct SVGSynchronizableAnimatedProperty {
SVGSynchronizableAnimatedProperty()
diff --git a/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h b/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
index 2b816ab..b97073d 100644
--- a/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
+++ b/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
@@ -23,42 +23,6 @@
#if ENABLE(SVG)
namespace WebCore {
-class SVGElement;
-
-// GetOwnerElementForType implementation
-template<typename OwnerType, bool isDerivedFromSVGElement>
-struct GetOwnerElementForType;
-
-template<typename OwnerType>
-struct GetOwnerElementForType<OwnerType, true> : public Noncopyable {
- static SVGElement* ownerElement(OwnerType* type)
- {
- return type;
- }
-};
-
-template<typename OwnerType>
-struct GetOwnerElementForType<OwnerType, false> : public Noncopyable {
- static SVGElement* ownerElement(OwnerType* type)
- {
- SVGElement* context = type->contextElement();
- ASSERT(context);
- return context;
- }
-};
-
-// IsDerivedFromSVGElement implementation
-template<typename OwnerType>
-struct IsDerivedFromSVGElement : public Noncopyable {
- static const bool value = true;
-};
-
-class SVGViewSpec;
-template<>
-struct IsDerivedFromSVGElement<SVGViewSpec> : public Noncopyable {
- static const bool value = false;
-};
-
// Helper template used for synchronizing SVG <-> XML properties
template<bool isDerivedFromSVGElement>
struct SVGAnimatedPropertySynchronizer {
diff --git a/WebCore/svg/properties/SVGPropertyTraits.h b/WebCore/svg/properties/SVGPropertyTraits.h
index a3d1e7c..5b12a22 100644
--- a/WebCore/svg/properties/SVGPropertyTraits.h
+++ b/WebCore/svg/properties/SVGPropertyTraits.h
@@ -28,6 +28,7 @@
#include "SVGLengthList.h"
#include "SVGNumberList.h"
#include "SVGPreserveAspectRatio.h"
+#include "SVGStringList.h"
#include <wtf/text/StringBuilder.h>
namespace WebCore {
@@ -117,6 +118,11 @@ struct SVGPropertyTraits<String> {
static String toString(const String& type) { return type; }
};
+template<>
+struct SVGPropertyTraits<SVGStringList> {
+ typedef String ListItemType;
+};
+
}
#endif
diff --git a/WebCore/svg/properties/SVGStringListPropertyTearOff.h b/WebCore/svg/properties/SVGStringListPropertyTearOff.h
new file mode 100644
index 0000000..10fa65d
--- /dev/null
+++ b/WebCore/svg/properties/SVGStringListPropertyTearOff.h
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SVGStringListPropertyTearOff_h
+#define SVGStringListPropertyTearOff_h
+
+#if ENABLE(SVG)
+#include "ExceptionCode.h"
+#include "SVGProperty.h"
+#include "SVGStringList.h"
+
+namespace WebCore {
+
+// Used for lists that return non-modifyable values: SVGStringList.
+class SVGStringListPropertyTearOff : public SVGProperty {
+public:
+ static PassRefPtr<SVGStringListPropertyTearOff> create(SVGElement* contextElement, SVGStringList& values)
+ {
+ return adoptRef(new SVGStringListPropertyTearOff(contextElement, values));
+ }
+
+ // SVGList API
+ void clear(ExceptionCode&)
+ {
+ m_values.clear();
+ }
+
+ unsigned numberOfItems() const
+ {
+ return m_values.size();
+ }
+
+ String initialize(const String& newItem, ExceptionCode&)
+ {
+ // Spec: Clears all existing current items from the list and re-initializes the list to hold the single item specified by the parameter.
+ m_values.clear();
+ m_values.append(newItem);
+
+ m_values.commitChange(m_contextElement.get());
+ return newItem;
+ }
+
+ String getItem(unsigned index, ExceptionCode& ec)
+ {
+ if (index >= m_values.size()) {
+ ec = INDEX_SIZE_ERR;
+ return String();
+ }
+
+ return m_values.at(index);
+ }
+
+ String insertItemBefore(const String& newItem, unsigned index, ExceptionCode&)
+ {
+ // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.
+ if (index > m_values.size())
+ index = m_values.size();
+
+ // Spec: Inserts a new item into the list at the specified position. The index of the item before which the new item is to be
+ // inserted. The first item is number 0. If the index is equal to 0, then the new item is inserted at the front of the list.
+ m_values.insert(index, newItem);
+
+ m_values.commitChange(m_contextElement.get());
+ return newItem;
+ }
+
+ String replaceItem(const String& newItem, unsigned index, ExceptionCode& ec)
+ {
+ if (index >= m_values.size()) {
+ ec = INDEX_SIZE_ERR;
+ return String();
+ }
+
+ // Update the value and the wrapper at the desired position 'index'.
+ m_values.at(index) = newItem;
+
+ m_values.commitChange(m_contextElement.get());
+ return newItem;
+ }
+
+ String removeItem(unsigned index, ExceptionCode& ec)
+ {
+ if (index >= m_values.size()) {
+ ec = INDEX_SIZE_ERR;
+ return String();
+ }
+
+ String oldItem = m_values.at(index);
+ m_values.remove(index);
+
+ m_values.commitChange(m_contextElement.get());
+ return oldItem;
+ }
+
+ String appendItem(const String& newItem, ExceptionCode&)
+ {
+ // Append the value and wrapper at the end of the list.
+ m_values.append(newItem);
+
+ m_values.commitChange(m_contextElement.get());
+ return newItem;
+ }
+
+private:
+ SVGStringListPropertyTearOff(SVGElement* contextElement, SVGStringList& values)
+ : m_contextElement(contextElement)
+ , m_values(values)
+ {
+ ASSERT(m_contextElement);
+ }
+
+private:
+ RefPtr<SVGElement> m_contextElement;
+ SVGStringList& m_values;
+};
+
+}
+
+#endif // ENABLE(SVG)
+#endif // SVGStringListPropertyTearOff_h
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list