Skip to content
  • commit-queue@webkit.org's avatar
    2010-11-22 Nikolas Zimmermann <nzimmermann@rim.com> · 7ab490e1
    commit-queue@webkit.org authored
            Reviewed by Dirk Schulze.
    
            Fix various problems with the SVG*List code
            https://bugs.webkit.org/show_bug.cgi?id=49880
    
            Add tests for all SVG*List types, that were missing.
            Add SVG 1.1 2nd edition testcase, types-dom-07-f.svg, testing that all animVal values are readonly.
    
            * platform/mac-leopard/svg/custom/baseval-animval-equality-expected.checksum:
            * platform/mac-leopard/svg/custom/baseval-animval-equality-expected.png:
            * platform/mac-leopard/svg/dom/SVGLengthList-basics-expected.checksum:
            * platform/mac-leopard/svg/dom/SVGLengthList-basics-expected.png:
            * platform/mac/svg/W3C-SVG-1.1-SE/types-dom-07-f-expected.checksum: Added.
            * platform/mac/svg/W3C-SVG-1.1-SE/types-dom-07-f-expected.png: Added.
            * platform/mac/svg/W3C-SVG-1.1-SE/types-dom-07-f-expected.txt: Added.
            * platform/mac/svg/custom/baseval-animval-equality-expected.txt:
            * platform/mac/svg/dom/SVGNumberList-basics-expected.checksum: Added.
            * platform/mac/svg/dom/SVGNumberList-basics-expected.png: Added.
            * platform/mac/svg/dom/SVGPointList-basics-expected.checksum: Added.
            * platform/mac/svg/dom/SVGPointList-basics-expected.png: Added.
            * platform/mac/svg/dom/SVGStringList-basics-expected.checksum: Added.
            * platform/mac/svg/dom/SVGStringList-basics-expected.png: Added.
            * platform/mac/svg/dom/SVGTransformList-basics-expected.checksum: Added.
            * platform/mac/svg/dom/SVGTransformList-basics-expected.png: Added.
            * svg/W3C-SVG-1.1-SE/types-dom-07-f.svg: Added.
            * svg/custom/baseval-animval-equality.svg: Fix wrong test.
            * svg/custom/polyline-points-crash-expected.txt:
            * svg/dom/SVGLengthList-basics-expected.txt:
            * svg/dom/SVGLengthList-basics.xhtml: Extended test, synchronized with the other SVG*List tests.
            * svg/dom/SVGNumberList-basics-expected.txt: Added.
            * svg/dom/SVGNumberList-basics.xhtml: Added.
            * svg/dom/SVGPointList-basics-expected.txt: Added.
            * svg/dom/SVGPointList-basics.xhtml: Added.
            * svg/dom/SVGStringList-basics-expected.txt: Added.
            * svg/dom/SVGStringList-basics.xhtml: Added.
            * svg/dom/SVGTransformList-basics-expected.txt: Added.
            * svg/dom/SVGTransformList-basics.xhtml: Added.
            * svg/dom/svglist-exception-on-out-bounds-error-expected.txt:
    2010-11-22  Nikolas Zimmermann  <nzimmermann@rim.com>
    
            Reviewed by Dirk Schulze.
    
            Fix various problems with the SVG*List code
            https://bugs.webkit.org/show_bug.cgi?id=49880
    
            Write tests for SVGNumberList/SVGPointList/SVGStringList/SVGTransformList and extend SVGLengthList tests.
            SVG DOM <-> XML DOM synchronization is now tested for all these types, and works great. Unify the string format produced
            by the various valueAsString() functions for maximum compatibility with Firefox / Opera.
    
            * Build a real transform string for SVGTransformList, instead of dumping the elements of the concatted matrix.
            * Add SVGStringList XML dom synchronization, only affects SVGTests requiredFeatures/requiredExtensions/systemLanguage.
            * Make all animVal properties readonly, tested by types-dom-07-f.svg (from SVG 1.1 2nd edition).
            * Enable StrictTypeChecking/RequiresAllArguments=Raise for all SVGList types.
    
            Tests: svg/W3C-SVG-1.1-SE/types-dom-07-f.svg
                   svg/dom/SVGNumberList-basics.xhtml
                   svg/dom/SVGPointList-basics.xhtml
                   svg/dom/SVGStringList-basics.xhtml
                   svg/dom/SVGTransformList-basics.xhtml
    
            * bindings/js/JSSVGLengthCustom.cpp:
            (WebCore::JSSVGLength::setValue): Throw NO_MODIFICATION_ALLOWED_ERR when the SVGPropertyTearOffs role is AnimValRole.
            (WebCore::JSSVGLength::convertToSpecifiedUnits): Ditto.
            * bindings/scripts/CodeGeneratorJS.pm: Ditto.
            * bindings/scripts/CodeGeneratorObjC.pm: Ditto.
            * bindings/scripts/CodeGeneratorV8.pm: Ditto.
            * bindings/v8/custom/V8SVGLengthCustom.cpp:
            (WebCore::V8SVGLength::valueAccessorSetter): Ditto.
            (WebCore::V8SVGLength::convertToSpecifiedUnitsCallback): Ditto.
            * svg/SVGAElement.cpp:
            (WebCore::SVGAElement::synchronizeProperty): Also synchronize the SVGTests SVGStringLists.
            * svg/SVGAnimationElement.cpp:
            (WebCore::SVGAnimationElement::synchronizeProperty): Ditto.
            * svg/SVGCircleElement.cpp:
            (WebCore::SVGCircleElement::synchronizeProperty): Ditto.
            * svg/SVGClipPathElement.cpp:
            (WebCore::SVGClipPathElement::synchronizeProperty): Ditto.
            * svg/SVGCursorElement.cpp:
            (WebCore::SVGCursorElement::synchronizeProperty): Ditto.
            * svg/SVGDefsElement.cpp:
            (WebCore::SVGDefsElement::synchronizeProperty): Ditto.
            * svg/SVGEllipseElement.cpp:
            (WebCore::SVGEllipseElement::synchronizeProperty): Ditto.
            * svg/SVGForeignObjectElement.cpp:
            (WebCore::SVGForeignObjectElement::synchronizeProperty): Ditto.
            * svg/SVGGElement.cpp:
            (WebCore::SVGGElement::synchronizeProperty): Ditto.
            * svg/SVGImageElement.cpp:
            (WebCore::SVGImageElement::synchronizeProperty): Ditto.
            * svg/SVGLengthList.cpp:
            (WebCore::SVGLengthList::valueAsString): Use ' ' instead of ',' as seperator.
            * svg/SVGLengthList.idl: Enable StrictTypeChecking, RequiresAllArguments=Raise.
            * svg/SVGLineElement.cpp:
            (WebCore::SVGLineElement::synchronizeProperty): Also synchronize the SVGTests SVGStringLists.
            * svg/SVGMaskElement.cpp:
            (WebCore::SVGMaskElement::synchronizeProperty): Ditto.
            * svg/SVGNumberList.cpp:
            (WebCore::SVGNumberList::valueAsString): Use ' ' instead of ',' as seperator.
            * svg/SVGNumberList.idl: Enable StrictTypeChecking, RequiresAllArguments=Raise.
            * svg/SVGPathElement.cpp:
            (WebCore::SVGPathElement::synchronizeProperty): Also synchronize the SVGTests SVGStringLists.
            * svg/SVGPatternElement.cpp:
            (WebCore::SVGPatternElement::synchronizeProperty): Ditto.
            * svg/SVGPointList.idl: Enable StrictTypeChecking, RequiresAllArguments=Raise.
            * svg/SVGPolyElement.cpp:
            (WebCore::SVGPolyElement::synchronizeProperty): Also synchronize the SVGTests SVGStringLists.
            * svg/SVGRectElement.cpp:
            (WebCore::SVGRectElement::synchronizeProperty): Ditto.
            * svg/SVGSVGElement.cpp:
            (WebCore::SVGSVGElement::synchronizeProperty): Ditto.
            * svg/SVGStringList.cpp:
            (WebCore::SVGStringList::valueAsString): Add valueAsString() implementation, necessary for SVG DOM <-> XML DOM synchronization.
            * svg/SVGStringList.h:
            * svg/SVGStringList.idl: Enable StrictTypeChecking, RequiresAllArguments=Raise.
            * svg/SVGSwitchElement.cpp:
            (WebCore::SVGSwitchElement::synchronizeProperty): Also synchronize the SVGTests SVGStringLists.
            * svg/SVGTests.cpp: Rewrite, similar to SVGPolyElement, to synchronize the requiredFeatures/requiredExtension/systemLanguage SVGStringLists with their XML DOM attributes.
            (WebCore::SVGTests::SVGTests):
            (WebCore::SVGTests::isValid):
            (WebCore::SVGTests::parseMappedAttribute):
            (WebCore::SVGTests::isKnownAttribute):
            (WebCore::SVGTests::handleAttributeChange):
            (WebCore::SVGTests::synchronizeProperties): To be called by all classes inheriting from SVGTests, in their synchronizeProperty() methods.
            (WebCore::SVGTests::synchronizeRequiredFeatures):
            (WebCore::SVGTests::synchronizeRequiredExtensions):
            (WebCore::SVGTests::synchronizeSystemLanguage):
            (WebCore::SVGTests::requiredFeatures):
            (WebCore::SVGTests::requiredExtensions):
            (WebCore::SVGTests::systemLanguage):
            * svg/SVGTests.h:
            * svg/SVGTextContentElement.cpp:
            (WebCore::SVGTextContentElement::synchronizeProperty): Also synchronize the SVGTests SVGStringLists.
            * svg/SVGTransform.cpp:
            (WebCore::SVGTransform::valueAsString): Added a proper way to serialize a SVGTransform into a String.
            * svg/SVGTransform.h:
            * svg/SVGTransformList.cpp:
            (WebCore::SVGTransformList::valueAsString): Rewrite, to build a real transform list string, instead of dumping the concatted matrix.
            * svg/SVGUseElement.cpp:
            (WebCore::SVGUseElement::synchronizeProperty): Also synchronize the SVGTests SVGStringLists.
            * svg/properties/SVGListProperty.h: s/TYPE_MISMATCH_ERR/SVGException::SVG_WRONG_TYPE_ERR/ for compatibility with Firefox.
            (WebCore::SVGListProperty::initializeValuesAndWrappers):
            (WebCore::SVGListProperty::insertItemBeforeValuesAndWrappers):
            (WebCore::SVGListProperty::replaceItemValues):
            (WebCore::SVGListProperty::replaceItemValuesAndWrappers):
            (WebCore::SVGListProperty::removeItemValuesAndWrappers): Handle corner case, the item passed to removeItem() was the only on in the list, list is empty now, nothing to replace.
            (WebCore::SVGListProperty::appendItemValuesAndWrappers):
            (WebCore::SVGListProperty::role): Expose the role of this list property.
            * svg/properties/SVGPathSegListPropertyTearOff.h: s/TYPE_MISMATCH_ERR/SVGException::SVG_WRONG_TYPE_ERR/ for compatibility with Firefox.
            (WebCore::SVGPathSegListPropertyTearOff::initialize):
            (WebCore::SVGPathSegListPropertyTearOff::insertItemBefore):
            (WebCore::SVGPathSegListPropertyTearOff::replaceItem):
            (WebCore::SVGPathSegListPropertyTearOff::appendItem):
            * svg/properties/SVGProperty.h: Add new virtual SVGPropertyRole role() accessor.
            * svg/properties/SVGPropertyTearOff.h:
            (WebCore::SVGPropertyTearOff::create): Store the passed in SVGProperyRole, instead of ignoring it.
            (WebCore::SVGPropertyTearOff::role):
            (WebCore::SVGPropertyTearOff::SVGPropertyTearOff):
            * svg/properties/SVGStaticPropertyTearOff.h:
            (WebCore::SVGStaticPropertyTearOff::SVGStaticPropertyTearOff): Pass UndefinedRole as default role to SVGPropertyTearOff.
            * svg/properties/SVGStaticPropertyWithParentTearOff.h: Ditto.
            (WebCore::SVGStaticPropertyWithParentTearOff::SVGStaticPropertyWithParentTearOff):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72518 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    7ab490e1