WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-107386-20130822173218.patch (text/plain), 225.36 KB, created by
Chris Dumez
on 2013-08-22 07:32:24 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Chris Dumez
Created:
2013-08-22 07:32:24 PDT
Size:
225.36 KB
patch
obsolete
>Subversion Revision: 154443 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 4669e00a1ef6612107a1eec8813febf1489d7dac..4d45fdb711f2a7582b82541c64795abb51ecab8c 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,5 +1,263 @@ > 2013-08-22 Christophe Dumez <ch.dumez@sisa.samsung.com> > >+ [SVG2] Merge SVGStyledElement and SVGElement >+ https://bugs.webkit.org/show_bug.cgi?id=107386 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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): >+ >+2013-08-22 Christophe Dumez <ch.dumez@sisa.samsung.com> >+ > Introduce a SVGUnknownElement class for unknown SVG elements > https://bugs.webkit.org/show_bug.cgi?id=120155 > >diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt >index f296b1bf834998b5e57b7ad3a97681fd4f805065..26561f09614b5643b1c1d7a6fc59f6db71033612 100644 >--- a/Source/WebCore/CMakeLists.txt >+++ b/Source/WebCore/CMakeLists.txt >@@ -731,7 +731,6 @@ set(WebCore_SVG_IDL_FILES > svg/SVGStopElement.idl > svg/SVGStringList.idl > svg/SVGStyleElement.idl >- svg/SVGStyledElement.idl > svg/SVGSwitchElement.idl > svg/SVGSymbolElement.idl > svg/SVGTRefElement.idl >@@ -2455,7 +2454,6 @@ set(WebCore_SOURCES > svg/SVGStopElement.cpp > svg/SVGStringList.cpp > svg/SVGStyleElement.cpp >- svg/SVGStyledElement.cpp > svg/SVGSwitchElement.cpp > svg/SVGSymbolElement.cpp > svg/SVGTRefElement.cpp >diff --git a/Source/WebCore/DerivedSources.cpp b/Source/WebCore/DerivedSources.cpp >index d0f9e93f1fcebe258910949ca269ce98d2d43bca..da471fe5e368e746d5a44ce6befe7ed790e8b287 100644 >--- a/Source/WebCore/DerivedSources.cpp >+++ b/Source/WebCore/DerivedSources.cpp >@@ -463,7 +463,6 @@ > #include "JSSVGStopElement.cpp" > #include "JSSVGStringList.cpp" > #include "JSSVGStyleElement.cpp" >-#include "JSSVGStyledElement.cpp" > #include "JSSVGSwitchElement.cpp" > #include "JSSVGSymbolElement.cpp" > #include "JSSVGTextContentElement.cpp" >diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make >index f1977c3609c1b17cb4b2141d8c0e3762d2730c6e..9b5bba47bf344b798c81c248a5cc6ee15a8c377d 100644 >--- a/Source/WebCore/DerivedSources.make >+++ b/Source/WebCore/DerivedSources.make >@@ -587,7 +587,6 @@ BINDING_IDLS = \ > $(WebCore)/svg/SVGStopElement.idl \ > $(WebCore)/svg/SVGStringList.idl \ > $(WebCore)/svg/SVGStyleElement.idl \ >- $(WebCore)/svg/SVGStyledElement.idl \ > $(WebCore)/svg/SVGSwitchElement.idl \ > $(WebCore)/svg/SVGSymbolElement.idl \ > $(WebCore)/svg/SVGTRefElement.idl \ >diff --git a/Source/WebCore/DerivedSources.pri b/Source/WebCore/DerivedSources.pri >index 2cd4355e8aa719833052d9ecf024f5889b515007..37db4fcfcac3298b3aded9458bbc533314046e27 100644 >--- a/Source/WebCore/DerivedSources.pri >+++ b/Source/WebCore/DerivedSources.pri >@@ -612,7 +612,6 @@ enable?(SVG) { > $$PWD/svg/SVGStopElement.idl \ > $$PWD/svg/SVGStringList.idl \ > $$PWD/svg/SVGStyleElement.idl \ >- $$PWD/svg/SVGStyledElement.idl \ > $$PWD/svg/SVGSVGElement.idl \ > $$PWD/svg/SVGSwitchElement.idl \ > $$PWD/svg/SVGSymbolElement.idl \ >diff --git a/Source/WebCore/GNUmakefile.list.am b/Source/WebCore/GNUmakefile.list.am >index 3a741271037bca6179a1d28652a82943b5cf1b96..4a0164ef5c5e8f55af44f3ac8c238a75cc04f74d 100644 >--- a/Source/WebCore/GNUmakefile.list.am >+++ b/Source/WebCore/GNUmakefile.list.am >@@ -1140,8 +1140,6 @@ webcore_svg_built_sources += \ > DerivedSources/WebCore/JSSVGStringList.h \ > DerivedSources/WebCore/JSSVGStyleElement.cpp \ > DerivedSources/WebCore/JSSVGStyleElement.h \ >- DerivedSources/WebCore/JSSVGStyledElement.cpp \ >- DerivedSources/WebCore/JSSVGStyledElement.h \ > DerivedSources/WebCore/JSSVGSVGElement.cpp \ > DerivedSources/WebCore/JSSVGSVGElement.h \ > DerivedSources/WebCore/JSSVGSwitchElement.cpp \ >@@ -1729,7 +1727,6 @@ dom_binding_idls += \ > $(WebCore)/svg/SVGStopElement.idl \ > $(WebCore)/svg/SVGStringList.idl \ > $(WebCore)/svg/SVGStyleElement.idl \ >- $(WebCore)/svg/SVGStyledElement.idl \ > $(WebCore)/svg/SVGSwitchElement.idl \ > $(WebCore)/svg/SVGSymbolElement.idl \ > $(WebCore)/svg/SVGTRefElement.idl \ >@@ -5272,8 +5269,6 @@ webcore_svg_sources += \ > Source/WebCore/svg/SVGStringList.h \ > Source/WebCore/svg/SVGStyleElement.cpp \ > Source/WebCore/svg/SVGStyleElement.h \ >- Source/WebCore/svg/SVGStyledElement.cpp \ >- Source/WebCore/svg/SVGStyledElement.h \ > Source/WebCore/svg/SVGSVGElement.cpp \ > Source/WebCore/svg/SVGSVGElement.h \ > Source/WebCore/svg/SVGSwitchElement.cpp \ >diff --git a/Source/WebCore/Target.pri b/Source/WebCore/Target.pri >index 3766e0573deacc694271a9ab2fb7363cd97bfb88..38fcc391b211fa87792ddc93d308832eacf17d65 100644 >--- a/Source/WebCore/Target.pri >+++ b/Source/WebCore/Target.pri >@@ -2794,7 +2794,6 @@ HEADERS += \ > svg/SVGStopElement.h \ > svg/SVGStringList.h \ > svg/SVGStyleElement.h \ >- svg/SVGStyledElement.h \ > svg/SVGSVGElement.h \ > svg/SVGSwitchElement.h \ > svg/SVGSymbolElement.h \ >@@ -3861,7 +3860,6 @@ enable?(SVG) { > svg/SVGStopElement.cpp \ > svg/SVGStringList.cpp \ > svg/SVGStyleElement.cpp \ >- svg/SVGStyledElement.cpp \ > svg/SVGSwitchElement.cpp \ > svg/SVGSymbolElement.cpp \ > svg/SVGTRefElement.cpp \ >diff --git a/Source/WebCore/WebCore.order b/Source/WebCore/WebCore.order >index cedcf9d54fea9ebf1fa3dd380d2fc1d396a3ded5..caf8ddd0a03ef5fb3ca6d6d3ebc09d93db0ef63e 100644 >--- a/Source/WebCore/WebCore.order >+++ b/Source/WebCore/WebCore.order >@@ -9947,7 +9947,6 @@ __ZN7WebCore13SVGSVGElement6createERKNS_13QualifiedNameEPNS_8DocumentE > __ZN7WebCore13SVGSVGElementC1ERKNS_13QualifiedNameEPNS_8DocumentE > __ZN7WebCore29SVGStyledTransformableElementC2ERKNS_13QualifiedNameEPNS_8DocumentENS_4Node16ConstructionTypeE > __ZN7WebCore25SVGStyledLocatableElementC2ERKNS_13QualifiedNameEPNS_8DocumentENS_4Node16ConstructionTypeE >-__ZN7WebCore16SVGStyledElementC2ERKNS_13QualifiedNameEPNS_8DocumentENS_4Node16ConstructionTypeE > __ZN7WebCore10SVGElementC2ERKNS_13QualifiedNameEPNS_8DocumentENS_4Node16ConstructionTypeE > __ZN7WebCore25SVGAttributeToPropertyMap11addPropertyEPKNS_15SVGPropertyInfoE > __ZN3WTF6VectorIPKN7WebCore15SVGPropertyInfoELm0ENS_15CrashOnOverflowEE14expandCapacityEmPKS4_ >@@ -9956,7 +9955,7 @@ __ZN3WTF9HashTableIN7WebCore13QualifiedNameENS_12KeyValuePairIS2_NS_6OwnPtrINS_6 > __ZN3WTF9HashTableIN7WebCore13QualifiedNameENS_12KeyValuePairIS2_NS_6OwnPtrINS_6VectorIPKNS1_15SVGPropertyInfoELm0ENS_15CrashOnOverflowEEEEEEENS_24KeyValuePairKeyExtractorISC_EENS1_17QualifiedNameHashENS_18HashMapValueTraitsINS_10HashTraitsIS2_EENSH_ISB_EEEESI_E3addINS_17HashMapTranslatorISK_SF_EES2_NS_10PassOwnPtrISA_EEEENS_18HashTableAddResultINS_17HashTableIteratorIS2_SC_SE_SF_SK_SI_EEEERKT0_RKT1_ > __ZN3WTF9HashTableIN7WebCore13QualifiedNameENS_12KeyValuePairIS2_NS_6OwnPtrINS_6VectorIPKNS1_15SVGPropertyInfoELm0ENS_15CrashOnOverflowEEEEEEENS_24KeyValuePairKeyExtractorISC_EENS1_17QualifiedNameHashENS_18HashMapValueTraitsINS_10HashTraitsIS2_EENSH_ISB_EEEESI_E6lookupINS_22IdentityHashTranslatorISF_EES2_EEPSC_RKT0_ > __ZN3WTF9HashTableIN7WebCore13QualifiedNameENS_12KeyValuePairIS2_NS_6OwnPtrINS_6VectorIPKNS1_15SVGPropertyInfoELm0ENS_15CrashOnOverflowEEEEEEENS_24KeyValuePairKeyExtractorISC_EENS1_17QualifiedNameHashENS_18HashMapValueTraitsINS_10HashTraitsIS2_EENSH_ISB_EEEESI_E6rehashEi >-__ZN7WebCore16SVGStyledElement22attributeToPropertyMapEv >+__ZN7WebCore16SVGElement22attributeToPropertyMapEv > __ZN7WebCore25SVGAttributeToPropertyMap13addPropertiesERKS0_ > __ZN7WebCore8SVGTestsC2Ev > __ZN7WebCore11parseNumberERPKtS1_Rfb >@@ -9966,8 +9965,8 @@ __ZN7WebCore17SMILTimeContainerC1EPNS_13SVGSVGElementE > __ZN7WebCore29SVGStyledTransformableElement22attributeToPropertyMapEv > __ZN7WebCore8SVGTests22attributeToPropertyMapEv > __ZN7WebCore10SVGElement16attributeChangedERKNS_13QualifiedNameERKN3WTF12AtomicStringENS_7Element27AttributeModificationReasonE >-__ZNK7WebCore16SVGStyledElement23isPresentationAttributeERKNS_13QualifiedNameE >-__ZN7WebCore16SVGStyledElement32cssPropertyIdForSVGAttributeNameERKNS_13QualifiedNameE >+__ZNK7WebCore16SVGElement23isPresentationAttributeERKNS_13QualifiedNameE >+__ZN7WebCore16SVGElement32cssPropertyIdForSVGAttributeNameERKNS_13QualifiedNameE > __ZN3WTF9HashTableIPNS_16AtomicStringImplENS_12KeyValuePairIS2_N7WebCore13CSSPropertyIDEEENS_24KeyValuePairKeyExtractorIS6_EENS_7PtrHashIS2_EENS_18HashMapValueTraitsINS_10HashTraitsIS2_EENSC_IS5_EEEESD_E16lookupForWritingINS_22IdentityHashTranslatorISA_EES2_EENSt3__14pairIPS6_bEERKT0_ > __ZN3WTF9HashTableIPNS_16AtomicStringImplENS_12KeyValuePairIS2_N7WebCore13CSSPropertyIDEEENS_24KeyValuePairKeyExtractorIS6_EENS_7PtrHashIS2_EENS_18HashMapValueTraitsINS_10HashTraitsIS2_EENSC_IS5_EEEESD_E3addINS_17HashMapTranslatorISF_SA_EES2_S5_EENS_18HashTableAddResultINS_17HashTableIteratorIS2_S6_S8_SA_SF_SD_EEEERKT0_RKT1_ > __ZN3WTF9HashTableIPNS_16AtomicStringImplENS_12KeyValuePairIS2_N7WebCore13CSSPropertyIDEEENS_24KeyValuePairKeyExtractorIS6_EENS_7PtrHashIS2_EENS_18HashMapValueTraitsINS_10HashTraitsIS2_EENSC_IS5_EEEESD_E6lookupINS_22IdentityHashTranslatorISA_EES2_EEPS6_RKT0_ >@@ -9991,24 +9990,24 @@ __ZNK7WebCore13SVGSVGElement5widthEv > __ZN7WebCore13SVGSVGElement17widthPropertyInfoEv > __ZNK7WebCore13SVGSVGElement6heightEv > __ZN7WebCore13SVGSVGElement18heightPropertyInfoEv >-__ZN7WebCore16SVGStyledElement32updateRelativeLengthsInformationEbPS0_ >+__ZN7WebCore16SVGElement32updateRelativeLengthsInformationEbPS0_ > __ZN7WebCore15SVGFitToViewBox16isKnownAttributeERKNS_13QualifiedNameE > __ZN7WebCore8SVGTests21handleAttributeChangeEPNS_10SVGElementERKNS_13QualifiedNameE > __ZN7WebCore18SVGElementInstance31invalidateAllInstancesOfElementEPNS_10SVGElementE > __ZN7WebCore16HTMLElementStack22isHTMLIntegrationPointEPNS_13HTMLStackItemE > __ZN7WebCore16HTMLElementStack28isMathMLTextIntegrationPointEPNS_13HTMLStackItemE > __ZN7WebCore13SVGSVGElement12insertedIntoEPNS_13ContainerNodeE >-__ZN7WebCore16SVGStyledElement12insertedIntoEPNS_13ContainerNodeE >-__ZN7WebCore16SVGStyledElement29buildPendingResourcesIfNeededEv >-__ZNK7WebCore16SVGStyledElement28needsPendingResourceHandlingEv >+__ZN7WebCore16SVGElement12insertedIntoEPNS_13ContainerNodeE >+__ZN7WebCore16SVGElement29buildPendingResourcesIfNeededEv >+__ZNK7WebCore16SVGElement28needsPendingResourceHandlingEv > __ZN7WebCore15HTMLTreeBuilder28processTokenInForeignContentEPNS_15AtomicHTMLTokenE >-__ZN7WebCore16SVGStyledElement15childrenChangedEbPNS_4NodeES2_i >+__ZN7WebCore16SVGElement15childrenChangedEbPNS_4NodeES2_i > __ZN7WebCoreL20adjustSVGTagNameCaseEPNS_15AtomicHTMLTokenE > __ZN7WebCore8SVGNames10getSVGTagsEv > __ZN7WebCoreL12gConstructorERKNS_13QualifiedNameEPNS_8DocumentEb > __ZN7WebCore11SVGGElement6createERKNS_13QualifiedNameEPNS_8DocumentE > __ZN7WebCoreL40registerAnimatedPropertiesForSVGGElementEv >-__ZNK7WebCore16SVGStyledElement22selfHasRelativeLengthsEv >+__ZNK7WebCore16SVGElement22selfHasRelativeLengthsEv > __ZN7WebCoreL17circleConstructorERKNS_13QualifiedNameEPNS_8DocumentEb > __ZN7WebCore16SVGCircleElement6createERKNS_13QualifiedNameEPNS_8DocumentE > __ZN7WebCore16SVGCircleElementC1ERKNS_13QualifiedNameEPNS_8DocumentE >@@ -10032,10 +10031,10 @@ __ZN7WebCore16SVGCircleElement14cyPropertyInfoEv > __ZNK7WebCore16SVGCircleElement1rEv > __ZN7WebCore16SVGCircleElement13rPropertyInfoEv > __ZN7WebCore29SVGStyledTransformableElement14parseAttributeERKNS_13QualifiedNameERKN3WTF12AtomicStringE >-__ZN7WebCore16SVGStyledElement14parseAttributeERKNS_13QualifiedNameERKN3WTF12AtomicStringE >+__ZN7WebCore16SVGElement14parseAttributeERKNS_13QualifiedNameERKN3WTF12AtomicStringE > __ZN7WebCore29SVGStyledTransformableElement19svgAttributeChangedERKNS_13QualifiedNameE >-__ZN7WebCore16SVGStyledElement19svgAttributeChangedERKNS_13QualifiedNameE >-__ZNK7WebCore16SVGStyledElement9classNameEv >+__ZN7WebCore16SVGElement19svgAttributeChangedERKNS_13QualifiedNameE >+__ZNK7WebCore16SVGElement9classNameEv > __ZN7WebCore10SVGElement21finishParsingChildrenEv > __ZNK7WebCore10SVGElement24isOutermostSVGSVGElementEv > __ZN7WebCore10SVGElement26sendSVGLoadEventIfPossibleEb >@@ -10153,7 +10152,7 @@ __ZN7WebCore16HTMLStyleElement11removedFromEPNS_13ContainerNodeE > __ZN7WebCore15HTMLFormElement11removedFromEPNS_13ContainerNodeE > __ZN7WebCore21FormAssociatedElement19formRemovedFromTreeEPKNS_4NodeE > __ZN7WebCore13SVGSVGElement11removedFromEPNS_13ContainerNodeE >-__ZN7WebCore16SVGStyledElement11removedFromEPNS_13ContainerNodeE >+__ZN7WebCore16SVGElement11removedFromEPNS_13ContainerNodeE > __ZN7WebCore10SVGElement11removedFromEPNS_13ContainerNodeE > __ZN7WebCore14SVGPathElement11removedFromEPNS_13ContainerNodeE > __ZN7WebCore15HTMLFormElement37copyNonAttributePropertiesFromElementERKNS_7ElementE >@@ -10166,8 +10165,8 @@ __ZNK7WebCore17SMILTimeContainer9isStartedEv > __ZN7WebCore17SMILTimeContainer5beginEv > __ZN7WebCore17SMILTimeContainer16updateAnimationsENS_8SMILTimeEb > __ZNK7WebCore21SVGDocumentExtensions18hasPendingResourceERKN3WTF12AtomicStringE >-__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES8_E3addINS_22IdentityHashTranslatorIS6_EES3_S3_EENS_18HashTableAddResultINS_17HashTableIteratorIS3_S3_S4_S6_S8_S8_EEEERKT0_RKT1_ >-__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES8_E6rehashEi >+__ZN3WTF9HashTableIPN7WebCore16SVGElementES3_NS_17IdentityExtractorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES8_E3addINS_22IdentityHashTranslatorIS6_EES3_S3_EENS_18HashTableAddResultINS_17HashTableIteratorIS3_S3_S4_S6_S8_S8_EEEERKT0_RKT1_ >+__ZN3WTF9HashTableIPN7WebCore16SVGElementES3_NS_17IdentityExtractorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES8_E6rehashEi > __ZN7WebCore21jsHTMLElementChildrenEPN3JSC9ExecStateENS0_7JSValueENS0_12PropertyNameE > __ZN7WebCore16JSHTMLCollection6createEPN3JSC9StructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_14HTMLCollectionEEE > __ZN7WebCore16JSHTMLCollectionC1EPN3JSC9StructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_14HTMLCollectionEEE >@@ -10505,7 +10504,7 @@ __ZNK7WebCore11RenderVideo27computeReplacedLogicalWidthENS_22ShouldComputePrefer > __ZNK7WebCore11RenderVideo28computeReplacedLogicalHeightEv > __ZN7WebCore27backgroundPositionShorthandEv > __ZN7WebCore13SVGSVGElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE >-__ZN7WebCore13RenderSVGRootC1EPNS_16SVGStyledElementE >+__ZN7WebCore13RenderSVGRootC1EPNS_16SVGElementE > __ZN7WebCore13RenderSVGRoot15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE > __ZN7WebCore13RenderSVGRoot14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE > __ZNK7WebCore13RenderSVGRoot9isSVGRootEv >@@ -10515,11 +10514,11 @@ __ZNK7WebCore13RenderSVGRoot15canHaveChildrenEv > __ZNK7WebCore10SVGElement25childShouldCreateRendererERKNS_20NodeRenderingContextE > __ZNK7WebCore14SVGPolyElement7isValidEv > __ZNK7WebCore8SVGTests7isValidEv >-__ZN7WebCore16SVGStyledElement36collectStyleForPresentationAttributeERKNS_13QualifiedNameERKN3WTF12AtomicStringEPNS_23MutableStylePropertySetE >+__ZN7WebCore16SVGElement36collectStyleForPresentationAttributeERKNS_13QualifiedNameERKN3WTF12AtomicStringEPNS_23MutableStylePropertySetE > __ZN7WebCore14SVGRenderStyle12setFillPaintENS_8SVGPaint12SVGPaintTypeERKNS_5ColorERKN3WTF6StringEbb > __ZN7WebCore7DataRefINS_13StyleFillDataEE6accessEv > __ZN7WebCore13StyleFillDataC1ERKS0_ >-__ZN7WebCore16SVGStyledElement16rendererIsNeededERKNS_20NodeRenderingContextE >+__ZN7WebCore16SVGElement16rendererIsNeededERKNS_20NodeRenderingContextE > __ZN7WebCore29SVGStyledTransformableElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE > __ZN7WebCore13RenderSVGPathC1EPNS_29SVGStyledTransformableElementE > __ZN7WebCore20RenderSVGModelObject15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE >@@ -10548,13 +10547,13 @@ __ZNK7WebCore14SVGPathElement7isValidEv > __ZN7WebCore14SVGPathElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE > __ZNK7WebCore14SVGDefsElement7isValidEv > __ZN7WebCore14SVGDefsElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE >-__ZN7WebCore24RenderSVGHiddenContainerC1EPNS_16SVGStyledElementE >+__ZN7WebCore24RenderSVGHiddenContainerC1EPNS_16SVGElementE > __ZNK7WebCore18RenderSVGContainer14isSVGContainerEv > __ZNK7WebCore18RenderSVGContainer15virtualChildrenEv > __ZNK7WebCore10SVGElement7isValidEv > __ZN7WebCore24SVGLinearGradientElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE > __ZN7WebCore31RenderSVGResourceLinearGradientC1EPNS_24SVGLinearGradientElementE >-__ZN7WebCore26RenderSVGResourceContainerC2EPNS_16SVGStyledElementE >+__ZN7WebCore26RenderSVGResourceContainerC2EPNS_16SVGElementE > __ZN7WebCore24LinearGradientAttributesC2Ev > __ZN7WebCore26RenderSVGResourceContainer14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE > __ZN7WebCore26RenderSVGResourceContainer16registerResourceEv >@@ -10671,7 +10670,7 @@ __ZN7WebCore13SVGSVGElement31preserveAspectRatioPropertyInfoEv > __ZN7WebCore15SVGFitToViewBox22viewBoxToViewTransformERKNS_9FloatRectERKNS_22SVGPreserveAspectRatioEff > __ZN7WebCore16SVGRenderSupport14layoutChildrenEPNS_12RenderObjectEb > __ZN7WebCore13RenderSVGRoot21needsBoundariesUpdateEv >-__ZNK7WebCore16SVGStyledElement18isSVGStyledElementEv >+__ZNK7WebCore16SVGElement18isSVGElementEv > __ZN7WebCore14RenderSVGShape6layoutEv > __ZN7WebCore13RenderSVGPath22updateShapeFromElementEv > __ZN7WebCore14RenderSVGShape22updateShapeFromElementEv >@@ -11189,8 +11188,8 @@ __ZNK7WebCore19CachedCSSStyleSheet13purgePriorityEv > __ZN7WebCore15PurgeableBuffer13makePurgeableEb > __ZN7WebCore9ClassListD0Ev > __ZN7WebCore12StyleElement19removedFromDocumentEPNS_8DocumentEPNS_7ElementE >-__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES8_E6lookupINS_22IdentityHashTranslatorIS6_EES3_EEPS3_RKT0_ >-__ZN3WTF7HashSetIPN7WebCore16SVGStyledElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE6removeERKS3_ >+__ZN3WTF9HashTableIPN7WebCore16SVGElementES3_NS_17IdentityExtractorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES8_E6lookupINS_22IdentityHashTranslatorIS6_EES3_EEPS3_RKT0_ >+__ZN3WTF7HashSetIPN7WebCore16SVGElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE6removeERKS3_ > __ZN7WebCore19CachedCSSStyleSheetD0Ev > __ZN7WebCore19CachedCSSStyleSheetD2Ev > __ZThn48_N7WebCore8DOMTimer16contextDestroyedEv >@@ -11361,22 +11360,22 @@ __ZN7WebCore18createJSSVGWrapperEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEN3WTF1 > __ZN7WebCoreL26createSVGSVGElementWrapperEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_10SVGElementEEE > __ZN7WebCore15getDOMStructureINS_15JSSVGSVGElementEEEPN3JSC9StructureEPNS2_9ExecStateEPNS_17JSDOMGlobalObjectE > __ZN7WebCore15JSSVGSVGElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE >-__ZN7WebCore27JSSVGStyledElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE >-__ZN7WebCore15getDOMStructureINS_18JSSVGStyledElementEEEPN3JSC9StructureEPNS2_9ExecStateEPNS_17JSDOMGlobalObjectE >-__ZN7WebCore18JSSVGStyledElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE >+__ZN7WebCore27JSSVGElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE >+__ZN7WebCore15getDOMStructureINS_18JSSVGElementEEEPN3JSC9StructureEPNS2_9ExecStateEPNS_17JSDOMGlobalObjectE >+__ZN7WebCore18JSSVGElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE > __ZN7WebCore21JSSVGElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE > __ZN7WebCore15getDOMStructureINS_12JSSVGElementEEEPN3JSC9StructureEPNS2_9ExecStateEPNS_17JSDOMGlobalObjectE > __ZN7WebCore12JSSVGElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE > __ZN7WebCore15JSSVGSVGElement6createEPN3JSC9StructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_13SVGSVGElementEEE > __ZN7WebCore15JSSVGSVGElementC1EPN3JSC9StructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_13SVGSVGElementEEE >-__ZN7WebCore18JSSVGStyledElementC2EPN3JSC9StructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_16SVGStyledElementEEE >+__ZN7WebCore18JSSVGElementC2EPN3JSC9StructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_16SVGElementEEE > __ZN7WebCore12JSSVGElementC2EPN3JSC9StructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_10SVGElementEEE > __ZN7WebCore15JSSVGSVGElement14finishCreationERN3JSC2VME >-__ZN7WebCore18JSSVGStyledElement14finishCreationERN3JSC2VME >+__ZN7WebCore18JSSVGElement14finishCreationERN3JSC2VME > __ZN7WebCore12JSSVGElement14finishCreationERN3JSC2VME > __ZN7WebCore12cacheWrapperINS_13SVGSVGElementEEEvPNS_15DOMWrapperWorldEPT_PNS_12JSDOMWrapperE > __ZN7WebCore15JSSVGSVGElement18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE >-__ZN7WebCore18JSSVGStyledElement18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE >+__ZN7WebCore18JSSVGElement18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE > __ZN7WebCore12JSSVGElement18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE > __ZN3JSC18getStaticValueSlotIN7WebCore12JSSVGElementENS1_9JSElementEEEbPNS_9ExecStateEPKNS_9HashTableEPT_NS_12PropertyNameERNS_12PropertySlotE > __ZN7WebCore24JSSVGSVGElementPrototype18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE >@@ -13611,7 +13610,7 @@ __ZNK7WebCore9FillLayer9xPositionEv > __ZNK7WebCore9FillLayer9yPositionEv > __ZNK7WebCore9FillLayer10sizeLengthEv > __ZNK3WTF12StringAppendIPKcNS_6StringEEcvNS_12AtomicStringEEv >-__ZNK7WebCore16SVGStyledElement22instanceUpdatesBlockedEv >+__ZNK7WebCore16SVGElement22instanceUpdatesBlockedEv > __ZNK7WebCore10SVGElement19instancesForElementEv > __ZN7WebCore11SVGGElement14parseAttributeERKNS_13QualifiedNameERKN3WTF12AtomicStringE > __ZN7WebCore11SVGGElement20isSupportedAttributeERKNS_13QualifiedNameE >@@ -16827,8 +16826,8 @@ __ZN3WTF9HashTableIPN7WebCore11RenderLayerES3_NS_17IdentityExtractorENS_7PtrHash > __ZNK7WebCore17KeyframeAnimation23hasAnimationForPropertyENS_13CSSPropertyIDE > __ZN7WebCore15GraphicsLayerCA21setAnimationKeyframesERKNS_17KeyframeValueListEPKNS_9AnimationEPNS_19PlatformCAAnimationE > __ZN7WebCore19PlatformCAAnimation9setValuesERKN3WTF6VectorIfLm0ENS1_15CrashOnOverflowEEE >-__ZN7WebCore23jsSVGStyledElementStyleEPN3JSC9ExecStateENS0_7JSValueENS0_12PropertyNameE >-__ZN7WebCore27JSSVGStyledElementPrototype18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE >+__ZN7WebCore23jsSVGElementStyleEPN3JSC9ExecStateENS0_7JSValueENS0_12PropertyNameE >+__ZN7WebCore27JSSVGElementPrototype18getOwnPropertySlotEPN3JSC6JSCellEPNS1_9ExecStateENS1_12PropertyNameERNS1_12PropertySlotE > __ZN7WebCoreL15descConstructorERKNS_13QualifiedNameEPNS_8DocumentEb > __ZN7WebCore14SVGDescElement6createERKNS_13QualifiedNameEPNS_8DocumentE > __ZN7WebCoreL27createSVGDescElementWrapperEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrINS_10SVGElementEEE >@@ -18781,7 +18780,7 @@ __ZN7WebCore23SVGFEColorMatrixElement32detachAnimatedValuesListWrappersEj > __ZN3WTF6VectorIfLm0ENS_15CrashOnOverflowEEaSERKS2_ > __ZN7WebCore36SVGFilterPrimitiveStandardAttributes16rendererIsNeededERKNS_20NodeRenderingContextE > __ZN7WebCore36SVGFilterPrimitiveStandardAttributes14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE >-__ZN7WebCore24RenderSVGHiddenContainerC2EPNS_16SVGStyledElementE >+__ZN7WebCore24RenderSVGHiddenContainerC2EPNS_16SVGElementE > __ZN7WebCore32RenderSVGResourceFilterPrimitive14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE > __ZThn128_N7WebCore23RenderSVGResourceFilter25removeAllClientsFromCacheEb > __ZN7WebCoreL15maskConstructorERKNS_13QualifiedNameEPNS_8DocumentEb >@@ -23749,7 +23748,7 @@ __ZTVN7WebCore13SVGSetElementE > __ZTVN7WebCore14SVGSMILElementE > __ZTVN7WebCore22ConditionEventListenerE > __ZTVN7WebCore14SVGStopElementE >-__ZTVN7WebCore16SVGStyledElementE >+__ZTVN7WebCore16SVGElementE > __ZTVN7WebCore29SVGGraphicsElementE > __ZTTN7WebCore29SVGGraphicsElementE > __ZTCN7WebCore29SVGGraphicsElementE144_NS_16SVGTransformableE >@@ -29621,11 +29620,11 @@ __ZZN7WebCore14SVGStopElement22attributeToPropertyMapEvE24s_attributeToPropertyM > __ZGVZN7WebCore14SVGStopElement22attributeToPropertyMapEvE24s_attributeToPropertyMap.b > __ZZN7WebCore14SVGStopElement20isSupportedAttributeERKNS_13QualifiedNameEE19supportedAttributes > __ZGVZN7WebCore14SVGStopElement20isSupportedAttributeERKNS_13QualifiedNameEE19supportedAttributes.b >-__ZZN7WebCore16SVGStyledElement21classNamePropertyInfoEvE14s_propertyInfo >-__ZGVZN7WebCore16SVGStyledElement21classNamePropertyInfoEvE14s_propertyInfo.b >-__ZZN7WebCore16SVGStyledElement22attributeToPropertyMapEvE24s_attributeToPropertyMap >-__ZGVZN7WebCore16SVGStyledElement22attributeToPropertyMapEvE24s_attributeToPropertyMap.b >-__ZZN7WebCore16SVGStyledElement32cssPropertyIdForSVGAttributeNameERKNS_13QualifiedNameEE19propertyNameToIdMap >+__ZZN7WebCore16SVGElement21classNamePropertyInfoEvE14s_propertyInfo >+__ZGVZN7WebCore16SVGElement21classNamePropertyInfoEvE14s_propertyInfo.b >+__ZZN7WebCore16SVGElement22attributeToPropertyMapEvE24s_attributeToPropertyMap >+__ZGVZN7WebCore16SVGElement22attributeToPropertyMapEvE24s_attributeToPropertyMap.b >+__ZZN7WebCore16SVGElement32cssPropertyIdForSVGAttributeNameERKNS_13QualifiedNameEE19propertyNameToIdMap > __ZZN7WebCore29SVGGraphicsElement21transformPropertyInfoEvE14s_propertyInfo > __ZGVZN7WebCore29SVGGraphicsElement21transformPropertyInfoEvE14s_propertyInfo.b > __ZZN7WebCore29SVGGraphicsElement22attributeToPropertyMapEvE24s_attributeToPropertyMap >diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj >index d025fce45c9ceed51a43156dd7f00a86f542f19c..c726ff71ad316042f1ea5e8c7a19bcba65a01fbe 100644 >--- a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj >+++ b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj >@@ -17603,20 +17603,6 @@ > <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild> > <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild> > </ClCompile> >- <ClCompile Include="..\svg\SVGStyledElement.cpp"> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild> >- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild> >- </ClCompile> > <ClCompile Include="..\svg\SVGStyleElement.cpp"> > <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> > <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> >@@ -20910,7 +20896,6 @@ > <ClInclude Include="..\svg\SVGSetElement.h" /> > <ClInclude Include="..\svg\SVGStopElement.h" /> > <ClInclude Include="..\svg\SVGStringList.h" /> >- <ClInclude Include="..\svg\SVGStyledElement.h" /> > <ClInclude Include="..\svg\SVGGraphicsElement.h" /> > <ClInclude Include="..\svg\SVGStyleElement.h" /> > <ClInclude Include="..\svg\SVGSVGElement.h" /> >diff --git a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters >index e1b75b852e80025f45761c081f4dad6eb7d74ded..88b4f58885f59d04968b8db30b61752f43fee9e3 100644 >--- a/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters >+++ b/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters >@@ -4803,9 +4803,6 @@ > <ClCompile Include="..\svg\SVGMaskElement.cpp"> > <Filter>rendering\svg</Filter> > </ClCompile> >- <ClCompile Include="..\svg\SVGStyledElement.cpp"> >- <Filter>rendering\svg</Filter> >- </ClCompile> > <ClCompile Include="..\svg\SVGStyleElement.cpp"> > <Filter>rendering\svg</Filter> > </ClCompile> >@@ -12154,9 +12151,6 @@ > <ClInclude Include="..\svg\SVGStringList.h"> > <Filter>rendering\svg</Filter> > </ClInclude> >- <ClInclude Include="..\svg\SVGStyledElement.h"> >- <Filter>rendering\svg</Filter> >- </ClInclude> > <ClInclude Include="..\svg\SVGGraphicsElement.h"> > <Filter>rendering\svg</Filter> > </ClInclude> >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index cbe345f01bbfedb985a08160e94ffaba6345c1e7..42c83d2f46207ff56b27ce1fedc89a598ee70675 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -4073,9 +4073,7 @@ > B2227AB50D00BF220071B782 /* SVGGraphicsElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B222791F0D00BF210071B782 /* SVGGraphicsElement.cpp */; }; > B2227AB60D00BF220071B782 /* SVGGraphicsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279200D00BF210071B782 /* SVGGraphicsElement.h */; }; > B2227AB70D00BF220071B782 /* SVGStyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279210D00BF210071B782 /* SVGStyleElement.cpp */; }; >- B2227AB70D00BF220071B783 /* SVGStyledElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279210D00BF210071B783 /* SVGStyledElement.cpp */; }; > B2227AB80D00BF220071B782 /* SVGStyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279220D00BF210071B782 /* SVGStyleElement.h */; }; >- B2227AB80D00BF220071B783 /* SVGStyledElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279220D00BF210071B783 /* SVGStyledElement.h */; }; > B2227ABA0D00BF220071B782 /* SVGSVGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279240D00BF210071B782 /* SVGSVGElement.cpp */; }; > B2227ABB0D00BF220071B782 /* SVGSVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22279250D00BF210071B782 /* SVGSVGElement.h */; }; > B2227ABD0D00BF220071B782 /* SVGSwitchElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22279270D00BF210071B782 /* SVGSwitchElement.cpp */; }; >@@ -4465,9 +4463,7 @@ > B2FA3DF80AB75A6F000E5AC4 /* JSSVGStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D100AB75A6E000E5AC4 /* JSSVGStringList.cpp */; }; > B2FA3DF90AB75A6F000E5AC4 /* JSSVGStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D110AB75A6E000E5AC4 /* JSSVGStringList.h */; }; > B2FA3DFA0AB75A6F000E5AC4 /* JSSVGStyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D120AB75A6E000E5AC4 /* JSSVGStyleElement.cpp */; }; >- B2FA3DFA0AB75A6F000E5AC5 /* JSSVGStyledElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D120AB75A6E000E5AC5 /* JSSVGStyledElement.cpp */; }; > B2FA3DFB0AB75A6F000E5AC4 /* JSSVGStyleElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D130AB75A6E000E5AC4 /* JSSVGStyleElement.h */; }; >- B2FA3DFB0AB75A6F000E5AC5 /* JSSVGStyledElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D130AB75A6E000E5AC5 /* JSSVGStyledElement.h */; }; > B2FA3DFC0AB75A6F000E5AC4 /* JSSVGSVGElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D140AB75A6F000E5AC4 /* JSSVGSVGElement.cpp */; }; > B2FA3DFD0AB75A6F000E5AC4 /* JSSVGSVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D150AB75A6F000E5AC4 /* JSSVGSVGElement.h */; }; > B2FA3DFE0AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2FA3D160AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp */; }; >@@ -10689,11 +10685,8 @@ > B222791F0D00BF210071B782 /* SVGGraphicsElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGraphicsElement.cpp; sourceTree = "<group>"; }; > B22279200D00BF210071B782 /* SVGGraphicsElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGGraphicsElement.h; sourceTree = "<group>"; }; > B22279210D00BF210071B782 /* SVGStyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGStyleElement.cpp; sourceTree = "<group>"; }; >- B22279210D00BF210071B783 /* SVGStyledElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGStyledElement.cpp; sourceTree = "<group>"; }; > B22279220D00BF210071B782 /* SVGStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGStyleElement.h; sourceTree = "<group>"; }; >- B22279220D00BF210071B783 /* SVGStyledElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGStyledElement.h; sourceTree = "<group>"; }; > B22279230D00BF210071B782 /* SVGStyleElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGStyleElement.idl; sourceTree = "<group>"; }; >- B22279230D00BF210071B783 /* SVGStyledElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGStyledElement.idl; sourceTree = "<group>"; }; > B22279240D00BF210071B782 /* SVGSVGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGSVGElement.cpp; sourceTree = "<group>"; }; > B22279250D00BF210071B782 /* SVGSVGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGSVGElement.h; sourceTree = "<group>"; }; > B22279260D00BF210071B782 /* SVGSVGElement.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGSVGElement.idl; sourceTree = "<group>"; }; >@@ -11113,9 +11106,7 @@ > B2FA3D100AB75A6E000E5AC4 /* JSSVGStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGStringList.cpp; sourceTree = "<group>"; }; > B2FA3D110AB75A6E000E5AC4 /* JSSVGStringList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGStringList.h; sourceTree = "<group>"; }; > B2FA3D120AB75A6E000E5AC4 /* JSSVGStyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGStyleElement.cpp; sourceTree = "<group>"; }; >- B2FA3D120AB75A6E000E5AC5 /* JSSVGStyledElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGStyledElement.cpp; sourceTree = "<group>"; }; > B2FA3D130AB75A6E000E5AC4 /* JSSVGStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGStyleElement.h; sourceTree = "<group>"; }; >- B2FA3D130AB75A6E000E5AC5 /* JSSVGStyledElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGStyledElement.h; sourceTree = "<group>"; }; > B2FA3D140AB75A6F000E5AC4 /* JSSVGSVGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGSVGElement.cpp; sourceTree = "<group>"; }; > B2FA3D150AB75A6F000E5AC4 /* JSSVGSVGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGSVGElement.h; sourceTree = "<group>"; }; > B2FA3D160AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGSwitchElement.cpp; sourceTree = "<group>"; }; >@@ -17096,8 +17087,6 @@ > B2FA3D0F0AB75A6E000E5AC4 /* JSSVGStopElement.h */, > B2FA3D100AB75A6E000E5AC4 /* JSSVGStringList.cpp */, > B2FA3D110AB75A6E000E5AC4 /* JSSVGStringList.h */, >- B2FA3D120AB75A6E000E5AC5 /* JSSVGStyledElement.cpp */, >- B2FA3D130AB75A6E000E5AC5 /* JSSVGStyledElement.h */, > B2FA3D120AB75A6E000E5AC4 /* JSSVGStyleElement.cpp */, > B2FA3D130AB75A6E000E5AC4 /* JSSVGStyleElement.h */, > B2FA3D140AB75A6F000E5AC4 /* JSSVGSVGElement.cpp */, >@@ -18075,9 +18064,6 @@ > B22279150D00BF210071B782 /* SVGStringList.cpp */, > B22279160D00BF210071B782 /* SVGStringList.h */, > B22279170D00BF210071B782 /* SVGStringList.idl */, >- B22279210D00BF210071B783 /* SVGStyledElement.cpp */, >- B22279220D00BF210071B783 /* SVGStyledElement.h */, >- B22279230D00BF210071B783 /* SVGStyledElement.idl */, > B22279210D00BF210071B782 /* SVGStyleElement.cpp */, > B22279220D00BF210071B782 /* SVGStyleElement.h */, > B22279230D00BF210071B782 /* SVGStyleElement.idl */, >@@ -22602,7 +22588,6 @@ > B2FA3DF50AB75A6F000E5AC4 /* JSSVGSetElement.h in Headers */, > B2FA3DF70AB75A6F000E5AC4 /* JSSVGStopElement.h in Headers */, > B2FA3DF90AB75A6F000E5AC4 /* JSSVGStringList.h in Headers */, >- B2FA3DFB0AB75A6F000E5AC5 /* JSSVGStyledElement.h in Headers */, > B2FA3DFB0AB75A6F000E5AC4 /* JSSVGStyleElement.h in Headers */, > B2FA3DFD0AB75A6F000E5AC4 /* JSSVGSVGElement.h in Headers */, > B2FA3DFF0AB75A6F000E5AC4 /* JSSVGSwitchElement.h in Headers */, >@@ -23616,7 +23601,6 @@ > 08CA3D4412894A3800FFF260 /* SVGStaticPropertyWithParentTearOff.h in Headers */, > B2227AA90D00BF220071B782 /* SVGStopElement.h in Headers */, > B2227AAC0D00BF220071B782 /* SVGStringList.h in Headers */, >- B2227AB80D00BF220071B783 /* SVGStyledElement.h in Headers */, > B2227AB80D00BF220071B782 /* SVGStyleElement.h in Headers */, > B2227ABB0D00BF220071B782 /* SVGSVGElement.h in Headers */, > B2227ABE0D00BF220071B782 /* SVGSwitchElement.h in Headers */, >@@ -25797,7 +25781,6 @@ > B2FA3DF40AB75A6F000E5AC4 /* JSSVGSetElement.cpp in Sources */, > B2FA3DF60AB75A6F000E5AC4 /* JSSVGStopElement.cpp in Sources */, > B2FA3DF80AB75A6F000E5AC4 /* JSSVGStringList.cpp in Sources */, >- B2FA3DFA0AB75A6F000E5AC5 /* JSSVGStyledElement.cpp in Sources */, > B2FA3DFA0AB75A6F000E5AC4 /* JSSVGStyleElement.cpp in Sources */, > B2FA3DFC0AB75A6F000E5AC4 /* JSSVGSVGElement.cpp in Sources */, > B2FA3DFE0AB75A6F000E5AC4 /* JSSVGSwitchElement.cpp in Sources */, >@@ -26656,7 +26639,6 @@ > E4AFD00F0DAF335500F5F55C /* SVGSMILElement.cpp in Sources */, > B2227AA80D00BF220071B782 /* SVGStopElement.cpp in Sources */, > B2227AAB0D00BF220071B782 /* SVGStringList.cpp in Sources */, >- B2227AB70D00BF220071B783 /* SVGStyledElement.cpp in Sources */, > B2227AB70D00BF220071B782 /* SVGStyleElement.cpp in Sources */, > B2227ABA0D00BF220071B782 /* SVGSVGElement.cpp in Sources */, > B2227ABD0D00BF220071B782 /* SVGSwitchElement.cpp in Sources */, >diff --git a/Source/WebCore/accessibility/AccessibilityNodeObject.cpp b/Source/WebCore/accessibility/AccessibilityNodeObject.cpp >index 5bf56de59d53832e32fae1cf9efb83c5a866e133..35b738a7dc0683dd34143274b63b258ad6339c17 100644 >--- a/Source/WebCore/accessibility/AccessibilityNodeObject.cpp >+++ b/Source/WebCore/accessibility/AccessibilityNodeObject.cpp >@@ -68,7 +68,6 @@ > #include "ProgressTracker.h" > #include "SVGElement.h" > #include "SVGNames.h" >-#include "SVGStyledElement.h" > #include "Text.h" > #include "TextControlInnerElements.h" > #include "TextIterator.h" >@@ -1222,8 +1221,8 @@ void AccessibilityNodeObject::alternativeText(Vector<AccessibilityText>& textOrd > > #if ENABLE(SVG) > // SVG elements all can have a <svg:title> element inside which should act as the descriptive text. >- if (node->isSVGElement() && toSVGElement(node)->isSVGStyledElement()) >- textOrder.append(AccessibilityText(toSVGStyledElement(node)->title(), AlternativeText)); >+ if (node->isSVGElement()) >+ textOrder.append(AccessibilityText(toSVGElement(node)->title(), AlternativeText)); > #endif > > #if ENABLE(MATHML) >@@ -1421,8 +1420,8 @@ String AccessibilityNodeObject::accessibilityDescription() const > > #if ENABLE(SVG) > // SVG elements all can have a <svg:title> element inside which should act as the descriptive text. >- if (m_node && m_node->isSVGElement() && toSVGElement(m_node)->isSVGStyledElement()) >- return toSVGStyledElement(m_node)->title(); >+ if (m_node && m_node->isSVGElement()) >+ return toSVGElement(m_node)->title(); > #endif > > #if ENABLE(MATHML) >diff --git a/Source/WebCore/css/SVGCSSStyleSelector.cpp b/Source/WebCore/css/SVGCSSStyleSelector.cpp >index 6f87231df8504b55650c722ca8cf60efb1851e64..c39723ca75a9cd4d257d0115eb1242b1d0c285c2 100644 >--- a/Source/WebCore/css/SVGCSSStyleSelector.cpp >+++ b/Source/WebCore/css/SVGCSSStyleSelector.cpp >@@ -37,11 +37,11 @@ > #include "Document.h" > #include "ShadowValue.h" > #include "SVGColor.h" >+#include "SVGElement.h" > #include "SVGNames.h" > #include "SVGPaint.h" > #include "SVGRenderStyle.h" > #include "SVGRenderStyleDefs.h" >-#include "SVGStyledElement.h" > #include "SVGURIReference.h" > #include <stdlib.h> > #include <wtf/MathExtras.h> >diff --git a/Source/WebCore/rendering/style/SVGRenderStyle.cpp b/Source/WebCore/rendering/style/SVGRenderStyle.cpp >index aca245aef3a68b39a49a34a5b889477cef305e8f..e571b1baca8e020ce549f9a3fa2aa51876e7ac3a 100644 >--- a/Source/WebCore/rendering/style/SVGRenderStyle.cpp >+++ b/Source/WebCore/rendering/style/SVGRenderStyle.cpp >@@ -34,7 +34,7 @@ > #include "CSSValueList.h" > #include "IntRect.h" > #include "NodeRenderStyle.h" >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > > using namespace std; > >diff --git a/Source/WebCore/rendering/svg/RenderSVGContainer.cpp b/Source/WebCore/rendering/svg/RenderSVGContainer.cpp >index 9305dc6b3fabcf1c5ac4c5e427916296a90b7229..8cc0565db7dd44799c7459ab914da96c4f5a1d5e 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGContainer.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGContainer.cpp >@@ -31,15 +31,15 @@ > #include "RenderSVGResource.h" > #include "RenderSVGResourceFilter.h" > #include "RenderView.h" >+#include "SVGElement.h" > #include "SVGRenderingContext.h" > #include "SVGResources.h" > #include "SVGResourcesCache.h" >-#include "SVGStyledElement.h" > #include <wtf/StackStats.h> > > namespace WebCore { > >-RenderSVGContainer::RenderSVGContainer(SVGStyledElement* node) >+RenderSVGContainer::RenderSVGContainer(SVGElement* node) > : RenderSVGModelObject(node) > , m_objectBoundingBoxValid(false) > , m_needsBoundariesUpdate(true) >diff --git a/Source/WebCore/rendering/svg/RenderSVGContainer.h b/Source/WebCore/rendering/svg/RenderSVGContainer.h >index 474ddb51408d83d523656ec5979a479a14ad8b0a..d3f7ab38d2c5c0338141fa28ccc846e690ce64a5 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGContainer.h >+++ b/Source/WebCore/rendering/svg/RenderSVGContainer.h >@@ -33,7 +33,7 @@ class SVGElement; > > class RenderSVGContainer : public RenderSVGModelObject { > public: >- explicit RenderSVGContainer(SVGStyledElement*); >+ explicit RenderSVGContainer(SVGElement*); > virtual ~RenderSVGContainer(); > > RenderObject* firstChild() const { ASSERT(children() == virtualChildren()); return children()->firstChild(); } >diff --git a/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp b/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp >index 2a015a5c09e768b0f46efca1358f21faabc9d435..49c86a4b25aefd35d06a66c8384ff1d03faaba66 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp >@@ -23,12 +23,12 @@ > #include "RenderSVGHiddenContainer.h" > > #include "RenderSVGPath.h" >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > #include <wtf/StackStats.h> > > namespace WebCore { > >-RenderSVGHiddenContainer::RenderSVGHiddenContainer(SVGStyledElement* element) >+RenderSVGHiddenContainer::RenderSVGHiddenContainer(SVGElement* element) > : RenderSVGContainer(element) > { > } >diff --git a/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h b/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h >index 298cd3c7978d9d104cac9735593e3a649be5fbb2..499449ac1c3b9e7c2b11f0554e53de6480b352b8 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h >+++ b/Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h >@@ -25,13 +25,13 @@ > > namespace WebCore { > >-class SVGStyledElement; >+class SVGElement; > > // This class is for containers which are never drawn, but do need to support style > // <defs>, <linearGradient>, <radialGradient> are all good examples > class RenderSVGHiddenContainer : public RenderSVGContainer { > public: >- explicit RenderSVGHiddenContainer(SVGStyledElement*); >+ explicit RenderSVGHiddenContainer(SVGElement*); > > virtual const char* renderName() const OVERRIDE { return "RenderSVGHiddenContainer"; } > >diff --git a/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp b/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp >index a338e1fe0c2e6a2062d1005fc4b9a8a573fce7e5..519609bacc7a3d07fed7672876a3b776f48072e7 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp >@@ -35,14 +35,14 @@ > > #include "RenderLayerModelObject.h" > #include "RenderSVGResource.h" >+#include "SVGElement.h" > #include "SVGNames.h" > #include "SVGResourcesCache.h" >-#include "SVGStyledElement.h" > #include "ShadowRoot.h" > > namespace WebCore { > >-RenderSVGModelObject::RenderSVGModelObject(SVGStyledElement* node) >+RenderSVGModelObject::RenderSVGModelObject(SVGElement* node) > : RenderObject(node) > , m_hasSVGShadow(false) > { >@@ -133,10 +133,8 @@ static void getElementCTM(SVGElement* element, AffineTransform& transform) > > while (current && current->isSVGElement()) { > SVGElement* currentElement = toSVGElement(current); >- if (currentElement->isSVGStyledElement()) { >- localTransform = currentElement->renderer()->localToParentTransform(); >- transform = localTransform.multiply(transform); >- } >+ localTransform = currentElement->renderer()->localToParentTransform(); >+ transform = localTransform.multiply(transform); > // For getCTM() computation, stop at the nearest viewport element > if (currentElement == stopAtElement) > break; >diff --git a/Source/WebCore/rendering/svg/RenderSVGModelObject.h b/Source/WebCore/rendering/svg/RenderSVGModelObject.h >index eb8794757cd8e296e8bc7d4968886bf7f4d83794..59ad200b1dff147fe768318b9cc1e064520775f7 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGModelObject.h >+++ b/Source/WebCore/rendering/svg/RenderSVGModelObject.h >@@ -43,11 +43,11 @@ namespace WebCore { > // required by SVG renders need to be declared on RenderObject, but shared > // logic can go in this class or in SVGRenderSupport. > >-class SVGStyledElement; >+class SVGElement; > > class RenderSVGModelObject : public RenderObject { > public: >- explicit RenderSVGModelObject(SVGStyledElement*); >+ explicit RenderSVGModelObject(SVGElement*); > > virtual LayoutRect clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const OVERRIDE; > virtual void computeFloatRectForRepaint(const RenderLayerModelObject* repaintContainer, FloatRect&, bool fixed = false) const OVERRIDE FINAL; >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp >index 9967d70edbc14d391c81522489c8a84a8d1046a1..90c79936352a7f760ecff8d1b58c894b50768f17 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp >@@ -45,7 +45,6 @@ > #include "SVGRenderingContext.h" > #include "SVGResources.h" > #include "SVGResourcesCache.h" >-#include "SVGStyledElement.h" > #include "SVGUnitTypes.h" > #include "SVGUseElement.h" > >@@ -233,7 +232,7 @@ bool RenderSVGResourceClipper::drawContentIntoMaskImage(ClipperData* clipperData > // Draw all clipPath children into a global mask. > for (Node* childNode = node()->firstChild(); childNode; childNode = childNode->nextSibling()) { > RenderObject* renderer = childNode->renderer(); >- if (!childNode->isSVGElement() || !toSVGElement(childNode)->isSVGStyledElement() || !renderer) >+ if (!childNode->isSVGElement() || !renderer) > continue; > if (renderer->needsLayout()) { > frame()->view()->setPaintBehavior(oldBehavior); >@@ -275,7 +274,7 @@ void RenderSVGResourceClipper::calculateClipContentRepaintRect() > // This is a rough heuristic to appraise the clip size and doesn't consider clip on clip. > for (Node* childNode = node()->firstChild(); childNode; childNode = childNode->nextSibling()) { > RenderObject* renderer = childNode->renderer(); >- if (!childNode->isSVGElement() || !toSVGElement(childNode)->isSVGStyledElement() || !renderer) >+ if (!childNode->isSVGElement() || !renderer) > continue; > if (!renderer->isSVGShape() && !renderer->isSVGText() && !childNode->hasTagName(SVGNames::useTag)) > continue; >@@ -305,7 +304,7 @@ bool RenderSVGResourceClipper::hitTestClipContent(const FloatRect& objectBoundin > > for (Node* childNode = node()->firstChild(); childNode; childNode = childNode->nextSibling()) { > RenderObject* renderer = childNode->renderer(); >- if (!childNode->isSVGElement() || !toSVGElement(childNode)->isSVGStyledElement() || !renderer) >+ if (!childNode->isSVGElement() || !renderer) > continue; > if (!renderer->isSVGShape() && !renderer->isSVGText() && !childNode->hasTagName(SVGNames::useTag)) > continue; >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp >index 38bd67a63736e71f7bab4bd31b8c0826c3c70504..00c5f07525e535282cd6a5c48a7bfc100f7cbc5a 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp >@@ -39,7 +39,7 @@ static inline SVGDocumentExtensions* svgExtensionsFromNode(Node* node) > return node->document()->accessSVGExtensions(); > } > >-RenderSVGResourceContainer::RenderSVGResourceContainer(SVGStyledElement* node) >+RenderSVGResourceContainer::RenderSVGResourceContainer(SVGElement* node) > : RenderSVGHiddenContainer(node) > , m_id(node->getIdAttribute()) > , m_registered(false) >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h >index b34b5e2ca36c2295f282c71fa1b736d8408a2955..da72cc96820093de9e0d7d9556c66726db1b0cc0 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h >@@ -31,7 +31,7 @@ class RenderLayer; > class RenderSVGResourceContainer : public RenderSVGHiddenContainer, > public RenderSVGResource { > public: >- RenderSVGResourceContainer(SVGStyledElement*); >+ RenderSVGResourceContainer(SVGElement*); > virtual ~RenderSVGResourceContainer(); > > virtual void layout() OVERRIDE; >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp >index aec1e7c1a19f1a824f33c2d4c08305761625468a..ace0553ac35492dc3cba2222ffd28fbf987f6e39 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp >@@ -44,7 +44,6 @@ > #include "SVGFilterPrimitiveStandardAttributes.h" > #include "SVGNames.h" > #include "SVGRenderingContext.h" >-#include "SVGStyledElement.h" > #include "SVGUnitTypes.h" > #include "Settings.h" > #include "SourceAlpha.h" >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h b/Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h >index 1397c7fa548679273133b8cca6e746a79b39bc7e..111f904b1b8370ad8dca9a8e197c31ad27b11178 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h >@@ -38,7 +38,7 @@ class FilterEffect; > > class RenderSVGResourceFilterPrimitive FINAL : public RenderSVGHiddenContainer { > public: >- explicit RenderSVGResourceFilterPrimitive(SVGStyledElement* filterPrimitiveElement) >+ explicit RenderSVGResourceFilterPrimitive(SVGElement* filterPrimitiveElement) > : RenderSVGHiddenContainer(filterPrimitiveElement) > { > } >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp >index bcf517aef844221d8b37baca74a19f69bd3ae7e7..126e515b80286f85a87cc55afd9e74b1b0af9f0c 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.cpp >@@ -31,7 +31,6 @@ > #include "SVGGraphicsElement.h" > #include "SVGMarkerElement.h" > #include "SVGRenderSupport.h" >-#include "SVGStyledElement.h" > #include <wtf/StackStats.h> > > namespace WebCore { >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h >index 78cce8fdd98f103e5bcba5a47ef9fa546f2b900e..6f8915e18b8f8acdd4d3a4683a323f9656117c93 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h >@@ -23,8 +23,8 @@ > #if ENABLE(SVG) > #include "FloatRect.h" > #include "RenderSVGResourceContainer.h" >+#include "SVGElement.h" > #include "SVGMarkerElement.h" >-#include "SVGStyledElement.h" > > #include <wtf/HashSet.h> > >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp >index a3bdec726f074a3ec102b7271d1f158d5f718e4d..d0161e3c661343d538480b4063509d8ca875bc08 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp >@@ -34,7 +34,6 @@ > #include "SVGElement.h" > #include "SVGMaskElement.h" > #include "SVGRenderingContext.h" >-#include "SVGStyledElement.h" > #include "SVGUnitTypes.h" > #include <wtf/Vector.h> > >@@ -135,7 +134,7 @@ bool RenderSVGResourceMasker::drawContentIntoMaskImage(MaskerData* maskerData, C > // Draw the content into the ImageBuffer. > for (Node* node = maskElement->firstChild(); node; node = node->nextSibling()) { > RenderObject* renderer = node->renderer(); >- if (!node->isSVGElement() || !toSVGElement(node)->isSVGStyledElement() || !renderer) >+ if (!node->isSVGElement() || !renderer) > continue; > if (renderer->needsLayout()) > return false; >@@ -164,7 +163,7 @@ void RenderSVGResourceMasker::calculateMaskContentRepaintRect() > { > for (Node* childNode = node()->firstChild(); childNode; childNode = childNode->nextSibling()) { > RenderObject* renderer = childNode->renderer(); >- if (!childNode->isSVGElement() || !toSVGElement(childNode)->isSVGStyledElement() || !renderer) >+ if (!childNode->isSVGElement() || !renderer) > continue; > RenderStyle* style = renderer->style(); > if (!style || style->display() == NONE || style->visibility() != VISIBLE) >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp b/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp >index b96f9194a57cc4f755599cf86015d278930c7311..607d5792bef9c674f7932e9898037c31a85127f6 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp >@@ -273,7 +273,7 @@ PassOwnPtr<ImageBuffer> RenderSVGResourcePattern::createTileImage(const PatternA > > // Draw the content into the ImageBuffer. > for (Node* node = attributes.patternContentElement()->firstChild(); node; node = node->nextSibling()) { >- if (!node->isSVGElement() || !toSVGElement(node)->isSVGStyledElement() || !node->renderer()) >+ if (!node->isSVGElement() || !node->renderer()) > continue; > if (node->renderer()->needsLayout()) > return nullptr; >diff --git a/Source/WebCore/rendering/svg/RenderSVGRoot.cpp b/Source/WebCore/rendering/svg/RenderSVGRoot.cpp >index b89e8de9f4625267677a53a8c6542cc48a00aeb2..6271dfa4627a16d96164489cfe7f915ad5b30f6d 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGRoot.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGRoot.cpp >@@ -38,13 +38,13 @@ > #include "RenderSVGResource.h" > #include "RenderSVGResourceContainer.h" > #include "RenderView.h" >+#include "SVGElement.h" > #include "SVGImage.h" > #include "SVGLength.h" > #include "SVGRenderingContext.h" > #include "SVGResources.h" > #include "SVGResourcesCache.h" > #include "SVGSVGElement.h" >-#include "SVGStyledElement.h" > #include "SVGViewSpec.h" > #include "TransformState.h" > #include <wtf/StackStats.h> >@@ -57,7 +57,7 @@ using namespace std; > > namespace WebCore { > >-RenderSVGRoot::RenderSVGRoot(SVGStyledElement* node) >+RenderSVGRoot::RenderSVGRoot(SVGElement* node) > : RenderReplaced(node) > , m_objectBoundingBoxValid(false) > , m_isLayoutSizeChanged(false) >diff --git a/Source/WebCore/rendering/svg/RenderSVGRoot.h b/Source/WebCore/rendering/svg/RenderSVGRoot.h >index 379cca3865d6219414a8fc117d74ccdf2db97cc8..3eb041f473eaed4ebedeba1f3202f36a0ef5a223 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGRoot.h >+++ b/Source/WebCore/rendering/svg/RenderSVGRoot.h >@@ -32,11 +32,11 @@ > namespace WebCore { > > class AffineTransform; >-class SVGStyledElement; >+class SVGElement; > > class RenderSVGRoot FINAL : public RenderReplaced { > public: >- explicit RenderSVGRoot(SVGStyledElement*); >+ explicit RenderSVGRoot(SVGElement*); > virtual ~RenderSVGRoot(); > > bool isEmbeddedThroughSVGImage() const; >diff --git a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp >index 834452d2099f01611636ac10d72c1150438fa2e5..25b90cee924bf0b0f8179b0510104d1992ee4bc6 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp >+++ b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp >@@ -34,7 +34,7 @@ > > namespace WebCore { > >-RenderSVGViewportContainer::RenderSVGViewportContainer(SVGStyledElement* node) >+RenderSVGViewportContainer::RenderSVGViewportContainer(SVGElement* node) > : RenderSVGContainer(node) > , m_didTransformToRootUpdate(false) > , m_isLayoutSizeChanged(false) >diff --git a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h >index d7c43e80f8f7ba81417e5b3b32f36b0b4e080f59..7ad94a546ace65dbb853735120f0b20ab89de04f 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h >+++ b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h >@@ -32,7 +32,7 @@ namespace WebCore { > // thus we inherit from RenderSVGContainer instead of RenderSVGTransformableContainer > class RenderSVGViewportContainer FINAL : public RenderSVGContainer { > public: >- explicit RenderSVGViewportContainer(SVGStyledElement*); >+ explicit RenderSVGViewportContainer(SVGElement*); > FloatRect viewport() const { return m_viewport; } > > bool isLayoutSizeChanged() const { return m_isLayoutSizeChanged; } >diff --git a/Source/WebCore/rendering/svg/SVGRenderSupport.cpp b/Source/WebCore/rendering/svg/SVGRenderSupport.cpp >index 4fba7740774dfd0e20d2c759a80e84c79ca3deb1..c68411af0f3bf416fbae633362123b5072363776 100644 >--- a/Source/WebCore/rendering/svg/SVGRenderSupport.cpp >+++ b/Source/WebCore/rendering/svg/SVGRenderSupport.cpp >@@ -38,9 +38,9 @@ > #include "RenderSVGRoot.h" > #include "RenderSVGText.h" > #include "RenderSVGViewportContainer.h" >+#include "SVGElement.h" > #include "SVGResources.h" > #include "SVGResourcesCache.h" >-#include "SVGStyledElement.h" > #include "TransformState.h" > > namespace WebCore { >@@ -254,7 +254,7 @@ void SVGRenderSupport::layoutChildren(RenderObject* start, bool selfNeedsLayout) > if (layoutSizeChanged) { > // When selfNeedsLayout is false and the layout size changed, we have to check whether this child uses relative lengths > if (SVGElement* element = child->node()->isSVGElement() ? toSVGElement(child->node()) : 0) { >- if (element->isSVGStyledElement() && toSVGStyledElement(element)->hasRelativeLengths()) { >+ if (element->hasRelativeLengths()) { > // When the layout size changed and when using relative values tell the RenderSVGShape to update its shape object > if (child->isSVGShape()) > toRenderSVGShape(child)->setNeedsShapeUpdate(); >diff --git a/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp b/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp >index 48823bcdaed0b4281d921d8a397589ef28b16e77..197c286a63be26b0da042b794509d9eb6abaea01 100644 >--- a/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp >+++ b/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp >@@ -59,6 +59,7 @@ > #include "RenderSVGText.h" > #include "RenderTreeAsText.h" > #include "SVGCircleElement.h" >+#include "SVGElement.h" > #include "SVGEllipseElement.h" > #include "SVGInlineTextBox.h" > #include "SVGLineElement.h" >@@ -73,7 +74,6 @@ > #include "SVGRectElement.h" > #include "SVGRootInlineBox.h" > #include "SVGStopElement.h" >-#include "SVGStyledElement.h" > > #include <math.h> > >diff --git a/Source/WebCore/rendering/svg/SVGResources.cpp b/Source/WebCore/rendering/svg/SVGResources.cpp >index 3b5c5e83c5f6fd4ee5be181df6d7d7c5d2154ae8..473a9e311d6dcfd76016a833c5dd4c02c8b8f268 100644 >--- a/Source/WebCore/rendering/svg/SVGResources.cpp >+++ b/Source/WebCore/rendering/svg/SVGResources.cpp >@@ -179,8 +179,7 @@ static inline RenderSVGResourceContainer* paintingResourceFromSVGPaint(Document* > static inline void registerPendingResource(SVGDocumentExtensions* extensions, const AtomicString& id, SVGElement* element) > { > ASSERT(element); >- ASSERT_WITH_SECURITY_IMPLICATION(element->isSVGStyledElement()); >- extensions->addPendingResource(id, toSVGStyledElement(element)); >+ extensions->addPendingResource(id, element); > } > > bool SVGResources::buildCachedResources(const RenderObject* object, const SVGRenderStyle* style) >diff --git a/Source/WebCore/rendering/svg/SVGResourcesCache.cpp b/Source/WebCore/rendering/svg/SVGResourcesCache.cpp >index 3f6e7dee15a7e237774f2c5643e39ed9ad6c2113..1f6877d7ac49a091a43f682530929c0965f6a2ff 100644 >--- a/Source/WebCore/rendering/svg/SVGResourcesCache.cpp >+++ b/Source/WebCore/rendering/svg/SVGResourcesCache.cpp >@@ -24,9 +24,9 @@ > #include "HTMLNames.h" > #include "RenderSVGResourceContainer.h" > #include "SVGDocumentExtensions.h" >+#include "SVGElement.h" > #include "SVGResources.h" > #include "SVGResourcesCycleSolver.h" >-#include "SVGStyledElement.h" > > namespace WebCore { > >diff --git a/Source/WebCore/svg/SVGAElement.cpp b/Source/WebCore/svg/SVGAElement.cpp >index 784d5603e55df41ea804b7839caa01d2f3dfddd6..d5ec6f6c1b1061bbe45fce8c1baa5467d748acdc 100644 >--- a/Source/WebCore/svg/SVGAElement.cpp >+++ b/Source/WebCore/svg/SVGAElement.cpp >@@ -83,7 +83,7 @@ String SVGAElement::title() const > return title; > > // Otherwise, use the title of this element. >- return SVGStyledElement::title(); >+ return SVGElement::title(); > } > > bool SVGAElement::isSupportedAttribute(const QualifiedName& attrName) >diff --git a/Source/WebCore/svg/SVGAllInOne.cpp b/Source/WebCore/svg/SVGAllInOne.cpp >index a1c50e8fd65c8977ada07e0205f4354047bc3c49..7b8185d4d81624e9c40d50a8d53ecb734b48988c 100644 >--- a/Source/WebCore/svg/SVGAllInOne.cpp >+++ b/Source/WebCore/svg/SVGAllInOne.cpp >@@ -157,7 +157,6 @@ > #include "SVGStopElement.cpp" > #include "SVGStringList.cpp" > #include "SVGStyleElement.cpp" >-#include "SVGStyledElement.cpp" > #include "SVGSwitchElement.cpp" > #include "SVGSymbolElement.cpp" > #include "SVGTRefElement.cpp" >diff --git a/Source/WebCore/svg/SVGAltGlyphDefElement.h b/Source/WebCore/svg/SVGAltGlyphDefElement.h >index ced3a108b6790440282487a837df197e98c71e1d..0f409dfe75ef7a473d68974a987c8bba8b1b4c4e 100644 >--- a/Source/WebCore/svg/SVGAltGlyphDefElement.h >+++ b/Source/WebCore/svg/SVGAltGlyphDefElement.h >@@ -34,6 +34,8 @@ public: > > private: > SVGAltGlyphDefElement(const QualifiedName&, Document*); >+ >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > }; > > } >diff --git a/Source/WebCore/svg/SVGAltGlyphItemElement.h b/Source/WebCore/svg/SVGAltGlyphItemElement.h >index 10dbab69e7f73428d1ad47aa885177f928e72eed..03c5a853c89edeec4a727885ac863ab3da2f932f 100644 >--- a/Source/WebCore/svg/SVGAltGlyphItemElement.h >+++ b/Source/WebCore/svg/SVGAltGlyphItemElement.h >@@ -34,6 +34,8 @@ public: > > private: > SVGAltGlyphItemElement(const QualifiedName&, Document*); >+ >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > }; > > } >diff --git a/Source/WebCore/svg/SVGAnimateElement.cpp b/Source/WebCore/svg/SVGAnimateElement.cpp >index dab7026f4a56bf7e685e822c8b7fa41de62a264d..16595d16052f30fd95e762b89febe0b1598b19d6 100644 >--- a/Source/WebCore/svg/SVGAnimateElement.cpp >+++ b/Source/WebCore/svg/SVGAnimateElement.cpp >@@ -30,8 +30,8 @@ > #include "QualifiedName.h" > #include "RenderObject.h" > #include "SVGAnimatorFactory.h" >+#include "SVGElement.h" > #include "SVGNames.h" >-#include "SVGStyledElement.h" > #include "StylePropertySet.h" > > namespace WebCore { >diff --git a/Source/WebCore/svg/SVGAnimatedType.cpp b/Source/WebCore/svg/SVGAnimatedType.cpp >index 33a18a7fb48a9131c630614375eb3968594d6cc3..b3fd7a0eb7acfdc12425430e589ae6815313e1b2 100644 >--- a/Source/WebCore/svg/SVGAnimatedType.cpp >+++ b/Source/WebCore/svg/SVGAnimatedType.cpp >@@ -251,7 +251,7 @@ String SVGAnimatedType::valueAsString() > ASSERT(m_data.string); > return *m_data.string; > >- // These types don't appear in the table in SVGStyledElement::cssPropertyToTypeMap() and thus don't need valueAsString() support. >+ // These types don't appear in the table in SVGElement::cssPropertyToTypeMap() and thus don't need valueAsString() support. > case AnimatedAngle: > case AnimatedBoolean: > case AnimatedEnumeration: >@@ -302,7 +302,7 @@ bool SVGAnimatedType::setValueAsString(const QualifiedName& attrName, const Stri > *m_data.string = value; > break; > >- // These types don't appear in the table in SVGStyledElement::cssPropertyToTypeMap() and thus don't need setValueAsString() support. >+ // These types don't appear in the table in SVGElement::cssPropertyToTypeMap() and thus don't need setValueAsString() support. > case AnimatedAngle: > case AnimatedBoolean: > case AnimatedEnumeration: >diff --git a/Source/WebCore/svg/SVGAnimationElement.cpp b/Source/WebCore/svg/SVGAnimationElement.cpp >index f5de47a3e44c7bc99d0c54e2816ed66beaee7a49..90ab0e0e11a7ea1c760cfb1cc04c6e447e721a6a 100644 >--- a/Source/WebCore/svg/SVGAnimationElement.cpp >+++ b/Source/WebCore/svg/SVGAnimationElement.cpp >@@ -35,10 +35,10 @@ > #include "FloatConversion.h" > #include "RenderObject.h" > #include "SVGAnimateElement.h" >+#include "SVGElement.h" > #include "SVGElementInstance.h" > #include "SVGNames.h" > #include "SVGParserUtilities.h" >-#include "SVGStyledElement.h" > #include <wtf/MathExtras.h> > > namespace WebCore { >@@ -354,10 +354,8 @@ bool SVGAnimationElement::isAccumulated() const > bool SVGAnimationElement::isTargetAttributeCSSProperty(SVGElement* targetElement, const QualifiedName& attributeName) > { > ASSERT(targetElement); >- if (!targetElement->isSVGStyledElement()) >- return false; > >- return SVGStyledElement::isAnimatableCSSProperty(attributeName); >+ return SVGElement::isAnimatableCSSProperty(attributeName); > } > > SVGAnimationElement::ShouldApplyAnimation SVGAnimationElement::shouldApplyAnimation(SVGElement* targetElement, const QualifiedName& attributeName) >@@ -634,7 +632,6 @@ void SVGAnimationElement::updateAnimation(float percent, unsigned repeatCount, S > void SVGAnimationElement::computeCSSPropertyValue(SVGElement* element, CSSPropertyID id, String& valueString) > { > ASSERT(element); >- ASSERT(element->isSVGStyledElement()); > > // Don't include any properties resulting from CSS Transitions/Animations or SMIL animations, as we want to retrieve the "base value". > element->setUseOverrideComputedStyle(true); >@@ -654,8 +651,6 @@ void SVGAnimationElement::adjustForInheritance(SVGElement* targetElement, const > return; > > SVGElement* svgParent = toSVGElement(parent); >- if (!svgParent->isSVGStyledElement()) >- return; > computeCSSPropertyValue(svgParent, cssPropertyID(attributeName.localName()), value); > } > >@@ -664,9 +659,9 @@ static bool inheritsFromProperty(SVGElement* targetElement, const QualifiedName& > ASSERT(targetElement); > DEFINE_STATIC_LOCAL(const AtomicString, inherit, ("inherit", AtomicString::ConstructFromLiteral)); > >- if (value.isEmpty() || value != inherit || !targetElement->isSVGStyledElement()) >+ if (value.isEmpty() || value != inherit) > return false; >- return SVGStyledElement::isAnimatableCSSProperty(attributeName); >+ return SVGElement::isAnimatableCSSProperty(attributeName); > } > > void SVGAnimationElement::determinePropertyValueTypes(const String& from, const String& to) >diff --git a/Source/WebCore/svg/SVGComponentTransferFunctionElement.h b/Source/WebCore/svg/SVGComponentTransferFunctionElement.h >index 3ecb1f714e033dff16c627bd395cb1ecd485482f..d5bf25f8f5d50ca1a1f04304ff1a300b79ec3d7a 100644 >--- a/Source/WebCore/svg/SVGComponentTransferFunctionElement.h >+++ b/Source/WebCore/svg/SVGComponentTransferFunctionElement.h >@@ -80,6 +80,8 @@ protected: > bool isSupportedAttribute(const QualifiedName&); > virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; > virtual void svgAttributeChanged(const QualifiedName&); >+ >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > > private: > BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGComponentTransferFunctionElement) >diff --git a/Source/WebCore/svg/SVGCursorElement.h b/Source/WebCore/svg/SVGCursorElement.h >index a17ee365da2b4a048a8ccbc8184d4caf8c753af8..8c5b3b3131cad007b3d064cd96297788a8803cf1 100644 >--- a/Source/WebCore/svg/SVGCursorElement.h >+++ b/Source/WebCore/svg/SVGCursorElement.h >@@ -54,6 +54,8 @@ private: > virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; > virtual void svgAttributeChanged(const QualifiedName&); > >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } >+ > virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const; > > BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGCursorElement) >diff --git a/Source/WebCore/svg/SVGDescElement.cpp b/Source/WebCore/svg/SVGDescElement.cpp >index 200f74824e2db07b8fc677e808a4b03c9e67a2af..dcebfb5afca77ee35766e9c6ae7bd57806740c31 100644 >--- a/Source/WebCore/svg/SVGDescElement.cpp >+++ b/Source/WebCore/svg/SVGDescElement.cpp >@@ -26,7 +26,7 @@ > namespace WebCore { > > inline SVGDescElement::SVGDescElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > { > ASSERT(hasTagName(SVGNames::descTag)); > } >diff --git a/Source/WebCore/svg/SVGDescElement.h b/Source/WebCore/svg/SVGDescElement.h >index 12fee823e8db7c56c6f3736eab5890d2487757c7..8a5cc4260e021345bd99a46a24b8d483cd1fe19e 100644 >--- a/Source/WebCore/svg/SVGDescElement.h >+++ b/Source/WebCore/svg/SVGDescElement.h >@@ -22,11 +22,11 @@ > #define SVGDescElement_h > > #if ENABLE(SVG) >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > > namespace WebCore { > >-class SVGDescElement FINAL : public SVGStyledElement { >+class SVGDescElement FINAL : public SVGElement { > public: > static PassRefPtr<SVGDescElement> create(const QualifiedName&, Document*); > >diff --git a/Source/WebCore/svg/SVGDescElement.idl b/Source/WebCore/svg/SVGDescElement.idl >index 1346b472bc7799ac01e00d2b0150bebe706c6ea4..db7b7d8160782a69b89e0bea64ebd90d9a8adf60 100644 >--- a/Source/WebCore/svg/SVGDescElement.idl >+++ b/Source/WebCore/svg/SVGDescElement.idl >@@ -25,6 +25,6 @@ > > [ > Conditional=SVG >-] interface SVGDescElement : SVGStyledElement { >+] interface SVGDescElement : SVGElement { > }; > >diff --git a/Source/WebCore/svg/SVGElement.cpp b/Source/WebCore/svg/SVGElement.cpp >index 703af9e719d69cafa5a5aeb4ec3c13032303299a..541e48fa121d3d6636edfa3a8b1422503967e725 100644 >--- a/Source/WebCore/svg/SVGElement.cpp >+++ b/Source/WebCore/svg/SVGElement.cpp >@@ -4,6 +4,7 @@ > * Copyright (C) 2008 Apple Inc. All rights reserved. > * Copyright (C) 2008 Alp Toker <alp@atoker.com> > * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> >+ * Copyright (C) 2013 Samsung Electronics. 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 >@@ -26,12 +27,20 @@ > #if ENABLE(SVG) > #include "SVGElement.h" > >+#include "Attr.h" > #include "CSSCursorImageValue.h" >+#include "CSSParser.h" > #include "DOMImplementation.h" > #include "Document.h" >+#include "ElementTraversal.h" > #include "Event.h" >+#include "EventNames.h" > #include "HTMLNames.h" > #include "RenderObject.h" >+#include "RenderSVGResource.h" >+#include "RenderSVGResourceClipper.h" >+#include "RenderSVGResourceFilter.h" >+#include "RenderSVGResourceMasker.h" > #include "SVGCursorElement.h" > #include "SVGDocumentExtensions.h" > #include "SVGElementInstance.h" >@@ -39,19 +48,113 @@ > #include "SVGGraphicsElement.h" > #include "SVGImageElement.h" > #include "SVGNames.h" >+#include "SVGRenderStyle.h" >+#include "SVGRenderSupport.h" > #include "SVGSVGElement.h" >+#include "SVGUseElement.h" > #include "ScriptEventListener.h" > #include "ShadowRoot.h" > #include "XLinkNames.h" > #include "XMLNames.h" >+#include <wtf/Assertions.h> >+#include <wtf/HashMap.h> >+#include <wtf/StdLibExtras.h> >+#include <wtf/text/WTFString.h> >+ > > namespace WebCore { > >+// Animated property definitions >+DEFINE_ANIMATED_STRING(SVGElement, HTMLNames::classAttr, ClassName, className) >+ >+BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGElement) >+ REGISTER_LOCAL_ANIMATED_PROPERTY(className) >+END_REGISTER_ANIMATED_PROPERTIES >+ > using namespace HTMLNames; >+using namespace SVGNames; >+ >+void mapAttributeToCSSProperty(HashMap<AtomicStringImpl*, CSSPropertyID>* propertyNameToIdMap, const QualifiedName& attrName) >+{ >+ // FIXME: when CSS supports "transform-origin" the special case for transform_originAttr can be removed. >+ CSSPropertyID propertyId = cssPropertyID(attrName.localName()); >+ if (!propertyId && attrName == transform_originAttr) >+ propertyId = CSSPropertyWebkitTransformOrigin; // cssPropertyID("-webkit-transform-origin") >+ ASSERT(propertyId > 0); >+ propertyNameToIdMap->set(attrName.localName().impl(), propertyId); >+} >+ >+typedef HashMap<QualifiedName, AnimatedPropertyType> AttributeToPropertyTypeMap; >+static inline AttributeToPropertyTypeMap& cssPropertyToTypeMap() >+{ >+ DEFINE_STATIC_LOCAL(AttributeToPropertyTypeMap, s_cssPropertyMap, ()); >+ >+ if (!s_cssPropertyMap.isEmpty()) >+ return s_cssPropertyMap; >+ >+ // Fill the map for the first use. >+ s_cssPropertyMap.set(alignment_baselineAttr, AnimatedString); >+ s_cssPropertyMap.set(baseline_shiftAttr, AnimatedString); >+ s_cssPropertyMap.set(buffered_renderingAttr, AnimatedString); >+ s_cssPropertyMap.set(clipAttr, AnimatedRect); >+ s_cssPropertyMap.set(clip_pathAttr, AnimatedString); >+ s_cssPropertyMap.set(clip_ruleAttr, AnimatedString); >+ s_cssPropertyMap.set(SVGNames::colorAttr, AnimatedColor); >+ s_cssPropertyMap.set(color_interpolationAttr, AnimatedString); >+ s_cssPropertyMap.set(color_interpolation_filtersAttr, AnimatedString); >+ s_cssPropertyMap.set(color_profileAttr, AnimatedString); >+ s_cssPropertyMap.set(color_renderingAttr, AnimatedString); >+ s_cssPropertyMap.set(cursorAttr, AnimatedString); >+ s_cssPropertyMap.set(displayAttr, AnimatedString); >+ s_cssPropertyMap.set(dominant_baselineAttr, AnimatedString); >+ s_cssPropertyMap.set(fillAttr, AnimatedColor); >+ s_cssPropertyMap.set(fill_opacityAttr, AnimatedNumber); >+ s_cssPropertyMap.set(fill_ruleAttr, AnimatedString); >+ s_cssPropertyMap.set(filterAttr, AnimatedString); >+ s_cssPropertyMap.set(flood_colorAttr, AnimatedColor); >+ s_cssPropertyMap.set(flood_opacityAttr, AnimatedNumber); >+ s_cssPropertyMap.set(font_familyAttr, AnimatedString); >+ s_cssPropertyMap.set(font_sizeAttr, AnimatedLength); >+ s_cssPropertyMap.set(font_stretchAttr, AnimatedString); >+ s_cssPropertyMap.set(font_styleAttr, AnimatedString); >+ s_cssPropertyMap.set(font_variantAttr, AnimatedString); >+ s_cssPropertyMap.set(font_weightAttr, AnimatedString); >+ s_cssPropertyMap.set(image_renderingAttr, AnimatedString); >+ s_cssPropertyMap.set(kerningAttr, AnimatedLength); >+ s_cssPropertyMap.set(letter_spacingAttr, AnimatedLength); >+ s_cssPropertyMap.set(lighting_colorAttr, AnimatedColor); >+ s_cssPropertyMap.set(marker_endAttr, AnimatedString); >+ s_cssPropertyMap.set(marker_midAttr, AnimatedString); >+ s_cssPropertyMap.set(marker_startAttr, AnimatedString); >+ s_cssPropertyMap.set(maskAttr, AnimatedString); >+ s_cssPropertyMap.set(mask_typeAttr, AnimatedString); >+ s_cssPropertyMap.set(opacityAttr, AnimatedNumber); >+ s_cssPropertyMap.set(overflowAttr, AnimatedString); >+ s_cssPropertyMap.set(pointer_eventsAttr, AnimatedString); >+ s_cssPropertyMap.set(shape_renderingAttr, AnimatedString); >+ s_cssPropertyMap.set(stop_colorAttr, AnimatedColor); >+ s_cssPropertyMap.set(stop_opacityAttr, AnimatedNumber); >+ s_cssPropertyMap.set(strokeAttr, AnimatedColor); >+ s_cssPropertyMap.set(stroke_dasharrayAttr, AnimatedLengthList); >+ s_cssPropertyMap.set(stroke_dashoffsetAttr, AnimatedLength); >+ s_cssPropertyMap.set(stroke_linecapAttr, AnimatedString); >+ s_cssPropertyMap.set(stroke_linejoinAttr, AnimatedString); >+ s_cssPropertyMap.set(stroke_miterlimitAttr, AnimatedNumber); >+ s_cssPropertyMap.set(stroke_opacityAttr, AnimatedNumber); >+ s_cssPropertyMap.set(stroke_widthAttr, AnimatedLength); >+ s_cssPropertyMap.set(text_anchorAttr, AnimatedString); >+ s_cssPropertyMap.set(text_decorationAttr, AnimatedString); >+ s_cssPropertyMap.set(text_renderingAttr, AnimatedString); >+ s_cssPropertyMap.set(vector_effectAttr, AnimatedString); >+ s_cssPropertyMap.set(visibilityAttr, AnimatedString); >+ s_cssPropertyMap.set(word_spacingAttr, AnimatedLength); >+ return s_cssPropertyMap; >+} > > SVGElement::SVGElement(const QualifiedName& tagName, Document* document) > : StyledElement(tagName, document, CreateSVGElement) > { >+ registerAnimatedPropertiesForSVGElement(); > } > > SVGElement::~SVGElement() >@@ -76,6 +179,11 @@ SVGElement::~SVGElement() > it = rareDataMap.find(this); > ASSERT(it != rareDataMap.end()); > rareDataMap.remove(it); >+ >+ // Clear HasSVGRareData flag now so that we are in a consistent state when >+ // calling rebuildAllElementReferencesForTarget() and >+ // removeAllElementReferencesForTarget() below. >+ clearHasSVGRareData(); > } > ASSERT(document()); > document()->accessSVGExtensions()->rebuildAllElementReferencesForTarget(this); >@@ -174,6 +282,8 @@ void SVGElement::setXmlbase(const String& value, ExceptionCode&) > void SVGElement::removedFrom(ContainerNode* rootParent) > { > bool wasInDocument = rootParent->inDocument(); >+ if (wasInDocument) >+ updateRelativeLengthsInformation(false, this); > > StyledElement::removedFrom(rootParent); > >@@ -181,6 +291,7 @@ void SVGElement::removedFrom(ContainerNode* rootParent) > document()->accessSVGExtensions()->rebuildAllElementReferencesForTarget(this); > document()->accessSVGExtensions()->removeAllElementReferencesForTarget(this); > } >+ SVGElementInstance::invalidateAllInstancesOfElement(this); > } > > SVGSVGElement* SVGElement::ownerSVGElement() const >@@ -329,6 +440,8 @@ void SVGElement::parseAttribute(const QualifiedName& name, const AtomicString& v > setAttributeEventListener(eventNames().focusoutEvent, createAttributeEventListener(this, name, value)); > else if (name == SVGNames::onactivateAttr) > setAttributeEventListener(eventNames().DOMActivateEvent, createAttributeEventListener(this, name, value)); >+ else if (name == HTMLNames::classAttr) >+ setClassNameBaseValue(value); > else if (SVGLangSpace::parseAttribute(name, value)) { > } else > StyledElement::parseAttribute(name, value); >@@ -337,6 +450,13 @@ void SVGElement::parseAttribute(const QualifiedName& name, const AtomicString& v > void SVGElement::animatedPropertyTypeForAttribute(const QualifiedName& attributeName, Vector<AnimatedPropertyType>& propertyTypes) > { > localAttributeToPropertyMap().animatedPropertyTypeForAttribute(attributeName, propertyTypes); >+ >+ if (!propertyTypes.isEmpty()) >+ return; >+ >+ AttributeToPropertyTypeMap& cssPropertyTypeMap = cssPropertyToTypeMap(); >+ if (cssPropertyTypeMap.contains(attributeName)) >+ propertyTypes.append(cssPropertyTypeMap.get(attributeName)); > } > > bool SVGElement::haveLoadedRequiredResources() >@@ -356,13 +476,9 @@ static inline void collectInstancesForSVGElement(SVGElement* element, HashSet<SV > if (element->containingShadowRoot()) > return; > >- if (!element->isSVGStyledElement()) >- return; >- >- SVGStyledElement* styledElement = toSVGStyledElement(element); >- ASSERT(!styledElement->instanceUpdatesBlocked()); >+ ASSERT(!element->instanceUpdatesBlocked()); > >- instances = styledElement->instancesForElement(); >+ instances = element->instancesForElement(); > } > > bool SVGElement::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> prpListener, bool useCapture) >@@ -563,12 +679,6 @@ void SVGElement::synchronizeAnimatedSVGAttribute(const QualifiedName& name) cons > nonConstThis->localAttributeToPropertyMap().synchronizeProperty(nonConstThis, name); > } > >-SVGAttributeToPropertyMap& SVGElement::localAttributeToPropertyMap() >-{ >- DEFINE_STATIC_LOCAL(SVGAttributeToPropertyMap, emptyMap, ()); >- return emptyMap; >-} >- > void SVGElement::synchronizeRequiredFeatures(SVGElement* contextElement) > { > ASSERT(contextElement); >@@ -735,12 +845,312 @@ bool SVGElement::isAnimatableAttribute(const QualifiedName& name) const > } > > if (name == classAttr) >- return isSVGStyledElement(); >+ return true; > > return animatableAttributes.contains(name); > } > #endif > >+String SVGElement::title() const >+{ >+ // According to spec, we should not return titles when hovering over root <svg> elements (those >+ // <title> elements are the title of the document, not a tooltip) so we instantly return. >+ if (isOutermostSVGSVGElement()) >+ return String(); >+ >+ // Walk up the tree, to find out whether we're inside a <use> shadow tree, to find the right title. >+ if (isInShadowTree()) { >+ Element* shadowHostElement = toShadowRoot(treeScope()->rootNode())->hostElement(); >+ // At this time, SVG nodes are not allowed in non-<use> shadow trees, so any shadow root we do >+ // have should be a use. The assert and following test is here to catch future shadow DOM changes >+ // that do enable SVG in a shadow tree. >+ ASSERT(!shadowHostElement || shadowHostElement->hasTagName(SVGNames::useTag)); >+ if (shadowHostElement && shadowHostElement->hasTagName(SVGNames::useTag)) { >+ SVGUseElement* useElement = toSVGUseElement(shadowHostElement); >+ >+ // If the <use> title is not empty we found the title to use. >+ String useTitle(useElement->title()); >+ if (!useTitle.isEmpty()) >+ return useTitle; >+ } >+ } >+ >+ // If we aren't an instance in a <use> or the <use> title was not found, then find the first >+ // <title> child of this element. >+ Element* titleElement = ElementTraversal::firstWithin(this); >+ for (; titleElement; titleElement = ElementTraversal::nextSibling(titleElement)) { >+ if (titleElement->hasTagName(SVGNames::titleTag) && titleElement->isSVGElement()) >+ break; >+ } >+ >+ // If a title child was found, return the text contents. >+ if (titleElement) >+ return titleElement->innerText(); >+ >+ // Otherwise return a null/empty string. >+ return String(); >+} >+ >+bool SVGElement::rendererIsNeeded(const RenderStyle& style) >+{ >+ // http://www.w3.org/TR/SVG/extend.html#PrivateData >+ // Prevent anything other than SVG renderers from appearing in our render tree >+ // Spec: SVG allows inclusion of elements from foreign namespaces anywhere >+ // with the SVG content. In general, the SVG user agent will include the unknown >+ // elements in the DOM but will otherwise ignore unknown elements. >+ if (!parentOrShadowHostElement() || parentOrShadowHostElement()->isSVGElement()) >+ return StyledElement::rendererIsNeeded(style); >+ >+ return false; >+} >+ >+CSSPropertyID SVGElement::cssPropertyIdForSVGAttributeName(const QualifiedName& attrName) >+{ >+ if (!attrName.namespaceURI().isNull()) >+ return CSSPropertyInvalid; >+ >+ static HashMap<AtomicStringImpl*, CSSPropertyID>* propertyNameToIdMap = 0; >+ if (!propertyNameToIdMap) { >+ propertyNameToIdMap = new HashMap<AtomicStringImpl*, CSSPropertyID>; >+ // This is a list of all base CSS and SVG CSS properties which are exposed as SVG XML attributes >+ mapAttributeToCSSProperty(propertyNameToIdMap, alignment_baselineAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, baseline_shiftAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, buffered_renderingAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, clipAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, clip_pathAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, clip_ruleAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, SVGNames::colorAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, color_interpolationAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, color_interpolation_filtersAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, color_profileAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, color_renderingAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, cursorAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, SVGNames::directionAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, displayAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, dominant_baselineAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, enable_backgroundAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, fillAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, fill_opacityAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, fill_ruleAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, filterAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, flood_colorAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, flood_opacityAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, font_familyAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, font_sizeAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, font_stretchAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, font_styleAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, font_variantAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, font_weightAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, glyph_orientation_horizontalAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, glyph_orientation_verticalAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, image_renderingAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, kerningAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, letter_spacingAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, lighting_colorAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, marker_endAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, marker_midAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, marker_startAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, maskAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, mask_typeAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, opacityAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, overflowAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, pointer_eventsAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, shape_renderingAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stop_colorAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stop_opacityAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, strokeAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stroke_dasharrayAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stroke_dashoffsetAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stroke_linecapAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stroke_linejoinAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stroke_miterlimitAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stroke_opacityAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, stroke_widthAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, text_anchorAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, text_decorationAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, text_renderingAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, transform_originAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, unicode_bidiAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, vector_effectAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, visibilityAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, word_spacingAttr); >+ mapAttributeToCSSProperty(propertyNameToIdMap, writing_modeAttr); >+ } >+ >+ return propertyNameToIdMap->get(attrName.localName().impl()); >+} >+ >+bool SVGElement::isAnimatableCSSProperty(const QualifiedName& attrName) >+{ >+ return cssPropertyToTypeMap().contains(attrName); >+} >+ >+bool SVGElement::isPresentationAttribute(const QualifiedName& name) const >+{ >+ if (cssPropertyIdForSVGAttributeName(name) > 0) >+ return true; >+ return StyledElement::isPresentationAttribute(name); >+} >+ >+void SVGElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style) >+{ >+ CSSPropertyID propertyID = cssPropertyIdForSVGAttributeName(name); >+ if (propertyID > 0) >+ addPropertyToPresentationAttributeStyle(style, propertyID, value); >+} >+ >+bool SVGElement::isKnownAttribute(const QualifiedName& attrName) >+{ >+ return isIdAttributeName(attrName); >+} >+ >+void SVGElement::svgAttributeChanged(const QualifiedName& attrName) >+{ >+ CSSPropertyID propId = cssPropertyIdForSVGAttributeName(attrName); >+ if (propId > 0) { >+ SVGElementInstance::invalidateAllInstancesOfElement(this); >+ return; >+ } >+ >+ if (attrName == HTMLNames::classAttr) { >+ classAttributeChanged(className()); >+ SVGElementInstance::invalidateAllInstancesOfElement(this); >+ return; >+ } >+ >+ if (isIdAttributeName(attrName)) { >+ RenderObject* object = renderer(); >+ // Notify resources about id changes, this is important as we cache resources by id in SVGDocumentExtensions >+ if (object && object->isSVGResourceContainer()) >+ object->toRenderSVGResourceContainer()->idChanged(); >+ if (inDocument()) >+ buildPendingResourcesIfNeeded(); >+ SVGElementInstance::invalidateAllInstancesOfElement(this); >+ return; >+ } >+} >+ >+Node::InsertionNotificationRequest SVGElement::insertedInto(ContainerNode* rootParent) >+{ >+ StyledElement::insertedInto(rootParent); >+ updateRelativeLengthsInformation(); >+ buildPendingResourcesIfNeeded(); >+ return InsertionDone; >+} >+ >+void SVGElement::buildPendingResourcesIfNeeded() >+{ >+ Document* document = this->document(); >+ if (!needsPendingResourceHandling() || !document || !inDocument() || isInShadowTree()) >+ return; >+ >+ SVGDocumentExtensions* extensions = document->accessSVGExtensions(); >+ String resourceId = getIdAttribute(); >+ if (!extensions->hasPendingResource(resourceId)) >+ return; >+ >+ // Mark pending resources as pending for removal. >+ extensions->markPendingResourcesForRemoval(resourceId); >+ >+ // Rebuild pending resources for each client of a pending resource that is being removed. >+ while (Element* clientElement = extensions->removeElementFromPendingResourcesForRemoval(resourceId)) { >+ ASSERT(clientElement->hasPendingResources()); >+ if (clientElement->hasPendingResources()) { >+ clientElement->buildPendingResource(); >+ extensions->clearHasPendingResourcesIfPossible(clientElement); >+ } >+ } >+} >+ >+void SVGElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) >+{ >+ StyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >+ >+ // Invalidate all SVGElementInstances associated with us >+ if (!changedByParser) >+ SVGElementInstance::invalidateAllInstancesOfElement(this); >+} >+ >+PassRefPtr<CSSValue> SVGElement::getPresentationAttribute(const String& name) >+{ >+ if (!hasAttributesWithoutUpdate()) >+ return 0; >+ >+ QualifiedName attributeName(nullAtom, name, nullAtom); >+ const Attribute* attribute = findAttributeByName(attributeName); >+ if (!attribute) >+ return 0; >+ >+ RefPtr<MutableStylePropertySet> style = MutableStylePropertySet::create(SVGAttributeMode); >+ CSSPropertyID propertyID = cssPropertyIdForSVGAttributeName(attribute->name()); >+ style->setProperty(propertyID, attribute->value()); >+ RefPtr<CSSValue> cssValue = style->getPropertyCSSValue(propertyID); >+ return cssValue ? cssValue->cloneForCSSOM() : 0; >+} >+ >+bool SVGElement::instanceUpdatesBlocked() const >+{ >+ return hasSVGRareData() && svgRareData()->instanceUpdatesBlocked(); >+} >+ >+void SVGElement::setInstanceUpdatesBlocked(bool value) >+{ >+ if (hasSVGRareData()) >+ svgRareData()->setInstanceUpdatesBlocked(value); >+} >+ >+AffineTransform SVGElement::localCoordinateSpaceTransform(SVGLocatable::CTMScope) const >+{ >+ // To be overriden by SVGGraphicsElement (or as special case SVGTextElement and SVGPatternElement) >+ return AffineTransform(); >+} >+ >+void SVGElement::updateRelativeLengthsInformation(bool hasRelativeLengths, SVGElement* element) >+{ >+ // If we're not yet in a document, this function will be called again from insertedInto(). Do nothing now. >+ if (!inDocument()) >+ return; >+ >+ // An element wants to notify us that its own relative lengths state changed. >+ // Register it in the relative length map, and register us in the parent relative length map. >+ // Register the parent in the grandparents map, etc. Repeat procedure until the root of the SVG tree. >+ >+ if (hasRelativeLengths) >+ m_elementsWithRelativeLengths.add(element); >+ else { >+ if (!m_elementsWithRelativeLengths.contains(element)) { >+ // We were never registered. Do nothing. >+ return; >+ } >+ >+ m_elementsWithRelativeLengths.remove(element); >+ } >+ >+ // Find first styled parent node, and notify it that we've changed our relative length state. >+ ContainerNode* node = parentNode(); >+ while (node) { >+ if (!node->isSVGElement()) >+ break; >+ >+ // Register us in the parent element map. >+ toSVGElement(node)->updateRelativeLengthsInformation(hasRelativeLengths, this); >+ break; >+ } >+} >+ >+bool SVGElement::isMouseFocusable() const >+{ >+ if (!isFocusable()) >+ return false; >+ Element* eventTarget = const_cast<SVGElement*>(this); >+ return eventTarget->hasEventListeners(eventNames().focusinEvent) || eventTarget->hasEventListeners(eventNames().focusoutEvent); >+} >+ >+bool SVGElement::isKeyboardFocusable(KeyboardEvent*) const >+{ >+ return isMouseFocusable(); >+} >+ > } > > #endif // ENABLE(SVG) >diff --git a/Source/WebCore/svg/SVGElement.h b/Source/WebCore/svg/SVGElement.h >index 75e05f98d363ed01fc09c6eda34e552a603b28e1..f83352144266586643b6d9015fb32e5c5cf7e687 100644 >--- a/Source/WebCore/svg/SVGElement.h >+++ b/Source/WebCore/svg/SVGElement.h >@@ -1,7 +1,8 @@ > /* > * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> >- * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> >+ * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> > * Copyright (C) 2009 Apple Inc. All rights reserved. >+ * Copyright (C) 2013 Samsung Electronics. 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 >@@ -23,6 +24,8 @@ > #define SVGElement_h > > #if ENABLE(SVG) >+#include "CSSPropertyNames.h" >+#include "SVGAnimatedString.h" > #include "SVGLangSpace.h" > #include "SVGLocatable.h" > #include "SVGParsingError.h" >@@ -30,11 +33,15 @@ > #include "StyledElement.h" > #include "Timer.h" > #include <wtf/HashMap.h> >+#include <wtf/HashSet.h> >+#include <wtf/PassRefPtr.h> > > namespace WebCore { > > class AffineTransform; > class CSSCursorImageValue; >+class CSSStyleDeclaration; >+class CSSValue; > class Document; > class SVGAttributeToPropertyMap; > class SVGCursorElement; >@@ -43,6 +50,8 @@ class SVGElementInstance; > class SVGElementRareData; > class SVGSVGElement; > >+void mapAttributeToCSSProperty(HashMap<AtomicStringImpl*, CSSPropertyID>* propertyNameToIdMap, const QualifiedName& attrName); >+ > class SVGElement : public StyledElement, public SVGLangSpace { > public: > bool isOutermostSVGSVGElement() const; >@@ -53,9 +62,19 @@ public: > SVGSVGElement* ownerSVGElement() const; > SVGElement* viewportElement() const; > >+ virtual String title() const OVERRIDE; >+ static bool isAnimatableCSSProperty(const QualifiedName&); >+ bool isKnownAttribute(const QualifiedName&); >+ PassRefPtr<CSSValue> getPresentationAttribute(const String& name); >+ virtual bool supportsMarkers() const { return false; } >+ bool hasRelativeLengths() const { return !m_elementsWithRelativeLengths.isEmpty(); } >+ virtual bool needsPendingResourceHandling() const { return true; } >+ bool instanceUpdatesBlocked() const; >+ void setInstanceUpdatesBlocked(bool); >+ virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope) const; >+ > SVGDocumentExtensions* accessDocumentSVGExtensions(); > >- virtual bool isSVGStyledElement() const { return false; } > virtual bool isSVGGraphicsElement() const { return false; } > virtual bool isSVGSVGElement() const { return false; } > virtual bool isFilterEffect() const { return false; } >@@ -65,7 +84,7 @@ public: > // For SVGTests > virtual bool isValid() const { return true; } > >- virtual void svgAttributeChanged(const QualifiedName&) { } >+ virtual void svgAttributeChanged(const QualifiedName&); > > virtual void animatedPropertyTypeForAttribute(const QualifiedName&, Vector<AnimatedPropertyType>&); > >@@ -102,8 +121,6 @@ public: > virtual void synchronizeRequiredExtensions() { } > virtual void synchronizeSystemLanguage() { } > >- virtual SVGAttributeToPropertyMap& localAttributeToPropertyMap(); >- > #ifndef NDEBUG > bool isAnimatableAttribute(const QualifiedName&) const; > #endif >@@ -125,6 +142,7 @@ protected: > SVGElement(const QualifiedName&, Document*); > virtual ~SVGElement(); > >+ virtual bool rendererIsNeeded(const RenderStyle&); > virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; > > virtual void finishParsingChildren(); >@@ -137,6 +155,15 @@ protected: > SVGElementRareData& ensureSVGRareData(); > > void reportAttributeParsingError(SVGParsingError, const QualifiedName&, const AtomicString&); >+ static CSSPropertyID cssPropertyIdForSVGAttributeName(const QualifiedName&); >+ >+ virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE; >+ virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE; >+ virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE; >+ virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); >+ virtual bool selfHasRelativeLengths() const { return false; } >+ void updateRelativeLengthsInformation() { updateRelativeLengthsInformation(selfHasRelativeLengths(), this); } >+ void updateRelativeLengthsInformation(bool hasRelativeLengths, SVGElement*); > > private: > friend class SVGElementInstance; >@@ -149,13 +176,21 @@ private: > virtual RenderStyle* virtualComputedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) { return computedStyle(pseudoElementSpecifier); } > virtual bool willRecalcStyle(Style::Change); > >- virtual bool rendererIsNeeded(const RenderStyle&) { return false; } >- > virtual bool isSupported(StringImpl* feature, StringImpl* version) const; > > void mapInstanceToElement(SVGElementInstance*); > void removeInstanceMapping(SVGElementInstance*); > >+ void buildPendingResourcesIfNeeded(); >+ virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE; >+ virtual bool isMouseFocusable() const OVERRIDE; >+ >+ HashSet<SVGElement*> m_elementsWithRelativeLengths; >+ >+ BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGElement) >+ DECLARE_ANIMATED_STRING(ClassName, className) >+ END_DECLARE_ANIMATED_PROPERTIES >+ > }; > > struct SVGAttributeHashTranslator { >diff --git a/Source/WebCore/svg/SVGElement.idl b/Source/WebCore/svg/SVGElement.idl >index ecef2812168c335ae584bac6ae6c3a50b34f54b0..24f067b9267f0f4be6d42e1e09b48dca76dffc74 100644 >--- a/Source/WebCore/svg/SVGElement.idl >+++ b/Source/WebCore/svg/SVGElement.idl >@@ -30,5 +30,10 @@ > > attribute DOMString xmllang; > attribute DOMString xmlspace; >+ >+ readonly attribute SVGAnimatedString className; >+ readonly attribute CSSStyleDeclaration style; >+ >+ CSSValue getPresentationAttribute([Default=Undefined] optional DOMString name); > }; > >diff --git a/Source/WebCore/svg/SVGElementInstance.cpp b/Source/WebCore/svg/SVGElementInstance.cpp >index c3c625b6db4efe343b76800114dfd3e31b42b9ce..89da2b9abdb649345011ea933563081b4f058220 100644 >--- a/Source/WebCore/svg/SVGElementInstance.cpp >+++ b/Source/WebCore/svg/SVGElementInstance.cpp >@@ -185,7 +185,7 @@ void SVGElementInstance::invalidateAllInstancesOfElement(SVGElement* element) > if (!element || !element->inDocument()) > return; > >- if (element->isSVGStyledElement() && toSVGStyledElement(element)->instanceUpdatesBlocked()) >+ if (element->instanceUpdatesBlocked()) > return; > > const HashSet<SVGElementInstance*>& set = element->instancesForElement(); >@@ -259,7 +259,7 @@ EventTargetData& SVGElementInstance::ensureEventTargetData() > } > > SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement* targetElement) >- : m_targetElement(targetElement->isSVGStyledElement() ? toSVGStyledElement(targetElement) : 0) >+ : m_targetElement(targetElement) > { > if (m_targetElement) > m_targetElement->setInstanceUpdatesBlocked(true); >diff --git a/Source/WebCore/svg/SVGElementInstance.h b/Source/WebCore/svg/SVGElementInstance.h >index b30d35d63a12a30680fee0970a73bf24c863b918..40b08ac45a634c032ea8089b400a9db5c200510d 100644 >--- a/Source/WebCore/svg/SVGElementInstance.h >+++ b/Source/WebCore/svg/SVGElementInstance.h >@@ -35,7 +35,7 @@ void addChildNodesToDeletionQueue(GenericNode*& head, GenericNode*& tail, Generi > class Document; > class SVGElement; > class SVGElementInstanceList; >-class SVGStyledElement; >+class SVGElement; > class SVGUseElement; > > // SVGElementInstance mimics Node, but without providing all its functionality >@@ -91,7 +91,7 @@ public: > ~InstanceUpdateBlocker(); > > private: >- SVGStyledElement* m_targetElement; >+ SVGElement* m_targetElement; > }; > > static void invalidateAllInstancesOfElement(SVGElement*); >diff --git a/Source/WebCore/svg/SVGFEBlendElement.idl b/Source/WebCore/svg/SVGFEBlendElement.idl >index d70f297c195be6cf535f9cbc48f6a712b26dc212..48334e1b4bcb8b869d91ded3708f4d5d015cb6ed 100644 >--- a/Source/WebCore/svg/SVGFEBlendElement.idl >+++ b/Source/WebCore/svg/SVGFEBlendElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG&FILTERS, > DoNotCheckConstants >-] interface SVGFEBlendElement : SVGStyledElement { >+] interface SVGFEBlendElement : SVGElement { > // Blend Mode Types > const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0; > const unsigned short SVG_FEBLEND_MODE_NORMAL = 1; >diff --git a/Source/WebCore/svg/SVGFEColorMatrixElement.idl b/Source/WebCore/svg/SVGFEColorMatrixElement.idl >index 656ee402483fd1d93b3a3145d104c705995aa125..fe2de5066ffdf4f78969ac6e7ea77c0e97adee35 100644 >--- a/Source/WebCore/svg/SVGFEColorMatrixElement.idl >+++ b/Source/WebCore/svg/SVGFEColorMatrixElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG&FILTERS, > DoNotCheckConstants >-] interface SVGFEColorMatrixElement : SVGStyledElement { >+] interface SVGFEColorMatrixElement : SVGElement { > // Color Matrix Types > const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; > const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1; >diff --git a/Source/WebCore/svg/SVGFEComponentTransferElement.idl b/Source/WebCore/svg/SVGFEComponentTransferElement.idl >index 5052549f9ffd658c9fececbaa399e0ed9c83bb07..84fe9388ed0796d8a2341604c5a2ab34dfa0345c 100644 >--- a/Source/WebCore/svg/SVGFEComponentTransferElement.idl >+++ b/Source/WebCore/svg/SVGFEComponentTransferElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEComponentTransferElement : SVGStyledElement { >+] interface SVGFEComponentTransferElement : SVGElement { > readonly attribute SVGAnimatedString in1; > }; > >diff --git a/Source/WebCore/svg/SVGFECompositeElement.idl b/Source/WebCore/svg/SVGFECompositeElement.idl >index a64cc47aac0ee0f861c9f08c2bbfaa86c0305f38..8022698052944f07be3c325d2150434661603b53 100644 >--- a/Source/WebCore/svg/SVGFECompositeElement.idl >+++ b/Source/WebCore/svg/SVGFECompositeElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG&FILTERS, > DoNotCheckConstants >-] interface SVGFECompositeElement : SVGStyledElement { >+] interface SVGFECompositeElement : SVGElement { > // Composite Operators > const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; > const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1; >diff --git a/Source/WebCore/svg/SVGFEConvolveMatrixElement.idl b/Source/WebCore/svg/SVGFEConvolveMatrixElement.idl >index fcd8c57ecc0b7e5f700abe8dfdbee517fdc53990..275582a2fc5a40d5aad81c530faf59e5c56acdc8 100644 >--- a/Source/WebCore/svg/SVGFEConvolveMatrixElement.idl >+++ b/Source/WebCore/svg/SVGFEConvolveMatrixElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG&FILTERS, > DoNotCheckConstants >-] interface SVGFEConvolveMatrixElement : SVGStyledElement { >+] interface SVGFEConvolveMatrixElement : SVGElement { > // Edge Mode Values > const unsigned short SVG_EDGEMODE_UNKNOWN = 0; > const unsigned short SVG_EDGEMODE_DUPLICATE = 1; >diff --git a/Source/WebCore/svg/SVGFEDiffuseLightingElement.idl b/Source/WebCore/svg/SVGFEDiffuseLightingElement.idl >index c4366694c74741361a927de619906fe79f0b25af..f5d2ecc06db34eb00ccbc8304c3e7d8c02257a33 100644 >--- a/Source/WebCore/svg/SVGFEDiffuseLightingElement.idl >+++ b/Source/WebCore/svg/SVGFEDiffuseLightingElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEDiffuseLightingElement : SVGStyledElement { >+] interface SVGFEDiffuseLightingElement : SVGElement { > readonly attribute SVGAnimatedString in1; > readonly attribute SVGAnimatedNumber surfaceScale; > readonly attribute SVGAnimatedNumber diffuseConstant; >diff --git a/Source/WebCore/svg/SVGFEDisplacementMapElement.idl b/Source/WebCore/svg/SVGFEDisplacementMapElement.idl >index b8a05258b91876a2f9b19530b59696de637895e2..e9efab8a02327a4393d7ad308e2d006b3a7d2ceb 100644 >--- a/Source/WebCore/svg/SVGFEDisplacementMapElement.idl >+++ b/Source/WebCore/svg/SVGFEDisplacementMapElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG&FILTERS, > DoNotCheckConstants >-] interface SVGFEDisplacementMapElement : SVGStyledElement { >+] interface SVGFEDisplacementMapElement : SVGElement { > // Channel Selectors > const unsigned short SVG_CHANNEL_UNKNOWN = 0; > const unsigned short SVG_CHANNEL_R = 1; >diff --git a/Source/WebCore/svg/SVGFEDropShadowElement.idl b/Source/WebCore/svg/SVGFEDropShadowElement.idl >index 6a5a96a51c2c18ff2a02129856cf0506c1274d05..a531fe49843c3f3f7b129f96fe5c0612fce4c3a5 100644 >--- a/Source/WebCore/svg/SVGFEDropShadowElement.idl >+++ b/Source/WebCore/svg/SVGFEDropShadowElement.idl >@@ -19,7 +19,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEDropShadowElement : SVGStyledElement { >+] interface SVGFEDropShadowElement : SVGElement { > readonly attribute SVGAnimatedString in1; > readonly attribute SVGAnimatedNumber dx; > readonly attribute SVGAnimatedNumber dy; >diff --git a/Source/WebCore/svg/SVGFEFloodElement.idl b/Source/WebCore/svg/SVGFEFloodElement.idl >index d4089250e6d5a70304283220507d33aea4876386..bd5abc86e454ca555314038831a68e97db722b88 100644 >--- a/Source/WebCore/svg/SVGFEFloodElement.idl >+++ b/Source/WebCore/svg/SVGFEFloodElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEFloodElement : SVGStyledElement { >+] interface SVGFEFloodElement : SVGElement { > }; > > SVGFEFloodElement implements SVGFilterPrimitiveStandardAttributes; >diff --git a/Source/WebCore/svg/SVGFEGaussianBlurElement.idl b/Source/WebCore/svg/SVGFEGaussianBlurElement.idl >index 88eb5d03ba534d21e9181844663a0719a69bbf4d..2a78e172555e3a491133d7095b2eae0ec767c6b8 100644 >--- a/Source/WebCore/svg/SVGFEGaussianBlurElement.idl >+++ b/Source/WebCore/svg/SVGFEGaussianBlurElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEGaussianBlurElement : SVGStyledElement { >+] interface SVGFEGaussianBlurElement : SVGElement { > readonly attribute SVGAnimatedString in1; > readonly attribute SVGAnimatedNumber stdDeviationX; > readonly attribute SVGAnimatedNumber stdDeviationY; >diff --git a/Source/WebCore/svg/SVGFEImageElement.idl b/Source/WebCore/svg/SVGFEImageElement.idl >index dc0d99bca03cb2bcf8709a6a6fdb7ab20e02ccde..0ac60558616f2dcf57b6cbc36a0aa845af0bd1b7 100644 >--- a/Source/WebCore/svg/SVGFEImageElement.idl >+++ b/Source/WebCore/svg/SVGFEImageElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEImageElement : SVGStyledElement { >+] interface SVGFEImageElement : SVGElement { > readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; > }; > >diff --git a/Source/WebCore/svg/SVGFELightElement.h b/Source/WebCore/svg/SVGFELightElement.h >index 755c652bc7b6b456c6617affb4f441208682c7cd..833c2402f52c0d3ee1b664112504fe898ab09915 100644 >--- a/Source/WebCore/svg/SVGFELightElement.h >+++ b/Source/WebCore/svg/SVGFELightElement.h >@@ -38,6 +38,8 @@ public: > protected: > SVGFELightElement(const QualifiedName&, Document*); > >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } >+ > private: > bool isSupportedAttribute(const QualifiedName&); > virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; >diff --git a/Source/WebCore/svg/SVGFEMergeElement.idl b/Source/WebCore/svg/SVGFEMergeElement.idl >index ed25f7efebd3f5975c459b4bd4610f24f2f9ea84..6a99009c095017a366f0464d1d5e2cc8f7a830f0 100644 >--- a/Source/WebCore/svg/SVGFEMergeElement.idl >+++ b/Source/WebCore/svg/SVGFEMergeElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEMergeElement : SVGStyledElement { >+] interface SVGFEMergeElement : SVGElement { > }; > > SVGFEMergeElement implements SVGFilterPrimitiveStandardAttributes; >diff --git a/Source/WebCore/svg/SVGFEMergeNodeElement.h b/Source/WebCore/svg/SVGFEMergeNodeElement.h >index 50b9ba2de7888533f099faa9dc0f10ab05392778..bd248f82f2d3c28414fde0faab3bf264ddb289ca 100644 >--- a/Source/WebCore/svg/SVGFEMergeNodeElement.h >+++ b/Source/WebCore/svg/SVGFEMergeNodeElement.h >@@ -38,6 +38,8 @@ private: > virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; > virtual void svgAttributeChanged(const QualifiedName&); > >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } >+ > BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGFEMergeNodeElement) > DECLARE_ANIMATED_STRING(In1, in1) > END_DECLARE_ANIMATED_PROPERTIES >diff --git a/Source/WebCore/svg/SVGFEMorphologyElement.idl b/Source/WebCore/svg/SVGFEMorphologyElement.idl >index ba6481c47fdb47ca8368de3153689b9cb3fff212..ec4c4233928e70110a399576fa9f3190c6942d47 100644 >--- a/Source/WebCore/svg/SVGFEMorphologyElement.idl >+++ b/Source/WebCore/svg/SVGFEMorphologyElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG&FILTERS, > DoNotCheckConstants >-] interface SVGFEMorphologyElement : SVGStyledElement { >+] interface SVGFEMorphologyElement : SVGElement { > // Morphology Operators > const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0; > const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1; >diff --git a/Source/WebCore/svg/SVGFEOffsetElement.idl b/Source/WebCore/svg/SVGFEOffsetElement.idl >index 7a9f15a80b5b66904a0e3c6da1e0a3ffea7103ee..eb95e7465f0651f3a8f1efe6d27b6d630a402729 100644 >--- a/Source/WebCore/svg/SVGFEOffsetElement.idl >+++ b/Source/WebCore/svg/SVGFEOffsetElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFEOffsetElement : SVGStyledElement { >+] interface SVGFEOffsetElement : SVGElement { > readonly attribute SVGAnimatedString in1; > readonly attribute SVGAnimatedNumber dx; > readonly attribute SVGAnimatedNumber dy; >diff --git a/Source/WebCore/svg/SVGFESpecularLightingElement.idl b/Source/WebCore/svg/SVGFESpecularLightingElement.idl >index 93ad773062956f63fb25e848de97ef99bf2abb10..0e4e9ee52fd65da24f9f213475c50d967d8f1123 100644 >--- a/Source/WebCore/svg/SVGFESpecularLightingElement.idl >+++ b/Source/WebCore/svg/SVGFESpecularLightingElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFESpecularLightingElement : SVGStyledElement { >+] interface SVGFESpecularLightingElement : SVGElement { > readonly attribute SVGAnimatedString in1; > readonly attribute SVGAnimatedNumber surfaceScale; > readonly attribute SVGAnimatedNumber specularConstant; >diff --git a/Source/WebCore/svg/SVGFETileElement.idl b/Source/WebCore/svg/SVGFETileElement.idl >index 251a548591aa0d9f21d036a8a2effc759c4e5bfe..5cae1a14808b163c6844bd09ae3319bf07472e37 100644 >--- a/Source/WebCore/svg/SVGFETileElement.idl >+++ b/Source/WebCore/svg/SVGFETileElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFETileElement : SVGStyledElement { >+] interface SVGFETileElement : SVGElement { > readonly attribute SVGAnimatedString in1; > }; > >diff --git a/Source/WebCore/svg/SVGFETurbulenceElement.idl b/Source/WebCore/svg/SVGFETurbulenceElement.idl >index 76d19136a109e9ffc9aef44900cdda8f2ad14846..0804fb59612dc9265f53198cfe6b535b37099496 100644 >--- a/Source/WebCore/svg/SVGFETurbulenceElement.idl >+++ b/Source/WebCore/svg/SVGFETurbulenceElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG&FILTERS, > DoNotCheckConstants >-] interface SVGFETurbulenceElement : SVGStyledElement { >+] interface SVGFETurbulenceElement : SVGElement { > // Turbulence Types > const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0; > const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; >diff --git a/Source/WebCore/svg/SVGFilterElement.cpp b/Source/WebCore/svg/SVGFilterElement.cpp >index afd85b42f491debf08ea47468d7be6671101f7b9..36e1923ed6e399951f5788faf46558a26a227d0d 100644 >--- a/Source/WebCore/svg/SVGFilterElement.cpp >+++ b/Source/WebCore/svg/SVGFilterElement.cpp >@@ -63,7 +63,7 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFilterElement) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGFilterElement::SVGFilterElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_filterUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) > , m_primitiveUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE) > , m_x(LengthModeWidth, "-10%") >@@ -126,7 +126,7 @@ void SVGFilterElement::parseAttribute(const QualifiedName& name, const AtomicStr > SVGParsingError parseError = NoError; > > if (!isSupportedAttribute(name)) >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > else if (name == SVGNames::filterUnitsAttr) { > SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits<SVGUnitTypes::SVGUnitType>::fromString(value); > if (propertyValue > 0) >@@ -161,7 +161,7 @@ void SVGFilterElement::parseAttribute(const QualifiedName& name, const AtomicStr > void SVGFilterElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >@@ -179,7 +179,7 @@ void SVGFilterElement::svgAttributeChanged(const QualifiedName& attrName) > > void SVGFilterElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) > { >- SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >+ SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); > > if (changedByParser) > return; >diff --git a/Source/WebCore/svg/SVGFilterElement.h b/Source/WebCore/svg/SVGFilterElement.h >index 3351c60d957d00f16c49770a68c68d225d2b1f2c..bce6ea6d791b6a079e4216ddf3797322d3cbca56 100644 >--- a/Source/WebCore/svg/SVGFilterElement.h >+++ b/Source/WebCore/svg/SVGFilterElement.h >@@ -28,15 +28,15 @@ > #include "SVGAnimatedEnumeration.h" > #include "SVGAnimatedInteger.h" > #include "SVGAnimatedLength.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGNames.h" >-#include "SVGStyledElement.h" > #include "SVGURIReference.h" > #include "SVGUnitTypes.h" > > namespace WebCore { > >-class SVGFilterElement FINAL : public SVGStyledElement, >+class SVGFilterElement FINAL : public SVGElement, > public SVGURIReference, > public SVGExternalResourcesRequired { > public: >diff --git a/Source/WebCore/svg/SVGFilterElement.idl b/Source/WebCore/svg/SVGFilterElement.idl >index f3e252dc7fb438ce97bfdb4325b71a378b611fdb..8f5be1d166d9a7ba629d43e0edfc306c4ff850d7 100644 >--- a/Source/WebCore/svg/SVGFilterElement.idl >+++ b/Source/WebCore/svg/SVGFilterElement.idl >@@ -26,7 +26,7 @@ > > [ > Conditional=SVG&FILTERS >-] interface SVGFilterElement : SVGStyledElement { >+] interface SVGFilterElement : SVGElement { > readonly attribute SVGAnimatedEnumeration filterUnits; > readonly attribute SVGAnimatedEnumeration primitiveUnits; > readonly attribute SVGAnimatedLength x; >diff --git a/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp b/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp >index 65d80631b8c23bb205ce97b37d2d3bde4a097ad1..2bd43f8e8926e59b5749f3e8235502cc69aea497 100644 >--- a/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp >+++ b/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp >@@ -27,11 +27,11 @@ > #include "Attribute.h" > #include "FilterEffect.h" > #include "RenderSVGResourceFilterPrimitive.h" >+#include "SVGElement.h" > #include "SVGElementInstance.h" > #include "SVGFilterBuilder.h" > #include "SVGLength.h" > #include "SVGNames.h" >-#include "SVGStyledElement.h" > #include "SVGUnitTypes.h" > > namespace WebCore { >@@ -49,11 +49,11 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFilterPrimitiveStandardAttributes) > REGISTER_LOCAL_ANIMATED_PROPERTY(width) > REGISTER_LOCAL_ANIMATED_PROPERTY(height) > REGISTER_LOCAL_ANIMATED_PROPERTY(result) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_x(LengthModeWidth, "0%") > , m_y(LengthModeHeight, "0%") > , m_width(LengthModeWidth, "100%") >@@ -82,7 +82,7 @@ void SVGFilterPrimitiveStandardAttributes::parseAttribute(const QualifiedName& n > SVGParsingError parseError = NoError; > > if (!isSupportedAttribute(name)) >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > else if (name == SVGNames::xAttr) > setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError)); > else if (name == SVGNames::yAttr) >@@ -109,7 +109,7 @@ bool SVGFilterPrimitiveStandardAttributes::setFilterEffectAttribute(FilterEffect > void SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >@@ -119,7 +119,7 @@ void SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(const QualifiedNa > > void SVGFilterPrimitiveStandardAttributes::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) > { >- SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >+ SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); > > if (!changedByParser) > invalidate(); >@@ -149,7 +149,7 @@ RenderObject* SVGFilterPrimitiveStandardAttributes::createRenderer(RenderArena* > bool SVGFilterPrimitiveStandardAttributes::rendererIsNeeded(const RenderStyle& style) > { > if (parentNode() && (parentNode()->hasTagName(SVGNames::filterTag))) >- return SVGStyledElement::rendererIsNeeded(style); >+ return SVGElement::rendererIsNeeded(style); > > return false; > } >diff --git a/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h b/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h >index ee6b70fa223cbf3b2af92085239c022db83080f3..98f91d4b85fb9dda84f07e556691208303867ecd 100644 >--- a/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h >+++ b/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h >@@ -26,7 +26,7 @@ > #include "RenderSVGResourceFilterPrimitive.h" > #include "SVGAnimatedLength.h" > #include "SVGAnimatedString.h" >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > > #include <wtf/PassRefPtr.h> > #include <wtf/RefPtr.h> >@@ -37,7 +37,7 @@ class Filter; > class FilterEffect; > class SVGFilterBuilder; > >-class SVGFilterPrimitiveStandardAttributes : public SVGStyledElement { >+class SVGFilterPrimitiveStandardAttributes : public SVGElement { > public: > void setStandardAttributes(FilterEffect*) const; > >diff --git a/Source/WebCore/svg/SVGFontElement.cpp b/Source/WebCore/svg/SVGFontElement.cpp >index c8ea3c830cde1ccedf44ab00152099164e473c2d..ada55622c10750dbd30e613b597c077b10d6011d 100644 >--- a/Source/WebCore/svg/SVGFontElement.cpp >+++ b/Source/WebCore/svg/SVGFontElement.cpp >@@ -41,11 +41,11 @@ DEFINE_ANIMATED_BOOLEAN(SVGFontElement, SVGNames::externalResourcesRequiredAttr, > > BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGFontElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGFontElement::SVGFontElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_missingGlyph(0) > , m_isGlyphCacheValid(false) > { >diff --git a/Source/WebCore/svg/SVGFontElement.h b/Source/WebCore/svg/SVGFontElement.h >index d8703ec1630061caaaa133f9ea09ba272353542e..01fe6c2e7c6ea775a9871e571d7d55bd7a69f143 100644 >--- a/Source/WebCore/svg/SVGFontElement.h >+++ b/Source/WebCore/svg/SVGFontElement.h >@@ -24,11 +24,11 @@ > > #if ENABLE(SVG_FONTS) > #include "SVGAnimatedBoolean.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGGlyphMap.h" > #include "SVGNames.h" > #include "SVGParserUtilities.h" >-#include "SVGStyledElement.h" > > namespace WebCore { > >@@ -52,7 +52,7 @@ typedef Vector<SVGKerningPair> KerningPairVector; > > class SVGMissingGlyphElement; > >-class SVGFontElement FINAL : public SVGStyledElement >+class SVGFontElement FINAL : public SVGElement > , public SVGExternalResourcesRequired { > public: > static PassRefPtr<SVGFontElement> create(const QualifiedName&, Document*); >diff --git a/Source/WebCore/svg/SVGFontFaceElement.cpp b/Source/WebCore/svg/SVGFontFaceElement.cpp >index ffeed32605aad5bc67878f7c32cfbc46490893cd..f35025665772f5b92b7c64da86746754be6c5ad7 100644 >--- a/Source/WebCore/svg/SVGFontFaceElement.cpp >+++ b/Source/WebCore/svg/SVGFontFaceElement.cpp >@@ -60,54 +60,6 @@ PassRefPtr<SVGFontFaceElement> SVGFontFaceElement::create(const QualifiedName& t > return adoptRef(new SVGFontFaceElement(tagName, document)); > } > >-static CSSPropertyID cssPropertyIdForSVGAttributeName(const QualifiedName& attrName) >-{ >- if (!attrName.namespaceURI().isNull()) >- return CSSPropertyInvalid; >- >- static HashMap<AtomicStringImpl*, CSSPropertyID>* propertyNameToIdMap = 0; >- if (!propertyNameToIdMap) { >- propertyNameToIdMap = new HashMap<AtomicStringImpl*, CSSPropertyID>; >- // This is a list of all @font-face CSS properties which are exposed as SVG XML attributes >- // Those commented out are not yet supported by WebCore's style system >- // mapAttributeToCSSProperty(propertyNameToIdMap, accent_heightAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, alphabeticAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, ascentAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, bboxAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, cap_heightAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, descentAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_familyAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_sizeAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_stretchAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_styleAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_variantAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_weightAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, hangingAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, ideographicAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, mathematicalAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, overline_positionAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, overline_thicknessAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, panose_1Attr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, slopeAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, stemhAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, stemvAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, strikethrough_positionAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, strikethrough_thicknessAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, underline_positionAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, underline_thicknessAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, unicode_rangeAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, units_per_emAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, v_alphabeticAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, v_hangingAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, v_ideographicAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, v_mathematicalAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, widthsAttr); >- // mapAttributeToCSSProperty(propertyNameToIdMap, x_heightAttr); >- } >- >- return propertyNameToIdMap->get(attrName.localName().impl()); >-} >- > void SVGFontFaceElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > CSSPropertyID propId = cssPropertyIdForSVGAttributeName(name); >diff --git a/Source/WebCore/svg/SVGFontFaceElement.h b/Source/WebCore/svg/SVGFontFaceElement.h >index b34e65c970aacbc7a0aa6b52c9e600044d7abb95..5a551ec3bc76c56552f184c03a20b13010c2e4d6 100644 >--- a/Source/WebCore/svg/SVGFontFaceElement.h >+++ b/Source/WebCore/svg/SVGFontFaceElement.h >@@ -61,6 +61,8 @@ private: > virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE; > virtual void removedFrom(ContainerNode*) OVERRIDE; > >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } >+ > RefPtr<StyleRuleFontFace> m_fontFaceRule; > SVGFontElement* m_fontElement; > }; >diff --git a/Source/WebCore/svg/SVGFontFaceFormatElement.h b/Source/WebCore/svg/SVGFontFaceFormatElement.h >index 9e61daaf66a9be5c541d37c5ca6314d6bb9ccc05..6fa77b84e89cd3090626697f2b103f4b5f3a3668 100644 >--- a/Source/WebCore/svg/SVGFontFaceFormatElement.h >+++ b/Source/WebCore/svg/SVGFontFaceFormatElement.h >@@ -33,6 +33,7 @@ private: > SVGFontFaceFormatElement(const QualifiedName&, Document*); > > virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGFontFaceNameElement.h b/Source/WebCore/svg/SVGFontFaceNameElement.h >index 068d577606392520d65ab647cba1f2cc0fa94b03..03253b99c92c84ff6e6cfd59c848fc39dbbef208 100644 >--- a/Source/WebCore/svg/SVGFontFaceNameElement.h >+++ b/Source/WebCore/svg/SVGFontFaceNameElement.h >@@ -35,6 +35,8 @@ public: > > private: > SVGFontFaceNameElement(const QualifiedName&, Document*); >+ >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGFontFaceSrcElement.h b/Source/WebCore/svg/SVGFontFaceSrcElement.h >index d2b1977949f7e9e9f274ebfabebd79da18dc021c..150ac69a3c4b0bbf7092a9db07f4b1d8f6cac6b6 100644 >--- a/Source/WebCore/svg/SVGFontFaceSrcElement.h >+++ b/Source/WebCore/svg/SVGFontFaceSrcElement.h >@@ -37,6 +37,7 @@ private: > SVGFontFaceSrcElement(const QualifiedName&, Document*); > > virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGFontFaceUriElement.h b/Source/WebCore/svg/SVGFontFaceUriElement.h >index 1640c6a8029d47c1167f93def0f50de66a6b7c38..dcc6e87b4543892f3b1e75bc93ac7437e9d9ef69 100644 >--- a/Source/WebCore/svg/SVGFontFaceUriElement.h >+++ b/Source/WebCore/svg/SVGFontFaceUriElement.h >@@ -43,6 +43,7 @@ private: > virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; > virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); > virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE; >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > > void loadFont(); > >diff --git a/Source/WebCore/svg/SVGGElement.cpp b/Source/WebCore/svg/SVGGElement.cpp >index 31c0a0cfd9e2b27ccd645c7cc6d87aa940ed0de7..492ac9f8361d19912f5365296094fb55e755915f 100644 >--- a/Source/WebCore/svg/SVGGElement.cpp >+++ b/Source/WebCore/svg/SVGGElement.cpp >@@ -103,7 +103,7 @@ RenderObject* SVGGElement::createRenderer(RenderArena* arena, RenderStyle* style > > bool SVGGElement::rendererIsNeeded(const RenderStyle&) > { >- // Unlike SVGStyledElement::rendererIsNeeded(), we still create renderers, even if >+ // Unlike SVGElement::rendererIsNeeded(), we still create renderers, even if > // display is set to 'none' - which is special to SVG <g> container elements. > return parentOrShadowHostElement() && parentOrShadowHostElement()->isSVGElement(); > } >diff --git a/Source/WebCore/svg/SVGGlyphElement.cpp b/Source/WebCore/svg/SVGGlyphElement.cpp >index 83d053bc3c64a1bb7670e153bd0ec5b0fed2c5fd..1c493a3bc31e6d84678d24beb0e927eb8ac7deba 100644 >--- a/Source/WebCore/svg/SVGGlyphElement.cpp >+++ b/Source/WebCore/svg/SVGGlyphElement.cpp >@@ -34,7 +34,7 @@ > namespace WebCore { > > inline SVGGlyphElement::SVGGlyphElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > { > ASSERT(hasTagName(SVGNames::glyphTag)); > } >@@ -56,20 +56,20 @@ void SVGGlyphElement::parseAttribute(const QualifiedName& name, const AtomicStri > if (name == SVGNames::dAttr) > invalidateGlyphCache(); > else >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > } > > Node::InsertionNotificationRequest SVGGlyphElement::insertedInto(ContainerNode* rootParent) > { > invalidateGlyphCache(); >- return SVGStyledElement::insertedInto(rootParent); >+ return SVGElement::insertedInto(rootParent); > } > > void SVGGlyphElement::removedFrom(ContainerNode* rootParent) > { > if (rootParent->inDocument()) > invalidateGlyphCache(); >- SVGStyledElement::removedFrom(rootParent); >+ SVGElement::removedFrom(rootParent); > } > > static inline SVGGlyph::ArabicForm parseArabicForm(const AtomicString& value) >diff --git a/Source/WebCore/svg/SVGGlyphElement.h b/Source/WebCore/svg/SVGGlyphElement.h >index 668bb86b444af1a588230ccbe61c3bf21153e4cb..27cc09233fcb97cfe473631e03256314ee183c7b 100644 >--- a/Source/WebCore/svg/SVGGlyphElement.h >+++ b/Source/WebCore/svg/SVGGlyphElement.h >@@ -23,14 +23,14 @@ > #define SVGGlyphElement_h > > #if ENABLE(SVG_FONTS) >+#include "SVGElement.h" > #include "SVGGlyph.h" >-#include "SVGStyledElement.h" > > namespace WebCore { > > class SVGFontData; > >-class SVGGlyphElement FINAL : public SVGStyledElement { >+class SVGGlyphElement FINAL : public SVGElement { > public: > static PassRefPtr<SVGGlyphElement> create(const QualifiedName&, Document*); > >diff --git a/Source/WebCore/svg/SVGGlyphRefElement.cpp b/Source/WebCore/svg/SVGGlyphRefElement.cpp >index 72837495fca34304a778071690d1fbe9c827b836..11b8e1f09234b06697d4a58fa89a489a26318ab8 100644 >--- a/Source/WebCore/svg/SVGGlyphRefElement.cpp >+++ b/Source/WebCore/svg/SVGGlyphRefElement.cpp >@@ -35,11 +35,11 @@ DEFINE_ANIMATED_STRING(SVGGlyphRefElement, XLinkNames::hrefAttr, Href, href) > > BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGGlyphRefElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(href) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGGlyphRefElement::SVGGlyphRefElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_x(0) > , m_y(0) > , m_dx(0) >@@ -81,7 +81,7 @@ void SVGGlyphRefElement::parseAttribute(const QualifiedName& name, const AtomicS > else { > if (SVGURIReference::parseAttribute(name, value)) > return; >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > } > } > >diff --git a/Source/WebCore/svg/SVGGlyphRefElement.h b/Source/WebCore/svg/SVGGlyphRefElement.h >index 62c5befff8153a197c7a50e62a94bce9ec558ab1..b4a44ae397612df6be11c9024b382a3d3511c771 100644 >--- a/Source/WebCore/svg/SVGGlyphRefElement.h >+++ b/Source/WebCore/svg/SVGGlyphRefElement.h >@@ -21,12 +21,12 @@ > #define SVGGlyphRefElement_h > > #if ENABLE(SVG) && ENABLE(SVG_FONTS) >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > #include "SVGURIReference.h" > > namespace WebCore { > >-class SVGGlyphRefElement FINAL : public SVGStyledElement, >+class SVGGlyphRefElement FINAL : public SVGElement, > public SVGURIReference { > public: > static PassRefPtr<SVGGlyphRefElement> create(const QualifiedName&, Document*); >diff --git a/Source/WebCore/svg/SVGGlyphRefElement.idl b/Source/WebCore/svg/SVGGlyphRefElement.idl >index 9fc9fee0c1327a6e39e35108266312848c014d7d..860271066ce582b3dc5816c7b4740afca1532f33 100644 >--- a/Source/WebCore/svg/SVGGlyphRefElement.idl >+++ b/Source/WebCore/svg/SVGGlyphRefElement.idl >@@ -19,7 +19,7 @@ > > [ > Conditional=SVG&SVG_FONTS >-] interface SVGGlyphRefElement : SVGStyledElement { >+] interface SVGGlyphRefElement : SVGElement { > // FIXME: Use [Reflect] after https://bugs.webkit.org/show_bug.cgi?id=64843 is fixed. > [SetterRaisesException] attribute DOMString glyphRef; > [Reflect] attribute DOMString format; >diff --git a/Source/WebCore/svg/SVGGradientElement.cpp b/Source/WebCore/svg/SVGGradientElement.cpp >index 8d398b66e40812ddebfbe8c1e25a693924be2a57..bef44fa2b96834c73945f2c3fc1467f5140f8fb9 100644 >--- a/Source/WebCore/svg/SVGGradientElement.cpp >+++ b/Source/WebCore/svg/SVGGradientElement.cpp >@@ -52,11 +52,11 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGGradientElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(gradientTransform) > REGISTER_LOCAL_ANIMATED_PROPERTY(href) > REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > SVGGradientElement::SVGGradientElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_spreadMethod(SVGSpreadMethodPad) > , m_gradientUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) > { >@@ -79,7 +79,7 @@ bool SVGGradientElement::isSupportedAttribute(const QualifiedName& attrName) > void SVGGradientElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (!isSupportedAttribute(name)) { >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > return; > } > >@@ -116,7 +116,7 @@ void SVGGradientElement::parseAttribute(const QualifiedName& name, const AtomicS > void SVGGradientElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >@@ -128,7 +128,7 @@ void SVGGradientElement::svgAttributeChanged(const QualifiedName& attrName) > > void SVGGradientElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) > { >- SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >+ SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); > > if (changedByParser) > return; >diff --git a/Source/WebCore/svg/SVGGradientElement.h b/Source/WebCore/svg/SVGGradientElement.h >index ae8a4cfcc8cfb9fd42fee32eca76867565221335..661ac4ea4f1225d3421413b546b98b7e98fca9d2 100644 >--- a/Source/WebCore/svg/SVGGradientElement.h >+++ b/Source/WebCore/svg/SVGGradientElement.h >@@ -26,9 +26,9 @@ > #include "SVGAnimatedBoolean.h" > #include "SVGAnimatedEnumeration.h" > #include "SVGAnimatedTransformList.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGNames.h" >-#include "SVGStyledElement.h" > #include "SVGURIReference.h" > #include "SVGUnitTypes.h" > >@@ -74,7 +74,7 @@ struct SVGPropertyTraits<SVGSpreadMethodType> { > } > }; > >-class SVGGradientElement : public SVGStyledElement, >+class SVGGradientElement : public SVGElement, > public SVGURIReference, > public SVGExternalResourcesRequired { > public: >diff --git a/Source/WebCore/svg/SVGGradientElement.idl b/Source/WebCore/svg/SVGGradientElement.idl >index 762bbe9b0e04d13294618130886b4a5a4c6bbbc9..993be3423756cea5f00cc688024e7ce4debff713 100644 >--- a/Source/WebCore/svg/SVGGradientElement.idl >+++ b/Source/WebCore/svg/SVGGradientElement.idl >@@ -26,7 +26,7 @@ > [ > Conditional=SVG, > DoNotCheckConstants >-] interface SVGGradientElement : SVGStyledElement { >+] interface SVGGradientElement : SVGElement { > // Spread Method Types > const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0; > const unsigned short SVG_SPREADMETHOD_PAD = 1; >diff --git a/Source/WebCore/svg/SVGGraphicsElement.cpp b/Source/WebCore/svg/SVGGraphicsElement.cpp >index 3814d86c3495cea437c1e7887d2798f4b7fa48c6..f6d0a4aa84d53a8d6925bead402f5393b0dfae24 100644 >--- a/Source/WebCore/svg/SVGGraphicsElement.cpp >+++ b/Source/WebCore/svg/SVGGraphicsElement.cpp >@@ -38,12 +38,12 @@ DEFINE_ANIMATED_TRANSFORM_LIST(SVGGraphicsElement, SVGNames::transformAttr, Tran > > BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGGraphicsElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(transform) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > REGISTER_PARENT_ANIMATED_PROPERTIES(SVGTests) > END_REGISTER_ANIMATED_PROPERTIES > > SVGGraphicsElement::SVGGraphicsElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > { > registerAnimatedPropertiesForSVGGraphicsElement(); > } >@@ -104,7 +104,7 @@ bool SVGGraphicsElement::isSupportedAttribute(const QualifiedName& attrName) > void SVGGraphicsElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (!isSupportedAttribute(name)) { >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > return; > } > >@@ -125,7 +125,7 @@ void SVGGraphicsElement::parseAttribute(const QualifiedName& name, const AtomicS > void SVGGraphicsElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >diff --git a/Source/WebCore/svg/SVGGraphicsElement.h b/Source/WebCore/svg/SVGGraphicsElement.h >index b8aa818ee6a16501dfaf372a78589ad495771a28..764692c3d21bbfa3b81bec96e2bf1e8e86980f56 100644 >--- a/Source/WebCore/svg/SVGGraphicsElement.h >+++ b/Source/WebCore/svg/SVGGraphicsElement.h >@@ -23,7 +23,7 @@ > > #if ENABLE(SVG) > #include "SVGAnimatedTransformList.h" >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > #include "SVGTests.h" > #include "SVGTransformable.h" > >@@ -32,7 +32,7 @@ namespace WebCore { > class AffineTransform; > class Path; > >-class SVGGraphicsElement : public SVGStyledElement, public SVGTransformable, public SVGTests { >+class SVGGraphicsElement : public SVGElement, public SVGTransformable, public SVGTests { > public: > virtual ~SVGGraphicsElement(); > >diff --git a/Source/WebCore/svg/SVGGraphicsElement.idl b/Source/WebCore/svg/SVGGraphicsElement.idl >index f96e2319f30517b31022f6c229e6441eda45e10d..9fb0b62418a8d665921926e6c25ce0c2d6b04867 100644 >--- a/Source/WebCore/svg/SVGGraphicsElement.idl >+++ b/Source/WebCore/svg/SVGGraphicsElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG >-] interface SVGGraphicsElement : SVGStyledElement { >+] interface SVGGraphicsElement : SVGElement { > readonly attribute SVGAnimatedTransformList transform; > > readonly attribute SVGElement nearestViewportElement; >diff --git a/Source/WebCore/svg/SVGLocatable.cpp b/Source/WebCore/svg/SVGLocatable.cpp >index 006d45db56e6dc5f49540a0eb7af1886b2ea94f8..5ffdb5ec4c68e1292106d33571fceb062464de4a 100644 >--- a/Source/WebCore/svg/SVGLocatable.cpp >+++ b/Source/WebCore/svg/SVGLocatable.cpp >@@ -89,8 +89,7 @@ AffineTransform SVGLocatable::computeCTM(SVGElement* element, CTMScope mode, Sty > if (!currentElement->isSVGElement()) > break; > >- if (toSVGElement(currentElement)->isSVGStyledElement()) >- ctm = toSVGStyledElement(currentElement)->localCoordinateSpaceTransform(mode).multiply(ctm); >+ ctm = toSVGElement(currentElement)->localCoordinateSpaceTransform(mode).multiply(ctm); > > // For getCTM() computation, stop at the nearest viewport element > if (currentElement == stopAtElement) >diff --git a/Source/WebCore/svg/SVGMPathElement.h b/Source/WebCore/svg/SVGMPathElement.h >index 79d4f108f9b15e3318b635ce4974c4bbd67908c4..654cfde2f366e60bda4fe4a2f75a46194869ad9e 100644 >--- a/Source/WebCore/svg/SVGMPathElement.h >+++ b/Source/WebCore/svg/SVGMPathElement.h >@@ -56,6 +56,8 @@ private: > virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; > virtual void svgAttributeChanged(const QualifiedName&) OVERRIDE; > >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } >+ > void notifyParentOfPathChange(ContainerNode*); > > BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGMPathElement) >diff --git a/Source/WebCore/svg/SVGMarkerElement.cpp b/Source/WebCore/svg/SVGMarkerElement.cpp >index 1d41db88d0b7245e4ea66a313c1a671b595e84e1..6eef2578e86a8680785eb293cd65523d82d221de 100644 >--- a/Source/WebCore/svg/SVGMarkerElement.cpp >+++ b/Source/WebCore/svg/SVGMarkerElement.cpp >@@ -70,11 +70,11 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGMarkerElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) > REGISTER_LOCAL_ANIMATED_PROPERTY(viewBox) > REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAspectRatio) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGMarkerElement::SVGMarkerElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_refX(LengthModeWidth) > , m_refY(LengthModeHeight) > , m_markerWidth(LengthModeWidth, "3") >@@ -131,7 +131,7 @@ void SVGMarkerElement::parseAttribute(const QualifiedName& name, const AtomicStr > SVGParsingError parseError = NoError; > > if (!isSupportedAttribute(name)) >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > else if (name == SVGNames::markerUnitsAttr) { > SVGMarkerUnitsType propertyValue = SVGPropertyTraits<SVGMarkerUnitsType>::fromString(value); > if (propertyValue > 0) >@@ -163,7 +163,7 @@ void SVGMarkerElement::parseAttribute(const QualifiedName& name, const AtomicStr > void SVGMarkerElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >@@ -181,7 +181,7 @@ void SVGMarkerElement::svgAttributeChanged(const QualifiedName& attrName) > > void SVGMarkerElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) > { >- SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >+ SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); > > if (changedByParser) > return; >diff --git a/Source/WebCore/svg/SVGMarkerElement.h b/Source/WebCore/svg/SVGMarkerElement.h >index 68443499392ddb4aee7f55b9d6abc5f9b9342b1d..321bef531e74526f90cd86c2176cdf12f9e5a4e0 100644 >--- a/Source/WebCore/svg/SVGMarkerElement.h >+++ b/Source/WebCore/svg/SVGMarkerElement.h >@@ -28,9 +28,9 @@ > #include "SVGAnimatedLength.h" > #include "SVGAnimatedPreserveAspectRatio.h" > #include "SVGAnimatedRect.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGFitToViewBox.h" >-#include "SVGStyledElement.h" > > namespace WebCore { > >@@ -94,7 +94,7 @@ struct SVGPropertyTraits<SVGMarkerOrientType> { > } > }; > >-class SVGMarkerElement FINAL : public SVGStyledElement, >+class SVGMarkerElement FINAL : public SVGElement, > public SVGExternalResourcesRequired, > public SVGFitToViewBox { > public: >diff --git a/Source/WebCore/svg/SVGMarkerElement.idl b/Source/WebCore/svg/SVGMarkerElement.idl >index 718638997f10eb14742d0d1b2c1c6b687956d5fc..e44b02554abf47d094a41659dd862b4e8b05f6d6 100644 >--- a/Source/WebCore/svg/SVGMarkerElement.idl >+++ b/Source/WebCore/svg/SVGMarkerElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG >-] interface SVGMarkerElement : SVGStyledElement { >+] interface SVGMarkerElement : SVGElement { > // Marker Unit Types > const unsigned short SVG_MARKERUNITS_UNKNOWN = 0; > const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1; >diff --git a/Source/WebCore/svg/SVGMaskElement.cpp b/Source/WebCore/svg/SVGMaskElement.cpp >index 099aadfabc19bc1d775cdc5a0c75b8d81f1b9531..aaf6efa56fabb161a13b0a2871b12a84c97371f3 100644 >--- a/Source/WebCore/svg/SVGMaskElement.cpp >+++ b/Source/WebCore/svg/SVGMaskElement.cpp >@@ -53,12 +53,12 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGMaskElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(width) > REGISTER_LOCAL_ANIMATED_PROPERTY(height) > REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > REGISTER_PARENT_ANIMATED_PROPERTIES(SVGTests) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGMaskElement::SVGMaskElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_maskUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) > , m_maskContentUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE) > , m_x(LengthModeWidth, "-10%") >@@ -99,7 +99,7 @@ void SVGMaskElement::parseAttribute(const QualifiedName& name, const AtomicStrin > SVGParsingError parseError = NoError; > > if (!isSupportedAttribute(name)) >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > else if (name == SVGNames::maskUnitsAttr) { > SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits<SVGUnitTypes::SVGUnitType>::fromString(value); > if (propertyValue > 0) >@@ -130,7 +130,7 @@ void SVGMaskElement::parseAttribute(const QualifiedName& name, const AtomicStrin > void SVGMaskElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >@@ -148,7 +148,7 @@ void SVGMaskElement::svgAttributeChanged(const QualifiedName& attrName) > > void SVGMaskElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) > { >- SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >+ SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); > > if (changedByParser) > return; >diff --git a/Source/WebCore/svg/SVGMaskElement.h b/Source/WebCore/svg/SVGMaskElement.h >index 7c9d4a023c6b18890d04e5e32f54adcd80d98f04..595ec3e6f4ab817786dcb1e5858195faecc9eeb0 100644 >--- a/Source/WebCore/svg/SVGMaskElement.h >+++ b/Source/WebCore/svg/SVGMaskElement.h >@@ -24,15 +24,15 @@ > #include "SVGAnimatedBoolean.h" > #include "SVGAnimatedEnumeration.h" > #include "SVGAnimatedLength.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGNames.h" >-#include "SVGStyledElement.h" > #include "SVGTests.h" > #include "SVGUnitTypes.h" > > namespace WebCore { > >-class SVGMaskElement FINAL : public SVGStyledElement, >+class SVGMaskElement FINAL : public SVGElement, > public SVGTests, > public SVGExternalResourcesRequired { > public: >diff --git a/Source/WebCore/svg/SVGMaskElement.idl b/Source/WebCore/svg/SVGMaskElement.idl >index 049a8dbae47d403b60ffac5455b7ffd681397b66..62969f2728c19d6910c75d6755e558e3eb5c6420 100644 >--- a/Source/WebCore/svg/SVGMaskElement.idl >+++ b/Source/WebCore/svg/SVGMaskElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG >-] interface SVGMaskElement : SVGStyledElement { >+] interface SVGMaskElement : SVGElement { > readonly attribute SVGAnimatedEnumeration maskUnits; > readonly attribute SVGAnimatedEnumeration maskContentUnits; > >diff --git a/Source/WebCore/svg/SVGMetadataElement.h b/Source/WebCore/svg/SVGMetadataElement.h >index 7ec6d54046ea9a6501f36d5238644037f5223a7e..ba6c6608af765bc1158f7b1f185e748ef37910ab 100644 >--- a/Source/WebCore/svg/SVGMetadataElement.h >+++ b/Source/WebCore/svg/SVGMetadataElement.h >@@ -32,6 +32,8 @@ public: > > private: > SVGMetadataElement(const QualifiedName&, Document*); >+ >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGMissingGlyphElement.cpp b/Source/WebCore/svg/SVGMissingGlyphElement.cpp >index 5c98015c760386a27653b6ba679e807fdbc42a1f..dc72d3342763ea44cbe0dbbafd542741252884d3 100644 >--- a/Source/WebCore/svg/SVGMissingGlyphElement.cpp >+++ b/Source/WebCore/svg/SVGMissingGlyphElement.cpp >@@ -26,7 +26,7 @@ > namespace WebCore { > > inline SVGMissingGlyphElement::SVGMissingGlyphElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > { > ASSERT(hasTagName(SVGNames::missing_glyphTag)); > } >diff --git a/Source/WebCore/svg/SVGMissingGlyphElement.h b/Source/WebCore/svg/SVGMissingGlyphElement.h >index 48140ad0411794a317b83f22d5d21b00e03c04c9..5e611c5b987bc564d95eca3352016a49e774bfd4 100644 >--- a/Source/WebCore/svg/SVGMissingGlyphElement.h >+++ b/Source/WebCore/svg/SVGMissingGlyphElement.h >@@ -21,11 +21,11 @@ > #define SVGMissingGlyphElement_h > > #if ENABLE(SVG_FONTS) >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > > namespace WebCore { > >-class SVGMissingGlyphElement FINAL : public SVGStyledElement { >+class SVGMissingGlyphElement FINAL : public SVGElement { > public: > static PassRefPtr<SVGMissingGlyphElement> create(const QualifiedName&, Document*); > >diff --git a/Source/WebCore/svg/SVGMissingGlyphElement.idl b/Source/WebCore/svg/SVGMissingGlyphElement.idl >index 647741a1568b621eabb65395b7e431e2cb0ce309..9a0e3e629359c3eb344eb2143f22a32512c92b75 100644 >--- a/Source/WebCore/svg/SVGMissingGlyphElement.idl >+++ b/Source/WebCore/svg/SVGMissingGlyphElement.idl >@@ -25,6 +25,6 @@ > > [ > Conditional=SVG&SVG_FONTS >-] interface SVGMissingGlyphElement : SVGStyledElement { >+] interface SVGMissingGlyphElement : SVGElement { > }; > >diff --git a/Source/WebCore/svg/SVGPatternElement.cpp b/Source/WebCore/svg/SVGPatternElement.cpp >index 0cd3df901552966ea3abd4f37dacd6d18c87c378..02415008ab28f4a650ca4c87f90cdc2e0c2f762a 100644 >--- a/Source/WebCore/svg/SVGPatternElement.cpp >+++ b/Source/WebCore/svg/SVGPatternElement.cpp >@@ -69,12 +69,12 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGPatternElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) > REGISTER_LOCAL_ANIMATED_PROPERTY(viewBox) > REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAspectRatio) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > REGISTER_PARENT_ANIMATED_PROPERTIES(SVGTests) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGPatternElement::SVGPatternElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_x(LengthModeWidth) > , m_y(LengthModeHeight) > , m_width(LengthModeWidth) >@@ -116,7 +116,7 @@ void SVGPatternElement::parseAttribute(const QualifiedName& name, const AtomicSt > SVGParsingError parseError = NoError; > > if (!isSupportedAttribute(name)) >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > else if (name == SVGNames::patternUnitsAttr) { > SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits<SVGUnitTypes::SVGUnitType>::fromString(value); > if (propertyValue > 0) >@@ -155,7 +155,7 @@ void SVGPatternElement::parseAttribute(const QualifiedName& name, const AtomicSt > void SVGPatternElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >@@ -173,7 +173,7 @@ void SVGPatternElement::svgAttributeChanged(const QualifiedName& attrName) > > void SVGPatternElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) > { >- SVGStyledElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >+ SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); > > if (changedByParser) > return; >diff --git a/Source/WebCore/svg/SVGPatternElement.h b/Source/WebCore/svg/SVGPatternElement.h >index 2dabad41e508205b6c644800b0170f4e61f5f132..6db65963881c3fa6bec68df19e27b710099cb640 100644 >--- a/Source/WebCore/svg/SVGPatternElement.h >+++ b/Source/WebCore/svg/SVGPatternElement.h >@@ -28,10 +28,10 @@ > #include "SVGAnimatedPreserveAspectRatio.h" > #include "SVGAnimatedRect.h" > #include "SVGAnimatedTransformList.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGFitToViewBox.h" > #include "SVGNames.h" >-#include "SVGStyledElement.h" > #include "SVGTests.h" > #include "SVGURIReference.h" > #include "SVGUnitTypes.h" >@@ -40,7 +40,7 @@ namespace WebCore { > > struct PatternAttributes; > >-class SVGPatternElement FINAL : public SVGStyledElement, >+class SVGPatternElement FINAL : public SVGElement, > public SVGURIReference, > public SVGTests, > public SVGExternalResourcesRequired, >diff --git a/Source/WebCore/svg/SVGPatternElement.idl b/Source/WebCore/svg/SVGPatternElement.idl >index 262a03312ee4b1b406ac077cefe8931f148ba6fb..50d1385f032ce66022096910d3110dc075a7de5e 100644 >--- a/Source/WebCore/svg/SVGPatternElement.idl >+++ b/Source/WebCore/svg/SVGPatternElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG >-] interface SVGPatternElement : SVGStyledElement { >+] interface SVGPatternElement : SVGElement { > readonly attribute SVGAnimatedEnumeration patternUnits; > readonly attribute SVGAnimatedEnumeration patternContentUnits; > readonly attribute SVGAnimatedTransformList patternTransform; >diff --git a/Source/WebCore/svg/SVGScriptElement.h b/Source/WebCore/svg/SVGScriptElement.h >index 43c2411766521b1c2a37176abec88a695bfe1d73..99b9d8732d907e1cf6a71f0ceac7b8072cd8eab7 100644 >--- a/Source/WebCore/svg/SVGScriptElement.h >+++ b/Source/WebCore/svg/SVGScriptElement.h >@@ -71,6 +71,7 @@ private: > virtual void dispatchLoadEvent() { SVGExternalResourcesRequired::dispatchLoadEvent(this); } > > virtual PassRefPtr<Element> cloneElementWithoutAttributesAndChildren(); >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } > > // SVGExternalResourcesRequired > virtual void setHaveFiredLoadEvent(bool haveFiredLoadEvent) { ScriptElement::setHaveFiredLoadEvent(haveFiredLoadEvent); } >diff --git a/Source/WebCore/svg/SVGStopElement.cpp b/Source/WebCore/svg/SVGStopElement.cpp >index 7309ecd55b26c8a6f49934ca256e15820e752090..52626b391892f7daafb038b175c356fe60cfcf2e 100644 >--- a/Source/WebCore/svg/SVGStopElement.cpp >+++ b/Source/WebCore/svg/SVGStopElement.cpp >@@ -38,11 +38,11 @@ DEFINE_ANIMATED_NUMBER(SVGStopElement, SVGNames::offsetAttr, Offset, offset) > > BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGStopElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(offset) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGStopElement::SVGStopElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_offset(0) > { > ASSERT(hasTagName(SVGNames::stopTag)); >@@ -65,7 +65,7 @@ bool SVGStopElement::isSupportedAttribute(const QualifiedName& attrName) > void SVGStopElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (!isSupportedAttribute(name)) { >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > return; > } > >@@ -83,7 +83,7 @@ void SVGStopElement::parseAttribute(const QualifiedName& name, const AtomicStrin > void SVGStopElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >diff --git a/Source/WebCore/svg/SVGStopElement.h b/Source/WebCore/svg/SVGStopElement.h >index c93a9ffb4a812ef0e4cb843fe6f742738f97d154..6679a712020e2d6280892abf7233f85eca9c7571 100644 >--- a/Source/WebCore/svg/SVGStopElement.h >+++ b/Source/WebCore/svg/SVGStopElement.h >@@ -23,11 +23,11 @@ > > #if ENABLE(SVG) > #include "SVGAnimatedNumber.h" >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > > namespace WebCore { > >-class SVGStopElement FINAL : public SVGStyledElement { >+class SVGStopElement FINAL : public SVGElement { > public: > static PassRefPtr<SVGStopElement> create(const QualifiedName&, Document*); > >diff --git a/Source/WebCore/svg/SVGStopElement.idl b/Source/WebCore/svg/SVGStopElement.idl >index 86413f70855e6b98f7be6ea649a5c81a240e528a..8411974f0d70d2e08b2e72ef27effbc2b87fc103 100644 >--- a/Source/WebCore/svg/SVGStopElement.idl >+++ b/Source/WebCore/svg/SVGStopElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG >-] interface SVGStopElement : SVGStyledElement { >+] interface SVGStopElement : SVGElement { > readonly attribute SVGAnimatedNumber offset; > }; > >diff --git a/Source/WebCore/svg/SVGStyleElement.h b/Source/WebCore/svg/SVGStyleElement.h >index 033ee5972991ce7ec3cf41dae014d38718897e06..3d238717ea190e76766267e1647010ac389e5f7d 100644 >--- a/Source/WebCore/svg/SVGStyleElement.h >+++ b/Source/WebCore/svg/SVGStyleElement.h >@@ -56,6 +56,8 @@ private: > virtual void removedFrom(ContainerNode*) OVERRIDE; > virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); > >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } >+ > virtual void finishParsingChildren(); > > virtual bool isLoading() const { return m_styleSheetOwner.isLoading(); } >diff --git a/Source/WebCore/svg/SVGStyledElement.cpp b/Source/WebCore/svg/SVGStyledElement.cpp >deleted file mode 100644 >index b5da77de8d715af05af6dae6f3ce98458cb0314b..0000000000000000000000000000000000000000 >--- a/Source/WebCore/svg/SVGStyledElement.cpp >+++ /dev/null >@@ -1,487 +0,0 @@ >-/* >- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> >- * Copyright (C) 2004, 2005, 2007, 2008 Rob Buis <buis@kde.org> >- * >- * 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. >- */ >- >-#include "config.h" >- >-#if ENABLE(SVG) >-#include "SVGStyledElement.h" >- >-#include "Attr.h" >-#include "CSSParser.h" >-#include "Document.h" >-#include "ElementTraversal.h" >-#include "EventNames.h" >-#include "HTMLNames.h" >-#include "RenderObject.h" >-#include "RenderSVGResource.h" >-#include "RenderSVGResourceClipper.h" >-#include "RenderSVGResourceFilter.h" >-#include "RenderSVGResourceMasker.h" >-#include "SVGElement.h" >-#include "SVGElementInstance.h" >-#include "SVGElementRareData.h" >-#include "SVGNames.h" >-#include "SVGRenderStyle.h" >-#include "SVGRenderSupport.h" >-#include "SVGSVGElement.h" >-#include "SVGUseElement.h" >-#include "ShadowRoot.h" >-#include <wtf/Assertions.h> >-#include <wtf/HashMap.h> >-#include <wtf/StdLibExtras.h> >-#include <wtf/text/WTFString.h> >- >-namespace WebCore { >- >-// Animated property definitions >-DEFINE_ANIMATED_STRING(SVGStyledElement, HTMLNames::classAttr, ClassName, className) >- >-BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGStyledElement) >- REGISTER_LOCAL_ANIMATED_PROPERTY(className) >-END_REGISTER_ANIMATED_PROPERTIES >- >-using namespace SVGNames; >- >-void mapAttributeToCSSProperty(HashMap<AtomicStringImpl*, CSSPropertyID>* propertyNameToIdMap, const QualifiedName& attrName) >-{ >- // FIXME: when CSS supports "transform-origin" the special case for transform_originAttr can be removed. >- CSSPropertyID propertyId = cssPropertyID(attrName.localName()); >- if (!propertyId && attrName == transform_originAttr) >- propertyId = CSSPropertyWebkitTransformOrigin; // cssPropertyID("-webkit-transform-origin") >- ASSERT(propertyId > 0); >- propertyNameToIdMap->set(attrName.localName().impl(), propertyId); >-} >- >-SVGStyledElement::SVGStyledElement(const QualifiedName& tagName, Document* document) >- : SVGElement(tagName, document) >-{ >- registerAnimatedPropertiesForSVGStyledElement(); >-} >- >-String SVGStyledElement::title() const >-{ >- // According to spec, we should not return titles when hovering over root <svg> elements (those >- // <title> elements are the title of the document, not a tooltip) so we instantly return. >- if (isOutermostSVGSVGElement()) >- return String(); >- >- // Walk up the tree, to find out whether we're inside a <use> shadow tree, to find the right title. >- if (isInShadowTree()) { >- Element* shadowHostElement = toShadowRoot(treeScope()->rootNode())->hostElement(); >- // At this time, SVG nodes are not allowed in non-<use> shadow trees, so any shadow root we do >- // have should be a use. The assert and following test is here to catch future shadow DOM changes >- // that do enable SVG in a shadow tree. >- ASSERT(!shadowHostElement || shadowHostElement->hasTagName(SVGNames::useTag)); >- if (shadowHostElement && shadowHostElement->hasTagName(SVGNames::useTag)) { >- SVGUseElement* useElement = toSVGUseElement(shadowHostElement); >- >- // If the <use> title is not empty we found the title to use. >- String useTitle(useElement->title()); >- if (!useTitle.isEmpty()) >- return useTitle; >- } >- } >- >- // If we aren't an instance in a <use> or the <use> title was not found, then find the first >- // <title> child of this element. >- Element* titleElement = ElementTraversal::firstWithin(this); >- for (; titleElement; titleElement = ElementTraversal::nextSibling(titleElement)) { >- if (titleElement->hasTagName(SVGNames::titleTag) && titleElement->isSVGElement()) >- break; >- } >- >- // If a title child was found, return the text contents. >- if (titleElement) >- return titleElement->innerText(); >- >- // Otherwise return a null/empty string. >- return String(); >-} >- >-bool SVGStyledElement::rendererIsNeeded(const RenderStyle& style) >-{ >- // http://www.w3.org/TR/SVG/extend.html#PrivateData >- // Prevent anything other than SVG renderers from appearing in our render tree >- // Spec: SVG allows inclusion of elements from foreign namespaces anywhere >- // with the SVG content. In general, the SVG user agent will include the unknown >- // elements in the DOM but will otherwise ignore unknown elements. >- if (!parentOrShadowHostElement() || parentOrShadowHostElement()->isSVGElement()) >- return StyledElement::rendererIsNeeded(style); >- >- return false; >-} >- >-CSSPropertyID SVGStyledElement::cssPropertyIdForSVGAttributeName(const QualifiedName& attrName) >-{ >- if (!attrName.namespaceURI().isNull()) >- return CSSPropertyInvalid; >- >- static HashMap<AtomicStringImpl*, CSSPropertyID>* propertyNameToIdMap = 0; >- if (!propertyNameToIdMap) { >- propertyNameToIdMap = new HashMap<AtomicStringImpl*, CSSPropertyID>; >- // This is a list of all base CSS and SVG CSS properties which are exposed as SVG XML attributes >- mapAttributeToCSSProperty(propertyNameToIdMap, alignment_baselineAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, baseline_shiftAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, buffered_renderingAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, clipAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, clip_pathAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, clip_ruleAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, SVGNames::colorAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, color_interpolationAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, color_interpolation_filtersAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, color_profileAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, color_renderingAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, cursorAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, SVGNames::directionAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, displayAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, dominant_baselineAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, enable_backgroundAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, fillAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, fill_opacityAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, fill_ruleAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, filterAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, flood_colorAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, flood_opacityAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_familyAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_sizeAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_stretchAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_styleAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_variantAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, font_weightAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, glyph_orientation_horizontalAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, glyph_orientation_verticalAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, image_renderingAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, kerningAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, letter_spacingAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, lighting_colorAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, marker_endAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, marker_midAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, marker_startAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, maskAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, mask_typeAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, opacityAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, overflowAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, pointer_eventsAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, shape_renderingAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stop_colorAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stop_opacityAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, strokeAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stroke_dasharrayAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stroke_dashoffsetAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stroke_linecapAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stroke_linejoinAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stroke_miterlimitAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stroke_opacityAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, stroke_widthAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, text_anchorAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, text_decorationAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, text_renderingAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, transform_originAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, unicode_bidiAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, vector_effectAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, visibilityAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, word_spacingAttr); >- mapAttributeToCSSProperty(propertyNameToIdMap, writing_modeAttr); >- } >- >- return propertyNameToIdMap->get(attrName.localName().impl()); >-} >- >-typedef HashMap<QualifiedName, AnimatedPropertyType> AttributeToPropertyTypeMap; >-static inline AttributeToPropertyTypeMap& cssPropertyToTypeMap() >-{ >- DEFINE_STATIC_LOCAL(AttributeToPropertyTypeMap, s_cssPropertyMap, ()); >- >- if (!s_cssPropertyMap.isEmpty()) >- return s_cssPropertyMap; >- >- // Fill the map for the first use. >- s_cssPropertyMap.set(alignment_baselineAttr, AnimatedString); >- s_cssPropertyMap.set(baseline_shiftAttr, AnimatedString); >- s_cssPropertyMap.set(buffered_renderingAttr, AnimatedString); >- s_cssPropertyMap.set(clipAttr, AnimatedRect); >- s_cssPropertyMap.set(clip_pathAttr, AnimatedString); >- s_cssPropertyMap.set(clip_ruleAttr, AnimatedString); >- s_cssPropertyMap.set(SVGNames::colorAttr, AnimatedColor); >- s_cssPropertyMap.set(color_interpolationAttr, AnimatedString); >- s_cssPropertyMap.set(color_interpolation_filtersAttr, AnimatedString); >- s_cssPropertyMap.set(color_profileAttr, AnimatedString); >- s_cssPropertyMap.set(color_renderingAttr, AnimatedString); >- s_cssPropertyMap.set(cursorAttr, AnimatedString); >- s_cssPropertyMap.set(displayAttr, AnimatedString); >- s_cssPropertyMap.set(dominant_baselineAttr, AnimatedString); >- s_cssPropertyMap.set(fillAttr, AnimatedColor); >- s_cssPropertyMap.set(fill_opacityAttr, AnimatedNumber); >- s_cssPropertyMap.set(fill_ruleAttr, AnimatedString); >- s_cssPropertyMap.set(filterAttr, AnimatedString); >- s_cssPropertyMap.set(flood_colorAttr, AnimatedColor); >- s_cssPropertyMap.set(flood_opacityAttr, AnimatedNumber); >- s_cssPropertyMap.set(font_familyAttr, AnimatedString); >- s_cssPropertyMap.set(font_sizeAttr, AnimatedLength); >- s_cssPropertyMap.set(font_stretchAttr, AnimatedString); >- s_cssPropertyMap.set(font_styleAttr, AnimatedString); >- s_cssPropertyMap.set(font_variantAttr, AnimatedString); >- s_cssPropertyMap.set(font_weightAttr, AnimatedString); >- s_cssPropertyMap.set(image_renderingAttr, AnimatedString); >- s_cssPropertyMap.set(kerningAttr, AnimatedLength); >- s_cssPropertyMap.set(letter_spacingAttr, AnimatedLength); >- s_cssPropertyMap.set(lighting_colorAttr, AnimatedColor); >- s_cssPropertyMap.set(marker_endAttr, AnimatedString); >- s_cssPropertyMap.set(marker_midAttr, AnimatedString); >- s_cssPropertyMap.set(marker_startAttr, AnimatedString); >- s_cssPropertyMap.set(maskAttr, AnimatedString); >- s_cssPropertyMap.set(mask_typeAttr, AnimatedString); >- s_cssPropertyMap.set(opacityAttr, AnimatedNumber); >- s_cssPropertyMap.set(overflowAttr, AnimatedString); >- s_cssPropertyMap.set(pointer_eventsAttr, AnimatedString); >- s_cssPropertyMap.set(shape_renderingAttr, AnimatedString); >- s_cssPropertyMap.set(stop_colorAttr, AnimatedColor); >- s_cssPropertyMap.set(stop_opacityAttr, AnimatedNumber); >- s_cssPropertyMap.set(strokeAttr, AnimatedColor); >- s_cssPropertyMap.set(stroke_dasharrayAttr, AnimatedLengthList); >- s_cssPropertyMap.set(stroke_dashoffsetAttr, AnimatedLength); >- s_cssPropertyMap.set(stroke_linecapAttr, AnimatedString); >- s_cssPropertyMap.set(stroke_linejoinAttr, AnimatedString); >- s_cssPropertyMap.set(stroke_miterlimitAttr, AnimatedNumber); >- s_cssPropertyMap.set(stroke_opacityAttr, AnimatedNumber); >- s_cssPropertyMap.set(stroke_widthAttr, AnimatedLength); >- s_cssPropertyMap.set(text_anchorAttr, AnimatedString); >- s_cssPropertyMap.set(text_decorationAttr, AnimatedString); >- s_cssPropertyMap.set(text_renderingAttr, AnimatedString); >- s_cssPropertyMap.set(vector_effectAttr, AnimatedString); >- s_cssPropertyMap.set(visibilityAttr, AnimatedString); >- s_cssPropertyMap.set(word_spacingAttr, AnimatedLength); >- return s_cssPropertyMap; >-} >- >-void SVGStyledElement::animatedPropertyTypeForAttribute(const QualifiedName& attrName, Vector<AnimatedPropertyType>& propertyTypes) >-{ >- SVGElement::animatedPropertyTypeForAttribute(attrName, propertyTypes); >- if (!propertyTypes.isEmpty()) >- return; >- >- AttributeToPropertyTypeMap& cssPropertyTypeMap = cssPropertyToTypeMap(); >- if (cssPropertyTypeMap.contains(attrName)) >- propertyTypes.append(cssPropertyTypeMap.get(attrName)); >-} >- >-bool SVGStyledElement::isAnimatableCSSProperty(const QualifiedName& attrName) >-{ >- return cssPropertyToTypeMap().contains(attrName); >-} >- >-bool SVGStyledElement::isPresentationAttribute(const QualifiedName& name) const >-{ >- if (SVGStyledElement::cssPropertyIdForSVGAttributeName(name) > 0) >- return true; >- return SVGElement::isPresentationAttribute(name); >-} >- >-void SVGStyledElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style) >-{ >- CSSPropertyID propertyID = SVGStyledElement::cssPropertyIdForSVGAttributeName(name); >- if (propertyID > 0) >- addPropertyToPresentationAttributeStyle(style, propertyID, value); >-} >- >-void SVGStyledElement::parseAttribute(const QualifiedName& name, const AtomicString& value) >-{ >- // SVG animation has currently requires special storage of values so we set >- // the className here. svgAttributeChanged actually causes the resulting >- // style updates (instead of StyledElement::parseAttribute). We don't >- // tell StyledElement about the change to avoid parsing the class list twice >- if (name == HTMLNames::classAttr) { >- setClassNameBaseValue(value); >- return; >- } >- >- // id is handled by StyledElement which SVGElement inherits from >- SVGElement::parseAttribute(name, value); >-} >- >-bool SVGStyledElement::isKnownAttribute(const QualifiedName& attrName) >-{ >- return isIdAttributeName(attrName); >-} >- >-void SVGStyledElement::svgAttributeChanged(const QualifiedName& attrName) >-{ >- CSSPropertyID propId = SVGStyledElement::cssPropertyIdForSVGAttributeName(attrName); >- if (propId > 0) { >- SVGElementInstance::invalidateAllInstancesOfElement(this); >- return; >- } >- >- if (attrName == HTMLNames::classAttr) { >- classAttributeChanged(className()); >- SVGElementInstance::invalidateAllInstancesOfElement(this); >- return; >- } >- >- if (isIdAttributeName(attrName)) { >- RenderObject* object = renderer(); >- // Notify resources about id changes, this is important as we cache resources by id in SVGDocumentExtensions >- if (object && object->isSVGResourceContainer()) >- object->toRenderSVGResourceContainer()->idChanged(); >- if (inDocument()) >- buildPendingResourcesIfNeeded(); >- SVGElementInstance::invalidateAllInstancesOfElement(this); >- return; >- } >-} >- >-Node::InsertionNotificationRequest SVGStyledElement::insertedInto(ContainerNode* rootParent) >-{ >- SVGElement::insertedInto(rootParent); >- updateRelativeLengthsInformation(); >- buildPendingResourcesIfNeeded(); >- return InsertionDone; >-} >- >-void SVGStyledElement::buildPendingResourcesIfNeeded() >-{ >- Document* document = this->document(); >- if (!needsPendingResourceHandling() || !document || !inDocument() || isInShadowTree()) >- return; >- >- SVGDocumentExtensions* extensions = document->accessSVGExtensions(); >- String resourceId = getIdAttribute(); >- if (!extensions->hasPendingResource(resourceId)) >- return; >- >- // Mark pending resources as pending for removal. >- extensions->markPendingResourcesForRemoval(resourceId); >- >- // Rebuild pending resources for each client of a pending resource that is being removed. >- while (Element* clientElement = extensions->removeElementFromPendingResourcesForRemoval(resourceId)) { >- ASSERT(clientElement->hasPendingResources()); >- if (clientElement->hasPendingResources()) { >- clientElement->buildPendingResource(); >- extensions->clearHasPendingResourcesIfPossible(clientElement); >- } >- } >-} >- >-void SVGStyledElement::removedFrom(ContainerNode* rootParent) >-{ >- if (rootParent->inDocument()) >- updateRelativeLengthsInformation(false, this); >- SVGElement::removedFrom(rootParent); >- SVGElementInstance::invalidateAllInstancesOfElement(this); >-} >- >-void SVGStyledElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) >-{ >- SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); >- >- // Invalidate all SVGElementInstances associated with us >- if (!changedByParser) >- SVGElementInstance::invalidateAllInstancesOfElement(this); >-} >- >-PassRefPtr<CSSValue> SVGStyledElement::getPresentationAttribute(const String& name) >-{ >- if (!hasAttributesWithoutUpdate()) >- return 0; >- >- QualifiedName attributeName(nullAtom, name, nullAtom); >- const Attribute* attribute = findAttributeByName(attributeName); >- if (!attribute) >- return 0; >- >- RefPtr<MutableStylePropertySet> style = MutableStylePropertySet::create(SVGAttributeMode); >- CSSPropertyID propertyID = SVGStyledElement::cssPropertyIdForSVGAttributeName(attribute->name()); >- style->setProperty(propertyID, attribute->value()); >- RefPtr<CSSValue> cssValue = style->getPropertyCSSValue(propertyID); >- return cssValue ? cssValue->cloneForCSSOM() : 0; >-} >- >-bool SVGStyledElement::instanceUpdatesBlocked() const >-{ >- return hasSVGRareData() && svgRareData()->instanceUpdatesBlocked(); >-} >- >-void SVGStyledElement::setInstanceUpdatesBlocked(bool value) >-{ >- if (hasSVGRareData()) >- svgRareData()->setInstanceUpdatesBlocked(value); >-} >- >-AffineTransform SVGStyledElement::localCoordinateSpaceTransform(SVGLocatable::CTMScope) const >-{ >- // To be overriden by SVGGraphicsElement (or as special case SVGTextElement and SVGPatternElement) >- return AffineTransform(); >-} >- >-void SVGStyledElement::updateRelativeLengthsInformation(bool hasRelativeLengths, SVGStyledElement* element) >-{ >- // If we're not yet in a document, this function will be called again from insertedInto(). Do nothing now. >- if (!inDocument()) >- return; >- >- // An element wants to notify us that its own relative lengths state changed. >- // Register it in the relative length map, and register us in the parent relative length map. >- // Register the parent in the grandparents map, etc. Repeat procedure until the root of the SVG tree. >- >- if (hasRelativeLengths) >- m_elementsWithRelativeLengths.add(element); >- else { >- if (!m_elementsWithRelativeLengths.contains(element)) { >- // We were never registered. Do nothing. >- return; >- } >- >- m_elementsWithRelativeLengths.remove(element); >- } >- >- // Find first styled parent node, and notify it that we've changed our relative length state. >- ContainerNode* node = parentNode(); >- while (node) { >- if (!node->isSVGElement()) >- break; >- >- SVGElement* element = toSVGElement(node); >- if (!element->isSVGStyledElement()) { >- node = node->parentNode(); >- continue; >- } >- >- // Register us in the parent element map. >- toSVGStyledElement(element)->updateRelativeLengthsInformation(hasRelativeLengths, this); >- break; >- } >-} >- >-bool SVGStyledElement::isMouseFocusable() const >-{ >- if (!isFocusable()) >- return false; >- Element* eventTarget = const_cast<SVGStyledElement *>(this); >- return eventTarget->hasEventListeners(eventNames().focusinEvent) || eventTarget->hasEventListeners(eventNames().focusoutEvent); >-} >- >-bool SVGStyledElement::isKeyboardFocusable(KeyboardEvent*) const >-{ >- return isMouseFocusable(); >-} >- >-} >- >-#endif // ENABLE(SVG) >diff --git a/Source/WebCore/svg/SVGStyledElement.h b/Source/WebCore/svg/SVGStyledElement.h >deleted file mode 100644 >index 38c947c7df5a2e9e80e9736fd85f6f7140c6ad69..0000000000000000000000000000000000000000 >--- a/Source/WebCore/svg/SVGStyledElement.h >+++ /dev/null >@@ -1,105 +0,0 @@ >-/* >- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> >- * Copyright (C) 2004, 2005, 2007 Rob Buis <buis@kde.org> >- * >- * 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 SVGStyledElement_h >-#define SVGStyledElement_h >- >-#if ENABLE(SVG) >-#include "CSSPropertyNames.h" >-#include "SVGAnimatedString.h" >-#include "SVGElement.h" >-#include "SVGLocatable.h" >-#include <wtf/HashSet.h> >-#include <wtf/PassRefPtr.h> >- >-namespace WebCore { >- >-void mapAttributeToCSSProperty(HashMap<AtomicStringImpl*, CSSPropertyID>* propertyNameToIdMap, const QualifiedName& attrName); >- >-class CSSValue; >-class CSSStyleDeclaration; >- >-// FIXME(webkit.org/b/107386): SVGStyledElement should be merged into SVGElement as specified by SVG2. >-class SVGStyledElement : public SVGElement { >-public: >- virtual String title() const OVERRIDE; >- >- bool hasRelativeLengths() const { return !m_elementsWithRelativeLengths.isEmpty(); } >- >- virtual bool supportsMarkers() const { return false; } >- >- PassRefPtr<CSSValue> getPresentationAttribute(const String& name); >- >- bool isKnownAttribute(const QualifiedName&); >- >- bool instanceUpdatesBlocked() const; >- void setInstanceUpdatesBlocked(bool); >- >- virtual void animatedPropertyTypeForAttribute(const QualifiedName&, Vector<AnimatedPropertyType>&); >- static bool isAnimatableCSSProperty(const QualifiedName&); >- >- virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope) const; >- >- virtual bool needsPendingResourceHandling() const { return true; } >- >-protected: >- SVGStyledElement(const QualifiedName&, Document*); >- virtual bool rendererIsNeeded(const RenderStyle&); >- >- virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; >- virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE; >- virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE; >- virtual void svgAttributeChanged(const QualifiedName&) OVERRIDE; >- >- virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE; >- virtual void removedFrom(ContainerNode*) OVERRIDE; >- virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); >- >- static CSSPropertyID cssPropertyIdForSVGAttributeName(const QualifiedName&); >- void updateRelativeLengthsInformation() { updateRelativeLengthsInformation(selfHasRelativeLengths(), this); } >- void updateRelativeLengthsInformation(bool hasRelativeLengths, SVGStyledElement*); >- >- virtual bool selfHasRelativeLengths() const { return false; } >- >-private: >- virtual bool isSVGStyledElement() const OVERRIDE FINAL { return true; } >- >- virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE; >- virtual bool isMouseFocusable() const OVERRIDE; >- >- void buildPendingResourcesIfNeeded(); >- >- HashSet<SVGStyledElement*> m_elementsWithRelativeLengths; >- >- BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGStyledElement) >- DECLARE_ANIMATED_STRING(ClassName, className) >- END_DECLARE_ANIMATED_PROPERTIES >-}; >- >-inline SVGStyledElement* toSVGStyledElement(Node* node) >-{ >- ASSERT_WITH_SECURITY_IMPLICATION(!node || (node->isStyledElement() && node->isSVGElement())); >- return static_cast<SVGStyledElement*>(node); >-} >- >-} // namespace WebCore >- >-#endif // ENABLE(SVG) >-#endif // SVGStyledElement >diff --git a/Source/WebCore/svg/SVGStyledElement.idl b/Source/WebCore/svg/SVGStyledElement.idl >deleted file mode 100644 >index f7f94900efba2fbdb81b52ba9e305a00b46917b3..0000000000000000000000000000000000000000 >--- a/Source/WebCore/svg/SVGStyledElement.idl >+++ /dev/null >@@ -1,37 +0,0 @@ >-/* >- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> >- * Copyright (C) 2007 Rob Buis <rwlbuis@gmail.com> >- * Copyright (C) 2006 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-[ >- NoInterfaceObject, >- Conditional=SVG >-] interface SVGStyledElement : SVGElement { >- readonly attribute SVGAnimatedString className; >- readonly attribute CSSStyleDeclaration style; >- >- CSSValue getPresentationAttribute([Default=Undefined] optional DOMString name); >-}; >- >diff --git a/Source/WebCore/svg/SVGSymbolElement.cpp b/Source/WebCore/svg/SVGSymbolElement.cpp >index ddc76753c4877a8d54482b6c179a39df863be93a..2d6d05d9b04c98f7f939ebd7886cc9e948ad8c35 100644 >--- a/Source/WebCore/svg/SVGSymbolElement.cpp >+++ b/Source/WebCore/svg/SVGSymbolElement.cpp >@@ -39,11 +39,11 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGSymbolElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) > REGISTER_LOCAL_ANIMATED_PROPERTY(viewBox) > REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAspectRatio) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGSymbolElement::SVGSymbolElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > { > ASSERT(hasTagName(SVGNames::symbolTag)); > registerAnimatedPropertiesForSVGSymbolElement(); >@@ -68,7 +68,7 @@ bool SVGSymbolElement::isSupportedAttribute(const QualifiedName& attrName) > void SVGSymbolElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (!isSupportedAttribute(name)) { >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > return; > } > >@@ -85,7 +85,7 @@ void SVGSymbolElement::parseAttribute(const QualifiedName& name, const AtomicStr > void SVGSymbolElement::svgAttributeChanged(const QualifiedName& attrName) > { > if (!isSupportedAttribute(attrName)) { >- SVGStyledElement::svgAttributeChanged(attrName); >+ SVGElement::svgAttributeChanged(attrName); > return; > } > >diff --git a/Source/WebCore/svg/SVGSymbolElement.h b/Source/WebCore/svg/SVGSymbolElement.h >index 6bbdfd79a3de8cd0bc221c2b5e6d3e465d520627..d3e24f56f936cacd1f103d2eb9b7e135220f4c8f 100644 >--- a/Source/WebCore/svg/SVGSymbolElement.h >+++ b/Source/WebCore/svg/SVGSymbolElement.h >@@ -25,13 +25,13 @@ > #include "SVGAnimatedBoolean.h" > #include "SVGAnimatedPreserveAspectRatio.h" > #include "SVGAnimatedRect.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGFitToViewBox.h" >-#include "SVGStyledElement.h" > > namespace WebCore { > >-class SVGSymbolElement FINAL : public SVGStyledElement, >+class SVGSymbolElement FINAL : public SVGElement, > public SVGExternalResourcesRequired, > public SVGFitToViewBox { > public: >diff --git a/Source/WebCore/svg/SVGSymbolElement.idl b/Source/WebCore/svg/SVGSymbolElement.idl >index 17914ef96ab29cb9b475356e6974a37d46eea424..75b99136925745d2a8e18d0b69db413c03bfa6bf 100644 >--- a/Source/WebCore/svg/SVGSymbolElement.idl >+++ b/Source/WebCore/svg/SVGSymbolElement.idl >@@ -25,7 +25,7 @@ > > [ > Conditional=SVG >-] interface SVGSymbolElement : SVGStyledElement { >+] interface SVGSymbolElement : SVGElement { > }; > > SVGSymbolElement implements SVGExternalResourcesRequired; >diff --git a/Source/WebCore/svg/SVGTRefElement.cpp b/Source/WebCore/svg/SVGTRefElement.cpp >index 6fdbf9a53d6e355633ba27eb78ca3725a8762734..7fe07a76a4131249aab472bbfab965b353c9afa8 100644 >--- a/Source/WebCore/svg/SVGTRefElement.cpp >+++ b/Source/WebCore/svg/SVGTRefElement.cpp >@@ -277,7 +277,7 @@ void SVGTRefElement::buildPendingResource() > > Node::InsertionNotificationRequest SVGTRefElement::insertedInto(ContainerNode* rootParent) > { >- SVGStyledElement::insertedInto(rootParent); >+ SVGElement::insertedInto(rootParent); > if (rootParent->inDocument()) > buildPendingResource(); > return InsertionDone; >@@ -285,7 +285,7 @@ Node::InsertionNotificationRequest SVGTRefElement::insertedInto(ContainerNode* r > > void SVGTRefElement::removedFrom(ContainerNode* rootParent) > { >- SVGStyledElement::removedFrom(rootParent); >+ SVGElement::removedFrom(rootParent); > if (rootParent->inDocument()) > m_targetListener->detach(); > } >diff --git a/Source/WebCore/svg/SVGTitleElement.cpp b/Source/WebCore/svg/SVGTitleElement.cpp >index 51706f0e338bea30ed8031c36233900e867127a2..ae939a910404d889485b22f08796012b48f7ac6b 100644 >--- a/Source/WebCore/svg/SVGTitleElement.cpp >+++ b/Source/WebCore/svg/SVGTitleElement.cpp >@@ -28,7 +28,7 @@ > namespace WebCore { > > inline SVGTitleElement::SVGTitleElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > { > ASSERT(hasTagName(SVGNames::titleTag)); > } >@@ -40,7 +40,7 @@ PassRefPtr<SVGTitleElement> SVGTitleElement::create(const QualifiedName& tagName > > Node::InsertionNotificationRequest SVGTitleElement::insertedInto(ContainerNode* rootParent) > { >- SVGStyledElement::insertedInto(rootParent); >+ SVGElement::insertedInto(rootParent); > if (!rootParent->inDocument()) > return InsertionDone; > if (firstChild()) >diff --git a/Source/WebCore/svg/SVGTitleElement.h b/Source/WebCore/svg/SVGTitleElement.h >index 0e3b99d210360cfd32674f752c58f6e5c13cf598..e4de48c072af34ac35b5a07ee59d6247339eb81c 100644 >--- a/Source/WebCore/svg/SVGTitleElement.h >+++ b/Source/WebCore/svg/SVGTitleElement.h >@@ -22,11 +22,11 @@ > #define SVGTitleElement_h > #if ENABLE(SVG) > >-#include "SVGStyledElement.h" >+#include "SVGElement.h" > > namespace WebCore { > >-class SVGTitleElement FINAL : public SVGStyledElement { >+class SVGTitleElement FINAL : public SVGElement { > public: > static PassRefPtr<SVGTitleElement> create(const QualifiedName&, Document*); > >diff --git a/Source/WebCore/svg/SVGTitleElement.idl b/Source/WebCore/svg/SVGTitleElement.idl >index 9895c7ac674ca740a964ca25b123714cb658d5ee..8b506c9ef2a350cee62fcdcf0b19c98708588c0a 100644 >--- a/Source/WebCore/svg/SVGTitleElement.idl >+++ b/Source/WebCore/svg/SVGTitleElement.idl >@@ -25,6 +25,6 @@ > > [ > Conditional=SVG >-] interface SVGTitleElement : SVGStyledElement { >+] interface SVGTitleElement : SVGElement { > }; > >diff --git a/Source/WebCore/svg/SVGTransformable.cpp b/Source/WebCore/svg/SVGTransformable.cpp >index 094ced9a3a4c7b7a04a7815dfff724416ba90f66..99c55375ce5ff7aa24db4c19342404cdcd129a9d 100644 >--- a/Source/WebCore/svg/SVGTransformable.cpp >+++ b/Source/WebCore/svg/SVGTransformable.cpp >@@ -26,9 +26,9 @@ > > #include "AffineTransform.h" > #include "FloatConversion.h" >+#include "SVGElement.h" > #include "SVGNames.h" > #include "SVGParserUtilities.h" >-#include "SVGStyledElement.h" > #include "SVGTransformList.h" > > namespace WebCore { >diff --git a/Source/WebCore/svg/SVGUseElement.cpp b/Source/WebCore/svg/SVGUseElement.cpp >index d0cbe70703bd6c998cd4dd9d41b6a7dea93bd881..d6b674b188abbcea49c0c1293085c87756b81c77 100644 >--- a/Source/WebCore/svg/SVGUseElement.cpp >+++ b/Source/WebCore/svg/SVGUseElement.cpp >@@ -940,10 +940,10 @@ bool SVGUseElement::selfHasRelativeLengths() const > return false; > > SVGElement* element = m_targetElementInstance->correspondingElement(); >- if (!element || !element->isSVGStyledElement()) >+ if (!element) > return false; > >- return toSVGStyledElement(element)->hasRelativeLengths(); >+ return element->hasRelativeLengths(); > } > > void SVGUseElement::notifyFinished(CachedResource* resource) >diff --git a/Source/WebCore/svg/SVGViewElement.cpp b/Source/WebCore/svg/SVGViewElement.cpp >index 7d010a4f01aad1f31be700c6e7b74b63090d364f..e823dea3986b6f57a1b043209f034db8f1974e62 100644 >--- a/Source/WebCore/svg/SVGViewElement.cpp >+++ b/Source/WebCore/svg/SVGViewElement.cpp >@@ -40,11 +40,11 @@ BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGViewElement) > REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) > REGISTER_LOCAL_ANIMATED_PROPERTY(viewBox) > REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAspectRatio) >- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement) >+ REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) > END_REGISTER_ANIMATED_PROPERTIES > > inline SVGViewElement::SVGViewElement(const QualifiedName& tagName, Document* document) >- : SVGStyledElement(tagName, document) >+ : SVGElement(tagName, document) > , m_zoomAndPan(SVGZoomAndPanMagnify) > , m_viewTarget(SVGNames::viewTargetAttr) > { >@@ -72,7 +72,7 @@ bool SVGViewElement::isSupportedAttribute(const QualifiedName& attrName) > void SVGViewElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (!isSupportedAttribute(name)) { >- SVGStyledElement::parseAttribute(name, value); >+ SVGElement::parseAttribute(name, value); > return; > } > >diff --git a/Source/WebCore/svg/SVGViewElement.h b/Source/WebCore/svg/SVGViewElement.h >index 4d2e6030dd8184f338fe6b351ac91c8beabe7c42..983f98431e3d8dae15583da58c024cafc0b0d7f5 100644 >--- a/Source/WebCore/svg/SVGViewElement.h >+++ b/Source/WebCore/svg/SVGViewElement.h >@@ -25,23 +25,23 @@ > #include "SVGAnimatedBoolean.h" > #include "SVGAnimatedPreserveAspectRatio.h" > #include "SVGAnimatedRect.h" >+#include "SVGElement.h" > #include "SVGExternalResourcesRequired.h" > #include "SVGFitToViewBox.h" > #include "SVGStringList.h" >-#include "SVGStyledElement.h" > #include "SVGZoomAndPan.h" > > namespace WebCore { > >-class SVGViewElement FINAL : public SVGStyledElement, >+class SVGViewElement FINAL : public SVGElement, > public SVGExternalResourcesRequired, > public SVGFitToViewBox, > public SVGZoomAndPan { > public: > static PassRefPtr<SVGViewElement> create(const QualifiedName&, Document*); > >- using SVGStyledElement::ref; >- using SVGStyledElement::deref; >+ using SVGElement::ref; >+ using SVGElement::deref; > > SVGStringList& viewTarget() { return m_viewTarget; } > SVGZoomAndPanType zoomAndPan() const { return m_zoomAndPan; } >diff --git a/Source/WebCore/svg/animation/SVGSMILElement.h b/Source/WebCore/svg/animation/SVGSMILElement.h >index 16ba838b465bc33e409b931eb5be5bf64f991907..f7150f3f4946154cb7210c282edffeb96229b7d7 100644 >--- a/Source/WebCore/svg/animation/SVGSMILElement.h >+++ b/Source/WebCore/svg/animation/SVGSMILElement.h >@@ -116,6 +116,8 @@ protected: > > void setInactive() { m_activeState = Inactive; } > >+ virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } >+ > // Sub-classes may need to take action when the target is changed. > virtual void setTargetElement(SVGElement*); > virtual void setAttributeName(const QualifiedName&); >diff --git a/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp b/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp >index 092736de0aa5513a06812a9b71db7fab56a9de92..57b854501f4e6e74400eff321f5d17545c0ad7f1 100644 >--- a/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp >+++ b/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp >@@ -30,10 +30,10 @@ > #include "GraphicsContext.h" > #include "RenderObject.h" > #include "RenderTreeAsText.h" >+#include "SVGElement.h" > #include "SVGFilter.h" > #include "SVGPreserveAspectRatio.h" > #include "SVGRenderingContext.h" >-#include "SVGStyledElement.h" > #include "SVGURIReference.h" > #include "TextStream.h" > >@@ -126,7 +126,7 @@ void FEImage::platformApplySoftware() > resultImage->context()->concatCTM(absoluteTransform); > > SVGElement* contextNode = toSVGElement(renderer->node()); >- if (contextNode->isSVGStyledElement() && toSVGStyledElement(contextNode)->hasRelativeLengths()) { >+ if (contextNode->hasRelativeLengths()) { > SVGLengthContext lengthContext(contextNode); > float width = 0; > float height = 0; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 394948c4b4ef659a4ba2d7c3263bc81b5370e6a8..f162fcdc58343d7f087daeb5f9622277cebd1d7f 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,15 @@ >+2013-08-22 Christophe Dumez <ch.dumez@sisa.samsung.com> >+ >+ [SVG2] Merge SVGStyledElement and SVGElement >+ https://bugs.webkit.org/show_bug.cgi?id=107386 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add layout test to validate the SVG2 inheritance model. >+ >+ * svg/dom/svg2-inheritance-expected.txt: Added. >+ * svg/dom/svg2-inheritance.html: Added. >+ > 2013-08-22 Rob Buis <rwlbuis@webkit.org> > > REGRESSION: Assertion failure !collection->hasExactlyOneItem() in WebCore::namedItemGetter >diff --git a/LayoutTests/svg/dom/svg2-inheritance-expected.txt b/LayoutTests/svg/dom/svg2-inheritance-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..e2b6100fcfb279d24d2187a5f693f9429fca6a6a >--- /dev/null >+++ b/LayoutTests/svg/dom/svg2-inheritance-expected.txt >@@ -0,0 +1,130 @@ >+Validates the SVG2 inheritance model. >+ >+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >+ >+ >+PASS SVGAElement inherits SVGGraphicsElement >+PASS SVGAltGlyphDefElement inherits SVGElement >+PASS SVGAltGlyphElement inherits SVGTextPositioningElement >+PASS SVGAltGlyphItemElement inherits SVGElement >+PASS SVGAngle inherits Object >+PASS SVGAnimateColorElement inherits SVGAnimationElement >+PASS SVGAnimateElement inherits SVGAnimationElement >+PASS SVGAnimateMotionElement inherits SVGAnimationElement >+PASS SVGAnimateTransformElement inherits SVGAnimationElement >+PASS SVGAnimatedAngle inherits Object >+PASS SVGAnimatedBoolean inherits Object >+PASS SVGAnimatedEnumeration inherits Object >+PASS SVGAnimatedInteger inherits Object >+PASS SVGAnimatedLength inherits Object >+PASS SVGAnimatedLengthList inherits Object >+PASS SVGAnimatedNumber inherits Object >+PASS SVGAnimatedNumberList inherits Object >+FAIL SVGAnimatedPathData is not defined >+PASS SVGAnimatedPreserveAspectRatio inherits Object >+PASS SVGAnimatedRect inherits Object >+PASS SVGAnimatedString inherits Object >+PASS SVGAnimatedTransformList inherits Object >+PASS SVGAnimationElement inherits SVGElement >+FAIL SVGCSSRule is not defined >+FAIL SVGCircleElement should inherit SVGGeometryElement but got SVGGraphicsElement instead >+FAIL SVGClipPathElement should inherit SVGDefinitionElement but got SVGGraphicsElement instead >+FAIL SVGColorProfileElement is not defined >+FAIL SVGColorProfileRule is not defined >+PASS SVGCursorElement inherits SVGElement >+PASS SVGDefsElement inherits SVGGraphicsElement >+PASS SVGDescElement inherits SVGElement >+PASS SVGElement inherits Element >+FAIL SVGElementInstance should inherit EventTarget but got EventTarget instead >+PASS SVGElementInstanceList inherits Object >+FAIL SVGEllipseElement should inherit SVGGeometryElement but got SVGGraphicsElement instead >+PASS SVGFontElement inherits SVGElement >+PASS SVGFontFaceElement inherits SVGElement >+PASS SVGFontFaceFormatElement inherits SVGElement >+PASS SVGFontFaceNameElement inherits SVGElement >+PASS SVGFontFaceSrcElement inherits SVGElement >+PASS SVGFontFaceUriElement inherits SVGElement >+PASS SVGForeignObjectElement inherits SVGGraphicsElement >+PASS SVGGElement inherits SVGGraphicsElement >+FAIL SVGGeometryElement is not defined >+PASS SVGGlyphElement inherits SVGElement >+PASS SVGGlyphRefElement inherits SVGElement >+PASS SVGGradientElement inherits SVGElement >+PASS SVGGraphicsElement inherits SVGElement >+PASS SVGHKernElement inherits SVGElement >+PASS SVGImageElement inherits SVGGraphicsElement >+PASS SVGLength inherits Object >+PASS SVGLengthList inherits Object >+FAIL SVGLineElement should inherit SVGGeometryElement but got SVGGraphicsElement instead >+PASS SVGLinearGradientElement inherits SVGGradientElement >+PASS SVGMPathElement inherits SVGElement >+PASS SVGMarkerElement inherits SVGElement >+FAIL SVGMarkerInstance is not defined >+FAIL SVGMarkerList is not defined >+FAIL SVGMaskElement should inherit SVGDefinitionElement but got SVGElement instead >+PASS SVGMatrix inherits Object >+FAIL SVGMeshGradientElement is not defined >+FAIL SVGMeshPatchElement is not defined >+FAIL SVGMeshRowElement is not defined >+PASS SVGMetadataElement inherits SVGElement >+PASS SVGMissingGlyphElement inherits SVGElement >+PASS SVGNumber inherits Object >+PASS SVGNumberList inherits Object >+FAIL SVGPathElement should inherit SVGGeometryElement but got SVGGraphicsElement instead >+PASS SVGPathSeg inherits Object >+PASS SVGPathSegArcAbs inherits SVGPathSeg >+PASS SVGPathSegArcRel inherits SVGPathSeg >+PASS SVGPathSegClosePath inherits SVGPathSeg >+PASS SVGPathSegCurvetoCubicAbs inherits SVGPathSeg >+PASS SVGPathSegCurvetoCubicRel inherits SVGPathSeg >+PASS SVGPathSegCurvetoCubicSmoothAbs inherits SVGPathSeg >+PASS SVGPathSegCurvetoCubicSmoothRel inherits SVGPathSeg >+PASS SVGPathSegCurvetoQuadraticAbs inherits SVGPathSeg >+PASS SVGPathSegCurvetoQuadraticRel inherits SVGPathSeg >+PASS SVGPathSegCurvetoQuadraticSmoothAbs inherits SVGPathSeg >+PASS SVGPathSegCurvetoQuadraticSmoothRel inherits SVGPathSeg >+PASS SVGPathSegLinetoAbs inherits SVGPathSeg >+PASS SVGPathSegLinetoHorizontalAbs inherits SVGPathSeg >+PASS SVGPathSegLinetoHorizontalRel inherits SVGPathSeg >+PASS SVGPathSegLinetoRel inherits SVGPathSeg >+PASS SVGPathSegLinetoVerticalAbs inherits SVGPathSeg >+PASS SVGPathSegLinetoVerticalRel inherits SVGPathSeg >+PASS SVGPathSegList inherits Object >+PASS SVGPathSegMovetoAbs inherits SVGPathSeg >+PASS SVGPathSegMovetoRel inherits SVGPathSeg >+PASS SVGPatternElement inherits SVGElement >+PASS SVGPoint inherits Object >+PASS SVGPointList inherits Object >+FAIL SVGPolygonElement should inherit SVGGeometryElement but got SVGGraphicsElement instead >+FAIL SVGPolylineElement should inherit SVGGeometryElement but got SVGGraphicsElement instead >+PASS SVGPreserveAspectRatio inherits Object >+PASS SVGRadialGradientElement inherits SVGGradientElement >+PASS SVGRect inherits Object >+FAIL SVGRectElement should inherit SVGGeometryElement but got SVGGraphicsElement instead >+PASS SVGSVGElement inherits SVGGraphicsElement >+PASS SVGScriptElement inherits SVGElement >+PASS SVGSetElement inherits SVGAnimationElement >+PASS SVGStopElement inherits SVGElement >+PASS SVGStringList inherits Object >+PASS SVGStyleElement inherits SVGElement >+PASS SVGSwitchElement inherits SVGGraphicsElement >+PASS SVGSymbolElement inherits SVGElement >+PASS SVGTRefElement inherits SVGTextPositioningElement >+PASS SVGTSpanElement inherits SVGTextPositioningElement >+PASS SVGTextContentElement inherits SVGGraphicsElement >+PASS SVGTextElement inherits SVGTextPositioningElement >+PASS SVGTextPathElement inherits SVGTextContentElement >+PASS SVGTextPositioningElement inherits SVGTextContentElement >+PASS SVGTitleElement inherits SVGElement >+PASS SVGTransform inherits Object >+PASS SVGTransformList inherits Object >+PASS SVGUseElement inherits SVGGraphicsElement >+PASS SVGVKernElement inherits SVGElement >+PASS SVGViewElement inherits SVGElement >+PASS SVGViewSpec inherits Object >+PASS SVGZoomEvent inherits UIEvent >+FAIL TimeEvent is not defined >+PASS successfullyParsed is true >+ >+TEST COMPLETE >+ >diff --git a/LayoutTests/svg/dom/svg2-inheritance.html b/LayoutTests/svg/dom/svg2-inheritance.html >new file mode 100644 >index 0000000000000000000000000000000000000000..cb6d5b49c34faa51401a926cfca1a55b7be85ce3 >--- /dev/null >+++ b/LayoutTests/svg/dom/svg2-inheritance.html >@@ -0,0 +1,158 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<link rel="help" href="http://www.w3.org/TR/2013/WD-SVG2-20130618/" /> >+<script src="../../fast/js/resources/js-test-pre.js"></script> >+</head> >+<body> >+<script> >+description("Validates the SVG2 inheritance model."); >+ >+function interfaceName(prototype) >+{ >+ var parts = prototype.toString().split(" "); >+ var lastPart = parts[parts.length - 1]; >+ return lastPart.substring(0, lastPart.length - 10); >+} >+ >+function checkParent(type, expectedParent) >+{ >+ // Using shouldBe() would lead to not very readable output here. >+ if (!window[type]) { >+ testFailed(type + " is not defined"); >+ return; >+ } >+ var parentPrototype = window[type].prototype.__proto__; >+ var expectedPrototype = window[expectedParent] ? window[expectedParent].prototype : null; >+ >+ if (expectedPrototype && parentPrototype === expectedPrototype) >+ testPassed(type + " inherits " + expectedParent); >+ else >+ testFailed(type + " should inherit " + expectedParent + " but got " + interfaceName(parentPrototype) + " instead"); >+} >+ >+checkParent("SVGAElement", "SVGGraphicsElement"); >+checkParent("SVGAltGlyphDefElement", "SVGElement"); >+checkParent("SVGAltGlyphElement", "SVGTextPositioningElement"); >+checkParent("SVGAltGlyphItemElement", "SVGElement"); >+checkParent("SVGAngle", "Object"); >+checkParent("SVGAnimateColorElement", "SVGAnimationElement"); >+checkParent("SVGAnimateElement", "SVGAnimationElement"); >+checkParent("SVGAnimateMotionElement", "SVGAnimationElement"); >+checkParent("SVGAnimateTransformElement", "SVGAnimationElement"); >+checkParent("SVGAnimatedAngle", "Object"); >+checkParent("SVGAnimatedBoolean", "Object"); >+checkParent("SVGAnimatedEnumeration", "Object"); >+checkParent("SVGAnimatedInteger", "Object"); >+checkParent("SVGAnimatedLength", "Object"); >+checkParent("SVGAnimatedLengthList", "Object"); >+checkParent("SVGAnimatedNumber", "Object"); >+checkParent("SVGAnimatedNumberList", "Object"); >+checkParent("SVGAnimatedPathData", "Object"); >+checkParent("SVGAnimatedPreserveAspectRatio", "Object"); >+checkParent("SVGAnimatedRect", "Object"); >+checkParent("SVGAnimatedString", "Object"); >+checkParent("SVGAnimatedTransformList", "Object"); >+checkParent("SVGAnimationElement", "SVGElement"); >+checkParent("SVGCSSRule", "CSSRule"); >+checkParent("SVGCircleElement", "SVGGeometryElement"); >+checkParent("SVGClipPathElement", "SVGDefinitionElement"); >+checkParent("SVGColorProfileElement", "SVGElement"); >+checkParent("SVGColorProfileRule", "SVGCSSRule"); >+checkParent("SVGCursorElement", "SVGElement"); >+checkParent("SVGDefsElement", "SVGGraphicsElement"); >+checkParent("SVGDescElement", "SVGElement"); >+checkParent("SVGElement", "Element"); >+checkParent("SVGElementInstance", "EventTarget"); >+checkParent("SVGElementInstanceList", "Object"); >+checkParent("SVGEllipseElement", "SVGGeometryElement"); >+checkParent("SVGFontElement", "SVGElement"); >+checkParent("SVGFontFaceElement", "SVGElement"); >+checkParent("SVGFontFaceFormatElement", "SVGElement"); >+checkParent("SVGFontFaceNameElement", "SVGElement"); >+checkParent("SVGFontFaceSrcElement", "SVGElement"); >+checkParent("SVGFontFaceUriElement", "SVGElement"); >+checkParent("SVGForeignObjectElement", "SVGGraphicsElement"); >+checkParent("SVGGElement", "SVGGraphicsElement"); >+checkParent("SVGGeometryElement", "SVGGraphicsElement"); >+checkParent("SVGGlyphElement", "SVGElement"); >+checkParent("SVGGlyphRefElement", "SVGElement"); >+checkParent("SVGGradientElement", "SVGElement"); >+checkParent("SVGGraphicsElement", "SVGElement"); >+checkParent("SVGHKernElement", "SVGElement"); >+checkParent("SVGImageElement", "SVGGraphicsElement"); >+checkParent("SVGLength", "Object"); >+checkParent("SVGLengthList", "Object"); >+checkParent("SVGLineElement", "SVGGeometryElement"); >+checkParent("SVGLinearGradientElement", "SVGGradientElement"); >+checkParent("SVGMPathElement", "SVGElement"); >+checkParent("SVGMarkerElement", "SVGElement"); >+checkParent("SVGMarkerInstance", "Object"); >+checkParent("SVGMarkerList", "Object"); >+checkParent("SVGMaskElement", "SVGDefinitionElement"); >+checkParent("SVGMatrix", "Object"); >+checkParent("SVGMeshGradientElement", "SVGGradientElement"); >+checkParent("SVGMeshPatchElement", "SVGElement"); >+checkParent("SVGMeshRowElement", "SVGElement"); >+checkParent("SVGMetadataElement", "SVGElement"); >+checkParent("SVGMissingGlyphElement", "SVGElement"); >+checkParent("SVGNumber", "Object"); >+checkParent("SVGNumberList", "Object"); >+checkParent("SVGPathElement", "SVGGeometryElement"); >+checkParent("SVGPathSeg", "Object"); >+checkParent("SVGPathSegArcAbs", "SVGPathSeg"); >+checkParent("SVGPathSegArcRel", "SVGPathSeg"); >+checkParent("SVGPathSegClosePath", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoCubicAbs", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoCubicRel", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoCubicSmoothAbs", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoCubicSmoothRel", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoQuadraticAbs", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoQuadraticRel", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoQuadraticSmoothAbs", "SVGPathSeg"); >+checkParent("SVGPathSegCurvetoQuadraticSmoothRel", "SVGPathSeg"); >+checkParent("SVGPathSegLinetoAbs", "SVGPathSeg"); >+checkParent("SVGPathSegLinetoHorizontalAbs", "SVGPathSeg"); >+checkParent("SVGPathSegLinetoHorizontalRel", "SVGPathSeg"); >+checkParent("SVGPathSegLinetoRel", "SVGPathSeg"); >+checkParent("SVGPathSegLinetoVerticalAbs", "SVGPathSeg"); >+checkParent("SVGPathSegLinetoVerticalRel", "SVGPathSeg"); >+checkParent("SVGPathSegList", "Object"); >+checkParent("SVGPathSegMovetoAbs", "SVGPathSeg"); >+checkParent("SVGPathSegMovetoRel", "SVGPathSeg"); >+checkParent("SVGPatternElement", "SVGElement"); >+checkParent("SVGPoint", "Object"); >+checkParent("SVGPointList", "Object"); >+checkParent("SVGPolygonElement", "SVGGeometryElement"); >+checkParent("SVGPolylineElement", "SVGGeometryElement"); >+checkParent("SVGPreserveAspectRatio", "Object"); >+checkParent("SVGRadialGradientElement", "SVGGradientElement"); >+checkParent("SVGRect", "Object"); >+checkParent("SVGRectElement", "SVGGeometryElement"); >+checkParent("SVGSVGElement", "SVGGraphicsElement"); >+checkParent("SVGScriptElement", "SVGElement"); >+checkParent("SVGSetElement", "SVGAnimationElement"); >+checkParent("SVGStopElement", "SVGElement"); >+checkParent("SVGStringList", "Object"); >+checkParent("SVGStyleElement", "SVGElement"); >+checkParent("SVGSwitchElement", "SVGGraphicsElement"); >+checkParent("SVGSymbolElement", "SVGElement"); >+checkParent("SVGTRefElement", "SVGTextPositioningElement"); >+checkParent("SVGTSpanElement", "SVGTextPositioningElement"); >+checkParent("SVGTextContentElement", "SVGGraphicsElement"); >+checkParent("SVGTextElement", "SVGTextPositioningElement"); >+checkParent("SVGTextPathElement", "SVGTextContentElement"); >+checkParent("SVGTextPositioningElement", "SVGTextContentElement"); >+checkParent("SVGTitleElement", "SVGElement"); >+checkParent("SVGTransform", "Object"); >+checkParent("SVGTransformList", "Object"); >+checkParent("SVGUseElement", "SVGGraphicsElement"); >+checkParent("SVGVKernElement", "SVGElement"); >+checkParent("SVGViewElement", "SVGElement"); >+checkParent("SVGViewSpec", "Object"); >+checkParent("SVGZoomEvent", "UIEvent"); >+checkParent("TimeEvent", "Event"); >+</script> >+<script src="../../fast/js/resources/js-test-post.js"></script> >+</body> >+</html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 107386
:
209365
|
209369