Skip to content
  • ch.dumez@sisa.samsung.com's avatar
    [SVG2] Merge SVGStyledElement and SVGElement · 7dd31bf9
    ch.dumez@sisa.samsung.com authored
    https://bugs.webkit.org/show_bug.cgi?id=107386
    
    Reviewed by Andreas Kling.
    
    Source/WebCore:
    
    Merge SVGStyledElement into SVGElement to simplify the SVG inheritance
    model and match the SVG2 specification:
    https://svgwg.org/svg2-draft/single-page.html#types-InterfaceSVGElement
    
    Test: svg/dom/svg2-inheritance.html
    
    * CMakeLists.txt:
    * DerivedSources.cpp:
    * DerivedSources.make:
    * DerivedSources.pri:
    * GNUmakefile.list.am:
    * Target.pri:
    * WebCore.order:
    * WebCore.vcxproj/WebCore.vcxproj:
    * WebCore.vcxproj/WebCore.vcxproj.filters:
    * WebCore.xcodeproj/project.pbxproj:
    * accessibility/AccessibilityNodeObject.cpp:
    (WebCore::AccessibilityNodeObject::alternativeText):
    (WebCore::AccessibilityNodeObject::accessibilityDescription):
    * css/SVGCSSStyleSelector.cpp:
    * rendering/style/SVGRenderStyle.cpp:
    * rendering/svg/RenderSVGContainer.cpp:
    (WebCore::RenderSVGContainer::RenderSVGContainer):
    * rendering/svg/RenderSVGContainer.h:
    * rendering/svg/RenderSVGHiddenContainer.cpp:
    (WebCore::RenderSVGHiddenContainer::RenderSVGHiddenContainer):
    * rendering/svg/RenderSVGHiddenContainer.h:
    * rendering/svg/RenderSVGModelObject.cpp:
    (WebCore::RenderSVGModelObject::RenderSVGModelObject):
    (WebCore::getElementCTM):
    * rendering/svg/RenderSVGModelObject.h:
    * rendering/svg/RenderSVGResourceClipper.cpp:
    (WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
    (WebCore::RenderSVGResourceClipper::calculateClipContentRepaintRect):
    (WebCore::RenderSVGResourceClipper::hitTestClipContent):
    * rendering/svg/RenderSVGResourceContainer.cpp:
    (WebCore::RenderSVGResourceContainer::RenderSVGResourceContainer):
    * rendering/svg/RenderSVGResourceContainer.h:
    * rendering/svg/RenderSVGResourceFilter.cpp:
    * rendering/svg/RenderSVGResourceFilterPrimitive.h:
    * rendering/svg/RenderSVGResourceMarker.cpp:
    * rendering/svg/RenderSVGResourceMarker.h:
    * rendering/svg/RenderSVGResourceMasker.cpp:
    (WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):
    (WebCore::RenderSVGResourceMasker::calculateMaskContentRepaintRect):
    * rendering/svg/RenderSVGResourcePattern.cpp:
    (WebCore::RenderSVGResourcePattern::createTileImage):
    * rendering/svg/RenderSVGRoot.cpp:
    (WebCore::RenderSVGRoot::RenderSVGRoot):
    * rendering/svg/RenderSVGRoot.h:
    * rendering/svg/RenderSVGViewportContainer.cpp:
    (WebCore::RenderSVGViewportContainer::RenderSVGViewportContainer):
    * rendering/svg/RenderSVGViewportContainer.h:
    * rendering/svg/SVGRenderSupport.cpp:
    (WebCore::SVGRenderSupport::layoutChildren):
    * rendering/svg/SVGRenderTreeAsText.cpp:
    * rendering/svg/SVGResources.cpp:
    (WebCore::registerPendingResource):
    * rendering/svg/SVGResourcesCache.cpp:
    * svg/SVGAElement.cpp:
    (WebCore::SVGAElement::title):
    * svg/SVGAllInOne.cpp:
    * svg/SVGAltGlyphDefElement.h:
    * svg/SVGAltGlyphItemElement.h:
    * svg/SVGAnimateElement.cpp:
    * svg/SVGAnimatedType.cpp:
    (WebCore::SVGAnimatedType::valueAsString):
    (WebCore::SVGAnimatedType::setValueAsString):
    * svg/SVGAnimationElement.cpp:
    (WebCore::SVGAnimationElement::isTargetAttributeCSSProperty):
    (WebCore::SVGAnimationElement::computeCSSPropertyValue):
    (WebCore::SVGAnimationElement::adjustForInheritance):
    (WebCore::inheritsFromProperty):
    * svg/SVGComponentTransferFunctionElement.h:
    * svg/SVGCursorElement.h:
    * svg/SVGDescElement.cpp:
    (WebCore::SVGDescElement::SVGDescElement):
    * svg/SVGDescElement.h:
    * svg/SVGDescElement.idl:
    * svg/SVGElement.cpp:
    (WebCore::mapAttributeToCSSProperty):
    (WebCore::cssPropertyToTypeMap):
    (WebCore::SVGElement::SVGElement):
    (WebCore::SVGElement::~SVGElement):
    (WebCore::SVGElement::removedFrom):
    (WebCore::SVGElement::parseAttribute):
    (WebCore::SVGElement::animatedPropertyTypeForAttribute):
    (WebCore::collectInstancesForSVGElement):
    (WebCore::SVGElement::isAnimatableAttribute):
    (WebCore::SVGElement::title):
    (WebCore::SVGElement::rendererIsNeeded):
    (WebCore::SVGElement::cssPropertyIdForSVGAttributeName):
    (WebCore::SVGElement::isAnimatableCSSProperty):
    (WebCore::SVGElement::isPresentationAttribute):
    (WebCore::SVGElement::collectStyleForPresentationAttribute):
    (WebCore::SVGElement::isKnownAttribute):
    (WebCore::SVGElement::svgAttributeChanged):
    (WebCore::SVGElement::insertedInto):
    (WebCore::SVGElement::buildPendingResourcesIfNeeded):
    (WebCore::SVGElement::childrenChanged):
    (WebCore::SVGElement::getPresentationAttribute):
    (WebCore::SVGElement::instanceUpdatesBlocked):
    (WebCore::SVGElement::setInstanceUpdatesBlocked):
    (WebCore::SVGElement::localCoordinateSpaceTransform):
    (WebCore::SVGElement::updateRelativeLengthsInformation):
    (WebCore::SVGElement::isMouseFocusable):
    (WebCore::SVGElement::isKeyboardFocusable):
    * svg/SVGElement.h:
    (WebCore::SVGElement::supportsMarkers):
    (WebCore::SVGElement::hasRelativeLengths):
    (WebCore::SVGElement::needsPendingResourceHandling):
    (WebCore::SVGElement::selfHasRelativeLengths):
    (WebCore::SVGElement::updateRelativeLengthsInformation):
    * svg/SVGElement.idl:
    * svg/SVGElementInstance.cpp:
    (WebCore::SVGElementInstance::invalidateAllInstancesOfElement):
    (WebCore::SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker):
    * svg/SVGElementInstance.h:
    * svg/SVGFEBlendElement.idl:
    * svg/SVGFEColorMatrixElement.idl:
    * svg/SVGFEComponentTransferElement.idl:
    * svg/SVGFECompositeElement.idl:
    * svg/SVGFEConvolveMatrixElement.idl:
    * svg/SVGFEDiffuseLightingElement.idl:
    * svg/SVGFEDisplacementMapElement.idl:
    * svg/SVGFEDropShadowElement.idl:
    * svg/SVGFEFloodElement.idl:
    * svg/SVGFEGaussianBlurElement.idl:
    * svg/SVGFEImageElement.idl:
    * svg/SVGFELightElement.h:
    * svg/SVGFEMergeElement.idl:
    * svg/SVGFEMergeNodeElement.h:
    * svg/SVGFEMorphologyElement.idl:
    * svg/SVGFEOffsetElement.idl:
    * svg/SVGFESpecularLightingElement.idl:
    * svg/SVGFETileElement.idl:
    * svg/SVGFETurbulenceElement.idl:
    * svg/SVGFilterElement.cpp:
    (WebCore::SVGFilterElement::SVGFilterElement):
    (WebCore::SVGFilterElement::parseAttribute):
    (WebCore::SVGFilterElement::svgAttributeChanged):
    (WebCore::SVGFilterElement::childrenChanged):
    * svg/SVGFilterElement.h:
    * svg/SVGFilterElement.idl:
    * svg/SVGFilterPrimitiveStandardAttributes.cpp:
    (WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
    (WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
    (WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged):
    (WebCore::SVGFilterPrimitiveStandardAttributes::childrenChanged):
    (WebCore::SVGFilterPrimitiveStandardAttributes::rendererIsNeeded):
    * svg/SVGFilterPrimitiveStandardAttributes.h:
    * svg/SVGFontElement.cpp:
    (WebCore::SVGFontElement::SVGFontElement):
    * svg/SVGFontElement.h:
    * svg/SVGFontFaceElement.cpp:
    * svg/SVGFontFaceElement.h:
    * svg/SVGFontFaceFormatElement.h:
    * svg/SVGFontFaceNameElement.h:
    * svg/SVGFontFaceSrcElement.h:
    * svg/SVGFontFaceUriElement.h:
    * svg/SVGGElement.cpp:
    (WebCore::SVGGElement::rendererIsNeeded):
    * svg/SVGGlyphElement.cpp:
    (WebCore::SVGGlyphElement::SVGGlyphElement):
    (WebCore::SVGGlyphElement::parseAttribute):
    (WebCore::SVGGlyphElement::insertedInto):
    (WebCore::SVGGlyphElement::removedFrom):
    * svg/SVGGlyphElement.h:
    * svg/SVGGlyphRefElement.cpp:
    (WebCore::SVGGlyphRefElement::SVGGlyphRefElement):
    (WebCore::SVGGlyphRefElement::parseAttribute):
    * svg/SVGGlyphRefElement.h:
    * svg/SVGGlyphRefElement.idl:
    * svg/SVGGradientElement.cpp:
    (WebCore::SVGGradientElement::SVGGradientElement):
    (WebCore::SVGGradientElement::parseAttribute):
    (WebCore::SVGGradientElement::svgAttributeChanged):
    (WebCore::SVGGradientElement::childrenChanged):
    * svg/SVGGradientElement.h:
    * svg/SVGGradientElement.idl:
    * svg/SVGGraphicsElement.cpp:
    (WebCore::SVGGraphicsElement::SVGGraphicsElement):
    (WebCore::SVGGraphicsElement::parseAttribute):
    (WebCore::SVGGraphicsElement::svgAttributeChanged):
    * svg/SVGGraphicsElement.h:
    * svg/SVGGraphicsElement.idl:
    * svg/SVGLocatable.cpp:
    (WebCore::SVGLocatable::computeCTM):
    * svg/SVGMPathElement.h:
    * svg/SVGMarkerElement.cpp:
    (WebCore::SVGMarkerElement::SVGMarkerElement):
    (WebCore::SVGMarkerElement::parseAttribute):
    (WebCore::SVGMarkerElement::svgAttributeChanged):
    (WebCore::SVGMarkerElement::childrenChanged):
    * svg/SVGMarkerElement.h:
    * svg/SVGMarkerElement.idl:
    * svg/SVGMaskElement.cpp:
    (WebCore::SVGMaskElement::SVGMaskElement):
    (WebCore::SVGMaskElement::parseAttribute):
    (WebCore::SVGMaskElement::svgAttributeChanged):
    (WebCore::SVGMaskElement::childrenChanged):
    * svg/SVGMaskElement.h:
    * svg/SVGMaskElement.idl:
    * svg/SVGMetadataElement.h:
    * svg/SVGMissingGlyphElement.cpp:
    (WebCore::SVGMissingGlyphElement::SVGMissingGlyphElement):
    * svg/SVGMissingGlyphElement.h:
    * svg/SVGMissingGlyphElement.idl:
    * svg/SVGPatternElement.cpp:
    (WebCore::SVGPatternElement::SVGPatternElement):
    (WebCore::SVGPatternElement::parseAttribute):
    (WebCore::SVGPatternElement::svgAttributeChanged):
    (WebCore::SVGPatternElement::childrenChanged):
    * svg/SVGPatternElement.h:
    * svg/SVGPatternElement.idl:
    * svg/SVGScriptElement.h:
    * svg/SVGStopElement.cpp:
    (WebCore::SVGStopElement::SVGStopElement):
    (WebCore::SVGStopElement::parseAttribute):
    (WebCore::SVGStopElement::svgAttributeChanged):
    * svg/SVGStopElement.h:
    * svg/SVGStopElement.idl:
    * svg/SVGStyleElement.h:
    * svg/SVGStyledElement.cpp: Removed.
    * svg/SVGStyledElement.h: Removed.
    * svg/SVGStyledElement.idl: Removed.
    * svg/SVGSymbolElement.cpp:
    (WebCore::SVGSymbolElement::SVGSymbolElement):
    (WebCore::SVGSymbolElement::parseAttribute):
    (WebCore::SVGSymbolElement::svgAttributeChanged):
    * svg/SVGSymbolElement.h:
    * svg/SVGSymbolElement.idl:
    * svg/SVGTRefElement.cpp:
    (WebCore::SVGTRefElement::insertedInto):
    (WebCore::SVGTRefElement::removedFrom):
    * svg/SVGTitleElement.cpp:
    (WebCore::SVGTitleElement::SVGTitleElement):
    (WebCore::SVGTitleElement::insertedInto):
    * svg/SVGTitleElement.h:
    * svg/SVGTitleElement.idl:
    * svg/SVGTransformable.cpp:
    * svg/SVGUseElement.cpp:
    (WebCore::SVGUseElement::selfHasRelativeLengths):
    * svg/SVGViewElement.cpp:
    (WebCore::SVGViewElement::SVGViewElement):
    (WebCore::SVGViewElement::parseAttribute):
    * svg/SVGViewElement.h:
    * svg/animation/SVGSMILElement.h:
    * svg/graphics/filters/SVGFEImage.cpp:
    (WebCore::FEImage::platformApplySoftware):
    
    LayoutTests:
    
    Add layout test to validate the SVG2 inheritance model.
    
    * svg/dom/svg2-inheritance-expected.txt: Added.
    * svg/dom/svg2-inheritance.html: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154462 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    7dd31bf9