WebKit Bugzilla
Attachment 371689 Details for
Bug 198122
: Remove the non final propertyRegistry() from the SVG base classes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for review
03c.patch (text/plain), 97.76 KB, created by
Said Abou-Hallawa
on 2019-06-08 18:12:14 PDT
(
hide
)
Description:
Patch for review
Filename:
MIME Type:
Creator:
Said Abou-Hallawa
Created:
2019-06-08 18:12:14 PDT
Size:
97.76 KB
patch
obsolete
>diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index e89049a69fa..923da7a23f4 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,103 @@ >+2019-06-08 Said Abou-Hallawa <said@apple.com> >+ >+ Remove the non final propertyRegistry() from the SVG base classes >+ https://bugs.webkit.org/show_bug.cgi?id=198122 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This saves the memory that is taken by the member SVGPropertyRegistry of >+ the base class. propertyRegistry() is only needed for concrete classes. >+ >+ * svg/SVGAElement.h: >+ * svg/SVGAltGlyphDefElement.h: >+ * svg/SVGAltGlyphElement.h: >+ * svg/SVGAltGlyphItemElement.h: >+ * svg/SVGAnimationElement.h: >+ * svg/SVGCircleElement.h: >+ * svg/SVGClipPathElement.h: >+ * svg/SVGComponentTransferFunctionElement.h: >+ * svg/SVGCursorElement.h: >+ * svg/SVGDefsElement.h: >+ * svg/SVGDescElement.h: >+ * svg/SVGElement.h: >+ (WebCore::SVGElement::propertyRegistry const): Deleted. >+ * svg/SVGEllipseElement.h: >+ * svg/SVGExternalResourcesRequired.h: >+ * svg/SVGFEBlendElement.h: >+ * svg/SVGFEColorMatrixElement.h: >+ * svg/SVGFEComponentTransferElement.h: >+ * svg/SVGFECompositeElement.h: >+ * svg/SVGFEConvolveMatrixElement.h: >+ * svg/SVGFEDiffuseLightingElement.h: >+ * svg/SVGFEDisplacementMapElement.h: >+ * svg/SVGFEDropShadowElement.h: >+ * svg/SVGFEFloodElement.h: >+ * svg/SVGFEGaussianBlurElement.h: >+ * svg/SVGFEImageElement.h: >+ * svg/SVGFELightElement.h: >+ * svg/SVGFEMergeElement.h: >+ * svg/SVGFEMergeNodeElement.h: >+ * svg/SVGFEMorphologyElement.h: >+ * svg/SVGFEOffsetElement.h: >+ * svg/SVGFESpecularLightingElement.h: >+ * svg/SVGFETileElement.h: >+ * svg/SVGFETurbulenceElement.h: >+ * svg/SVGFilterElement.h: >+ * svg/SVGFontFaceElement.h: >+ * svg/SVGFontFaceFormatElement.h: >+ * svg/SVGFontFaceNameElement.h: >+ * svg/SVGFontFaceSrcElement.h: >+ * svg/SVGFontFaceUriElement.h: >+ * svg/SVGForeignObjectElement.h: >+ * svg/SVGGElement.h: >+ * svg/SVGGeometryElement.h: >+ * svg/SVGGlyphElement.h: >+ * svg/SVGGradientElement.h: >+ * svg/SVGGraphicsElement.h: >+ * svg/SVGHKernElement.h: >+ * svg/SVGImageElement.h: >+ * svg/SVGLineElement.h: >+ * svg/SVGLinearGradientElement.h: >+ * svg/SVGMPathElement.h: >+ * svg/SVGMarkerElement.h: >+ * svg/SVGMaskElement.h: >+ * svg/SVGMetadataElement.h: >+ * svg/SVGMissingGlyphElement.h: >+ * svg/SVGPathElement.cpp: >+ (WebCore::SVGPathElement::getTotalLength const): >+ (WebCore::SVGPathElement::getPointAtLength const): >+ (WebCore::SVGPathElement::getPathSegAtLength const): >+ * svg/SVGPathElement.h: >+ * svg/SVGPathUtilities.cpp: >+ (WebCore::pathSegAtLengthFromSVGPathByteStream): >+ (WebCore::totalLengthOfSVGPathByteStream): >+ (WebCore::pointAtLengthOfSVGPathByteStream): >+ (WebCore::getSVGPathSegAtLengthFromSVGPathByteStream): Deleted. >+ (WebCore::getTotalLengthOfSVGPathByteStream): Deleted. >+ (WebCore::getPointAtLengthOfSVGPathByteStream): Deleted. >+ * svg/SVGPathUtilities.h: >+ * svg/SVGPatternElement.h: >+ * svg/SVGPolyElement.h: >+ * svg/SVGRadialGradientElement.h: >+ * svg/SVGRectElement.h: >+ * svg/SVGSVGElement.h: >+ * svg/SVGScriptElement.h: >+ * svg/SVGStopElement.h: >+ * svg/SVGStyleElement.h: >+ * svg/SVGSwitchElement.h: >+ * svg/SVGSymbolElement.h: >+ * svg/SVGTRefElement.h: >+ * svg/SVGTSpanElement.h: >+ * svg/SVGTextContentElement.h: >+ * svg/SVGTextElement.h: >+ * svg/SVGTextPathElement.h: >+ * svg/SVGTextPositioningElement.h: >+ * svg/SVGTitleElement.h: >+ * svg/SVGUnknownElement.h: >+ * svg/SVGUseElement.h: >+ * svg/SVGVKernElement.h: >+ * svg/SVGViewElement.h: >+ > 2019-06-08 Said Abou-Hallawa <said@apple.com> > > SVGPropertyTraits and SVG enum types clean up >diff --git a/Source/WebCore/svg/SVGAElement.h b/Source/WebCore/svg/SVGAElement.h >index 7e1d2946704..6d1ef45ec17 100644 >--- a/Source/WebCore/svg/SVGAElement.h >+++ b/Source/WebCore/svg/SVGAElement.h >@@ -31,6 +31,8 @@ namespace WebCore { > > class SVGAElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGAElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGURIReference>; >+ > public: > static Ref<SVGAElement> create(const QualifiedName&, Document&); > >@@ -42,9 +44,7 @@ public: > private: > SVGAElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >@@ -66,8 +66,6 @@ private: > > PropertyRegistry m_propertyRegistry { *this }; > Ref<SVGAnimatedString> m_target { SVGAnimatedString::create(this) }; >- >- // This is computed only once and must not be affected by subsequent URL changes. > mutable Optional<SharedStringHash> m_storedVisitedLinkHash; > }; > >diff --git a/Source/WebCore/svg/SVGAltGlyphDefElement.h b/Source/WebCore/svg/SVGAltGlyphDefElement.h >index 47174fbb02b..e3d579267b1 100644 >--- a/Source/WebCore/svg/SVGAltGlyphDefElement.h >+++ b/Source/WebCore/svg/SVGAltGlyphDefElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGAltGlyphDefElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGAltGlyphDefElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAltGlyphDefElement, SVGElement>; >+ > public: > static Ref<SVGAltGlyphDefElement> create(const QualifiedName&, Document&); > >@@ -36,7 +38,10 @@ public: > private: > SVGAltGlyphDefElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGAltGlyphElement.h b/Source/WebCore/svg/SVGAltGlyphElement.h >index 5d902f6756c..9459da4681c 100644 >--- a/Source/WebCore/svg/SVGAltGlyphElement.h >+++ b/Source/WebCore/svg/SVGAltGlyphElement.h >@@ -32,6 +32,8 @@ class SVGGlyphElement; > > class SVGAltGlyphElement final : public SVGTextPositioningElement, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGAltGlyphElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAltGlyphElement, SVGTextPositioningElement, SVGURIReference>; >+ > public: > static Ref<SVGAltGlyphElement> create(const QualifiedName&, Document&); > >@@ -45,11 +47,9 @@ public: > private: > SVGAltGlyphElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAltGlyphElement, SVGTextPositioningElement, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- >- RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) override; >- bool childShouldCreateRenderer(const Node&) const override; >+ RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) final; >+ bool childShouldCreateRenderer(const Node&) const final; > > PropertyRegistry m_propertyRegistry { *this }; > }; >diff --git a/Source/WebCore/svg/SVGAltGlyphItemElement.h b/Source/WebCore/svg/SVGAltGlyphItemElement.h >index 606b7833484..65fc04eec7d 100644 >--- a/Source/WebCore/svg/SVGAltGlyphItemElement.h >+++ b/Source/WebCore/svg/SVGAltGlyphItemElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGAltGlyphItemElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGAltGlyphItemElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAltGlyphItemElement, SVGElement>; >+ > public: > static Ref<SVGAltGlyphItemElement> create(const QualifiedName&, Document&); > >@@ -36,7 +38,10 @@ public: > private: > SVGAltGlyphItemElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGAnimationElement.h b/Source/WebCore/svg/SVGAnimationElement.h >index 54e9128129c..620d91996ae 100644 >--- a/Source/WebCore/svg/SVGAnimationElement.h >+++ b/Source/WebCore/svg/SVGAnimationElement.h >@@ -40,6 +40,8 @@ enum AnimatedPropertyValueType { RegularPropertyValue, CurrentColorValue, Inheri > > class SVGAnimationElement : public SVGSMILElement, public SVGExternalResourcesRequired, public SVGTests { > WTF_MAKE_ISO_ALLOCATED(SVGAnimationElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAnimationElement, SVGElement, SVGExternalResourcesRequired, SVGTests>; >+ > public: > float getStartTime() const; > float getCurrentTime() const; >@@ -86,9 +88,6 @@ public: > protected: > SVGAnimationElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGAnimationElement, SVGElement, SVGExternalResourcesRequired, SVGTests>; >- const SVGPropertyRegistry& propertyRegistry() const override { return m_propertyRegistry; } >- > virtual void resetAnimation(); > > static bool isSupportedAttribute(const QualifiedName&); >@@ -115,6 +114,7 @@ protected: > void setCalcMode(CalcMode calcMode) { m_calcMode = calcMode; } > > private: >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > void animationAttributeChanged() override; > void setAttributeType(const AtomicString&); > >diff --git a/Source/WebCore/svg/SVGCircleElement.h b/Source/WebCore/svg/SVGCircleElement.h >index 5f90c70fa9d..f82726092fe 100644 >--- a/Source/WebCore/svg/SVGCircleElement.h >+++ b/Source/WebCore/svg/SVGCircleElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGCircleElement final : public SVGGeometryElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGCircleElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGCircleElement, SVGGeometryElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGCircleElement> create(const QualifiedName&, Document&); > >@@ -43,9 +45,7 @@ public: > private: > SVGCircleElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGCircleElement, SVGGeometryElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGClipPathElement.h b/Source/WebCore/svg/SVGClipPathElement.h >index 3ef0368cc94..8890a30248f 100644 >--- a/Source/WebCore/svg/SVGClipPathElement.h >+++ b/Source/WebCore/svg/SVGClipPathElement.h >@@ -31,6 +31,8 @@ class RenderObject; > > class SVGClipPathElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGClipPathElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGClipPathElement, SVGGraphicsElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGClipPathElement> create(const QualifiedName&, Document&); > >@@ -40,9 +42,7 @@ public: > private: > SVGClipPathElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGClipPathElement, SVGGraphicsElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > void childrenChanged(const ChildChange&) final; >diff --git a/Source/WebCore/svg/SVGComponentTransferFunctionElement.h b/Source/WebCore/svg/SVGComponentTransferFunctionElement.h >index c5995cd7843..560c52da41c 100644 >--- a/Source/WebCore/svg/SVGComponentTransferFunctionElement.h >+++ b/Source/WebCore/svg/SVGComponentTransferFunctionElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGComponentTransferFunctionElement : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGComponentTransferFunctionElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGComponentTransferFunctionElement, SVGElement>; >+ > public: > ComponentTransferFunction transferFunction() const; > >@@ -50,13 +52,11 @@ public: > protected: > SVGComponentTransferFunctionElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGComponentTransferFunctionElement, SVGElement>; >- const SVGPropertyRegistry& propertyRegistry() const override { return m_propertyRegistry; } >- >- void parseAttribute(const QualifiedName&, const AtomicString&) override; >- void svgAttributeChanged(const QualifiedName&) override; >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >+ void parseAttribute(const QualifiedName&, const AtomicString&) final; >+ void svgAttributeChanged(const QualifiedName&) final; > >- bool rendererIsNeeded(const RenderStyle&) override { return false; } >+ bool rendererIsNeeded(const RenderStyle&) final { return false; } > > private: > PropertyRegistry m_propertyRegistry { *this }; >diff --git a/Source/WebCore/svg/SVGCursorElement.h b/Source/WebCore/svg/SVGCursorElement.h >index 9b812ebc8b4..6a123811d84 100644 >--- a/Source/WebCore/svg/SVGCursorElement.h >+++ b/Source/WebCore/svg/SVGCursorElement.h >@@ -32,6 +32,8 @@ class CSSCursorImageValue; > > class SVGCursorElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGTests, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGCursorElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGCursorElement, SVGElement, SVGExternalResourcesRequired, SVGTests, SVGURIReference>; >+ > public: > static Ref<SVGCursorElement> create(const QualifiedName&, Document&); > >@@ -49,9 +51,7 @@ public: > private: > SVGCursorElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGCursorElement, SVGElement, SVGExternalResourcesRequired, SVGTests, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGDefsElement.h b/Source/WebCore/svg/SVGDefsElement.h >index 8fbbef843bd..6a44c918eca 100644 >--- a/Source/WebCore/svg/SVGDefsElement.h >+++ b/Source/WebCore/svg/SVGDefsElement.h >@@ -28,13 +28,14 @@ namespace WebCore { > > class SVGDefsElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGDefsElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGDefsElement, SVGGraphicsElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGDefsElement> create(const QualifiedName&, Document&); > > private: > SVGDefsElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGDefsElement, SVGGraphicsElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > > bool isValid() const final; >diff --git a/Source/WebCore/svg/SVGDescElement.h b/Source/WebCore/svg/SVGDescElement.h >index 5f5e1d8124b..32b2263ed16 100644 >--- a/Source/WebCore/svg/SVGDescElement.h >+++ b/Source/WebCore/svg/SVGDescElement.h >@@ -26,6 +26,8 @@ namespace WebCore { > > class SVGDescElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGDescElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGDescElement, SVGElement>; >+ > public: > static Ref<SVGDescElement> create(const QualifiedName&, Document&); > >@@ -34,7 +36,10 @@ public: > private: > SVGDescElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGElement.h b/Source/WebCore/svg/SVGElement.h >index b4a701d1ed8..bd04b93bd95 100644 >--- a/Source/WebCore/svg/SVGElement.h >+++ b/Source/WebCore/svg/SVGElement.h >@@ -49,7 +49,10 @@ void mapAttributeToCSSProperty(HashMap<AtomicStringImpl*, CSSPropertyID>* proper > > class SVGElement : public StyledElement, public SVGLangSpace, public SVGPropertyOwner { > WTF_MAKE_ISO_ALLOCATED(SVGElement); >+ > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGElement>; >+ > bool isOutermostSVGSVGElement() const; > > SVGSVGElement* ownerSVGElement() const; >@@ -126,8 +129,7 @@ public: > class InstanceUpdateBlocker; > class InstanceInvalidationGuard; > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGElement>; >- virtual const SVGPropertyRegistry& propertyRegistry() const { return m_propertyRegistry; } >+ virtual const SVGPropertyRegistry& propertyRegistry() const = 0; > void detachAllProperties() { propertyRegistry().detachAllProperties(); } > > bool isAnimatedPropertyAttribute(const QualifiedName&) const; >@@ -200,7 +202,6 @@ private: > > std::unique_ptr<SVGPropertyAnimatorFactory> m_propertyAnimatorFactory; > >- PropertyRegistry m_propertyRegistry { *this }; > Ref<SVGAnimatedString> m_className { SVGAnimatedString::create(this) }; > }; > >diff --git a/Source/WebCore/svg/SVGEllipseElement.h b/Source/WebCore/svg/SVGEllipseElement.h >index 0fdca3767c4..e3b1ea187ee 100644 >--- a/Source/WebCore/svg/SVGEllipseElement.h >+++ b/Source/WebCore/svg/SVGEllipseElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGEllipseElement final : public SVGGeometryElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGEllipseElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGEllipseElement, SVGGeometryElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGEllipseElement> create(const QualifiedName&, Document&); > >@@ -45,9 +47,7 @@ public: > private: > SVGEllipseElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGEllipseElement, SVGGeometryElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGExternalResourcesRequired.h b/Source/WebCore/svg/SVGExternalResourcesRequired.h >index 9919af6d1fa..41ebe9c9973 100644 >--- a/Source/WebCore/svg/SVGExternalResourcesRequired.h >+++ b/Source/WebCore/svg/SVGExternalResourcesRequired.h >@@ -36,7 +36,10 @@ class SVGElement; > // FIXME: When implementing animVal support, make sure that animVal==baseVal for externalResourcesRequired > class SVGExternalResourcesRequired { > WTF_MAKE_NONCOPYABLE(SVGExternalResourcesRequired); >+ > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGExternalResourcesRequired>; >+ > virtual ~SVGExternalResourcesRequired() = default; > > void parseAttribute(const QualifiedName&, const AtomicString&); >@@ -44,8 +47,6 @@ public: > > static void addSupportedAttributes(HashSet<QualifiedName>&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGExternalResourcesRequired>; >- > bool externalResourcesRequired() const { return m_externalResourcesRequired->currentValue(); } > SVGAnimatedBoolean& externalResourcesRequiredAnimated() { return m_externalResourcesRequired; } > >diff --git a/Source/WebCore/svg/SVGFEBlendElement.h b/Source/WebCore/svg/SVGFEBlendElement.h >index 750a5175989..d155ca5fd8c 100644 >--- a/Source/WebCore/svg/SVGFEBlendElement.h >+++ b/Source/WebCore/svg/SVGFEBlendElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGFEBlendElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEBlendElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEBlendElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEBlendElement> create(const QualifiedName&, Document&); > >@@ -43,9 +45,7 @@ public: > private: > SVGFEBlendElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEBlendElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEColorMatrixElement.h b/Source/WebCore/svg/SVGFEColorMatrixElement.h >index 0d227463f0a..064d3909634 100644 >--- a/Source/WebCore/svg/SVGFEColorMatrixElement.h >+++ b/Source/WebCore/svg/SVGFEColorMatrixElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGFEColorMatrixElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEColorMatrixElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEColorMatrixElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEColorMatrixElement> create(const QualifiedName&, Document&); > >@@ -42,9 +44,7 @@ public: > private: > SVGFEColorMatrixElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEColorMatrixElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEComponentTransferElement.h b/Source/WebCore/svg/SVGFEComponentTransferElement.h >index 526216e5601..d175ba1b839 100644 >--- a/Source/WebCore/svg/SVGFEComponentTransferElement.h >+++ b/Source/WebCore/svg/SVGFEComponentTransferElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGFEComponentTransferElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEComponentTransferElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEComponentTransferElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEComponentTransferElement> create(const QualifiedName&, Document&); > >@@ -37,9 +39,7 @@ public: > private: > SVGFEComponentTransferElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEComponentTransferElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > // FIXME: svgAttributeChanged missing. > void parseAttribute(const QualifiedName&, const AtomicString&) override; > >diff --git a/Source/WebCore/svg/SVGFECompositeElement.h b/Source/WebCore/svg/SVGFECompositeElement.h >index 17462fdc5be..47d73911bd0 100644 >--- a/Source/WebCore/svg/SVGFECompositeElement.h >+++ b/Source/WebCore/svg/SVGFECompositeElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGFECompositeElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFECompositeElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFECompositeElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFECompositeElement> create(const QualifiedName&, Document&); > >@@ -50,9 +52,7 @@ public: > private: > SVGFECompositeElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFECompositeElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEConvolveMatrixElement.h b/Source/WebCore/svg/SVGFEConvolveMatrixElement.h >index e40111a053c..2181ddebdab 100644 >--- a/Source/WebCore/svg/SVGFEConvolveMatrixElement.h >+++ b/Source/WebCore/svg/SVGFEConvolveMatrixElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGFEConvolveMatrixElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEConvolveMatrixElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEConvolveMatrixElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEConvolveMatrixElement> create(const QualifiedName&, Document&); > >@@ -62,9 +64,7 @@ public: > private: > SVGFEConvolveMatrixElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEConvolveMatrixElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEDiffuseLightingElement.h b/Source/WebCore/svg/SVGFEDiffuseLightingElement.h >index 8d795990cf2..4b81b166f7d 100644 >--- a/Source/WebCore/svg/SVGFEDiffuseLightingElement.h >+++ b/Source/WebCore/svg/SVGFEDiffuseLightingElement.h >@@ -32,6 +32,8 @@ class SVGColor; > > class SVGFEDiffuseLightingElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEDiffuseLightingElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEDiffuseLightingElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEDiffuseLightingElement> create(const QualifiedName&, Document&); > void lightElementAttributeChanged(const SVGFELightElement*, const QualifiedName&); >@@ -51,9 +53,7 @@ public: > private: > SVGFEDiffuseLightingElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEDiffuseLightingElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEDisplacementMapElement.h b/Source/WebCore/svg/SVGFEDisplacementMapElement.h >index c1a70cf5f23..9de85da3400 100644 >--- a/Source/WebCore/svg/SVGFEDisplacementMapElement.h >+++ b/Source/WebCore/svg/SVGFEDisplacementMapElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGFEDisplacementMapElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEDisplacementMapElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEDisplacementMapElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEDisplacementMapElement> create(const QualifiedName&, Document&); > >@@ -47,9 +49,7 @@ public: > private: > SVGFEDisplacementMapElement(const QualifiedName& tagName, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEDisplacementMapElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEDropShadowElement.h b/Source/WebCore/svg/SVGFEDropShadowElement.h >index 061cca2bed9..60061b2e4b8 100644 >--- a/Source/WebCore/svg/SVGFEDropShadowElement.h >+++ b/Source/WebCore/svg/SVGFEDropShadowElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGFEDropShadowElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEDropShadowElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEDropShadowElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEDropShadowElement> create(const QualifiedName&, Document&); > >@@ -47,9 +49,7 @@ public: > private: > SVGFEDropShadowElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEDropShadowElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEFloodElement.h b/Source/WebCore/svg/SVGFEFloodElement.h >index b96a43aa313..70b23ed2b59 100644 >--- a/Source/WebCore/svg/SVGFEFloodElement.h >+++ b/Source/WebCore/svg/SVGFEFloodElement.h >@@ -26,17 +26,17 @@ namespace WebCore { > > class SVGFEFloodElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEFloodElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEFloodElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEFloodElement> create(const QualifiedName&, Document&); > > private: > SVGFEFloodElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEFloodElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- >- bool setFilterEffectAttribute(FilterEffect*, const QualifiedName& attrName) override; >- RefPtr<FilterEffect> build(SVGFilterBuilder*, Filter&) const override; >+ bool setFilterEffectAttribute(FilterEffect*, const QualifiedName& attrName) final; >+ RefPtr<FilterEffect> build(SVGFilterBuilder*, Filter&) const final; > > PropertyRegistry m_propertyRegistry { *this }; > }; >diff --git a/Source/WebCore/svg/SVGFEGaussianBlurElement.h b/Source/WebCore/svg/SVGFEGaussianBlurElement.h >index b2d5e83cecd..367d01a2475 100644 >--- a/Source/WebCore/svg/SVGFEGaussianBlurElement.h >+++ b/Source/WebCore/svg/SVGFEGaussianBlurElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGFEGaussianBlurElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEGaussianBlurElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEGaussianBlurElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEGaussianBlurElement> create(const QualifiedName&, Document&); > >@@ -47,9 +49,7 @@ public: > private: > SVGFEGaussianBlurElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEGaussianBlurElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEImageElement.h b/Source/WebCore/svg/SVGFEImageElement.h >index 7624990b358..17a50ea2783 100644 >--- a/Source/WebCore/svg/SVGFEImageElement.h >+++ b/Source/WebCore/svg/SVGFEImageElement.h >@@ -32,6 +32,8 @@ namespace WebCore { > > class SVGFEImageElement final : public SVGFilterPrimitiveStandardAttributes, public SVGExternalResourcesRequired, public SVGURIReference, public CachedImageClient { > WTF_MAKE_ISO_ALLOCATED(SVGFEImageElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEImageElement, SVGFilterPrimitiveStandardAttributes, SVGExternalResourcesRequired, SVGURIReference>; >+ > public: > static Ref<SVGFEImageElement> create(const QualifiedName&, Document&); > >@@ -45,9 +47,7 @@ public: > private: > SVGFEImageElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEImageElement, SVGFilterPrimitiveStandardAttributes, SVGExternalResourcesRequired, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFELightElement.h b/Source/WebCore/svg/SVGFELightElement.h >index 2534d1d7ac9..6ebdc429cb0 100644 >--- a/Source/WebCore/svg/SVGFELightElement.h >+++ b/Source/WebCore/svg/SVGFELightElement.h >@@ -31,6 +31,8 @@ class SVGFilterBuilder; > > class SVGFELightElement : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGFELightElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFELightElement, SVGElement>; >+ > public: > virtual Ref<LightSource> lightSource(SVGFilterBuilder&) const = 0; > static SVGFELightElement* findLightElement(const SVGElement*); >@@ -63,9 +65,7 @@ protected: > bool rendererIsNeeded(const RenderStyle&) override { return false; } > > private: >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFELightElement, SVGElement>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > void childrenChanged(const ChildChange&) override; >diff --git a/Source/WebCore/svg/SVGFEMergeElement.h b/Source/WebCore/svg/SVGFEMergeElement.h >index 745086816f6..abeb6c1b179 100644 >--- a/Source/WebCore/svg/SVGFEMergeElement.h >+++ b/Source/WebCore/svg/SVGFEMergeElement.h >@@ -26,15 +26,15 @@ namespace WebCore { > > class SVGFEMergeElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEMergeElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEMergeElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEMergeElement> create(const QualifiedName&, Document&); > > private: > SVGFEMergeElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEMergeElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > RefPtr<FilterEffect> build(SVGFilterBuilder*, Filter&) const override; > > PropertyRegistry m_propertyRegistry { *this }; >diff --git a/Source/WebCore/svg/SVGFEMergeNodeElement.h b/Source/WebCore/svg/SVGFEMergeNodeElement.h >index 8da92361408..b13dfe0878c 100644 >--- a/Source/WebCore/svg/SVGFEMergeNodeElement.h >+++ b/Source/WebCore/svg/SVGFEMergeNodeElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGFEMergeNodeElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGFEMergeNodeElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEMergeNodeElement, SVGElement>; >+ > public: > static Ref<SVGFEMergeNodeElement> create(const QualifiedName&, Document&); > >@@ -36,9 +38,7 @@ public: > private: > SVGFEMergeNodeElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEMergeNodeElement, SVGElement>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGFEMorphologyElement.h b/Source/WebCore/svg/SVGFEMorphologyElement.h >index 050de080ca3..6c32d2b1a9e 100644 >--- a/Source/WebCore/svg/SVGFEMorphologyElement.h >+++ b/Source/WebCore/svg/SVGFEMorphologyElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGFEMorphologyElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEMorphologyElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEMorphologyElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEMorphologyElement> create(const QualifiedName&, Document&); > >@@ -45,9 +47,7 @@ public: > private: > SVGFEMorphologyElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEMorphologyElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFEOffsetElement.h b/Source/WebCore/svg/SVGFEOffsetElement.h >index 3d8d77dbef7..1c508b2c288 100644 >--- a/Source/WebCore/svg/SVGFEOffsetElement.h >+++ b/Source/WebCore/svg/SVGFEOffsetElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGFEOffsetElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFEOffsetElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEOffsetElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFEOffsetElement> create(const QualifiedName&, Document&); > >@@ -41,9 +43,7 @@ public: > private: > SVGFEOffsetElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFEOffsetElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFESpecularLightingElement.h b/Source/WebCore/svg/SVGFESpecularLightingElement.h >index ce23cb5ae22..7a756df5e49 100644 >--- a/Source/WebCore/svg/SVGFESpecularLightingElement.h >+++ b/Source/WebCore/svg/SVGFESpecularLightingElement.h >@@ -30,6 +30,8 @@ namespace WebCore { > > class SVGFESpecularLightingElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFESpecularLightingElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFESpecularLightingElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFESpecularLightingElement> create(const QualifiedName&, Document&); > void lightElementAttributeChanged(const SVGFELightElement*, const QualifiedName&); >@@ -51,9 +53,7 @@ public: > private: > SVGFESpecularLightingElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFESpecularLightingElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFETileElement.h b/Source/WebCore/svg/SVGFETileElement.h >index adcc7a8d304..65647201912 100644 >--- a/Source/WebCore/svg/SVGFETileElement.h >+++ b/Source/WebCore/svg/SVGFETileElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGFETileElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFETileElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFETileElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > static Ref<SVGFETileElement> create(const QualifiedName&, Document&); > >@@ -36,9 +38,7 @@ public: > private: > SVGFETileElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFETileElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFETurbulenceElement.h b/Source/WebCore/svg/SVGFETurbulenceElement.h >index ec3701762df..7ca5e28bbbf 100644 >--- a/Source/WebCore/svg/SVGFETurbulenceElement.h >+++ b/Source/WebCore/svg/SVGFETurbulenceElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGFETurbulenceElement final : public SVGFilterPrimitiveStandardAttributes { > WTF_MAKE_ISO_ALLOCATED(SVGFETurbulenceElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFETurbulenceElement, SVGFilterPrimitiveStandardAttributes>; >+ > public: > // Forward declare enumerations in the W3C naming scheme, for IDL generation. > enum { >@@ -55,9 +57,7 @@ public: > private: > SVGFETurbulenceElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFETurbulenceElement, SVGFilterPrimitiveStandardAttributes>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGFilterElement.h b/Source/WebCore/svg/SVGFilterElement.h >index e1f2f5bcec5..11155e8b1c3 100644 >--- a/Source/WebCore/svg/SVGFilterElement.h >+++ b/Source/WebCore/svg/SVGFilterElement.h >@@ -32,6 +32,8 @@ namespace WebCore { > > class SVGFilterElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGFilterElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFilterElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; >+ > public: > static Ref<SVGFilterElement> create(const QualifiedName&, Document&); > >@@ -52,9 +54,7 @@ public: > private: > SVGFilterElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFilterElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > void childrenChanged(const ChildChange&) final; >diff --git a/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h b/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h >index eb25b53a94d..cb81902cd1a 100644 >--- a/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h >+++ b/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h >@@ -36,14 +36,14 @@ class SVGFilterBuilder; > class SVGFilterPrimitiveStandardAttributes : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGFilterPrimitiveStandardAttributes); > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFilterPrimitiveStandardAttributes, SVGElement>; >+ > void setStandardAttributes(FilterEffect*) const; > > virtual RefPtr<FilterEffect> build(SVGFilterBuilder*, Filter&) const = 0; > // Returns true, if the new value is different from the old one. > virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFilterPrimitiveStandardAttributes, SVGElement>; >- > const SVGLengthValue& x() const { return m_x->currentValue(); } > const SVGLengthValue& y() const { return m_y->currentValue(); } > const SVGLengthValue& width() const { return m_width->currentValue(); } >diff --git a/Source/WebCore/svg/SVGFitToViewBox.h b/Source/WebCore/svg/SVGFitToViewBox.h >index fcb69011b06..db56002c455 100644 >--- a/Source/WebCore/svg/SVGFitToViewBox.h >+++ b/Source/WebCore/svg/SVGFitToViewBox.h >@@ -36,10 +36,10 @@ class AffineTransform; > class SVGFitToViewBox { > WTF_MAKE_NONCOPYABLE(SVGFitToViewBox); > public: >- static AffineTransform viewBoxToViewTransform(const FloatRect& viewBoxRect, const SVGPreserveAspectRatioValue&, float viewWidth, float viewHeight); >- > using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFitToViewBox>; > >+ static AffineTransform viewBoxToViewTransform(const FloatRect& viewBoxRect, const SVGPreserveAspectRatioValue&, float viewWidth, float viewHeight); >+ > const FloatRect& viewBox() const { return m_viewBox->currentValue(); } > const SVGPreserveAspectRatioValue& preserveAspectRatio() const { return m_preserveAspectRatio->currentValue(); } > >diff --git a/Source/WebCore/svg/SVGFontElement.h b/Source/WebCore/svg/SVGFontElement.h >index cd1e8ea0b27..a662a0bd8ee 100644 >--- a/Source/WebCore/svg/SVGFontElement.h >+++ b/Source/WebCore/svg/SVGFontElement.h >@@ -44,16 +44,16 @@ struct SVGKerningPair { > > class SVGFontElement final : public SVGElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGFontElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFontElement, SVGElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGFontElement> create(const QualifiedName&, Document&); > > private: > SVGFontElement(const QualifiedName&, Document&); > >- bool rendererIsNeeded(const RenderStyle&) final { return false; } >- >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFontElement, SVGElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >+ bool rendererIsNeeded(const RenderStyle&) final { return false; } > > PropertyRegistry m_propertyRegistry { *this }; > }; >diff --git a/Source/WebCore/svg/SVGFontFaceElement.h b/Source/WebCore/svg/SVGFontFaceElement.h >index 8f8ba5892be..24f74eebd84 100644 >--- a/Source/WebCore/svg/SVGFontFaceElement.h >+++ b/Source/WebCore/svg/SVGFontFaceElement.h >@@ -32,6 +32,8 @@ class StyleRuleFontFace; > > class SVGFontFaceElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGFontFaceElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFontFaceElement, SVGElement>; >+ > public: > static Ref<SVGFontFaceElement> create(const QualifiedName&, Document&); > >@@ -57,6 +59,7 @@ private: > SVGFontFaceElement(const QualifiedName&, Document&); > ~SVGFontFaceElement(); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > void parseAttribute(const QualifiedName&, const AtomicString&) final; > > void childrenChanged(const ChildChange&) final; >@@ -65,6 +68,7 @@ private: > > bool rendererIsNeeded(const RenderStyle&) final { return false; } > >+ PropertyRegistry m_propertyRegistry { *this }; > Ref<StyleRuleFontFace> m_fontFaceRule; > SVGFontElement* m_fontElement; > }; >diff --git a/Source/WebCore/svg/SVGFontFaceFormatElement.h b/Source/WebCore/svg/SVGFontFaceFormatElement.h >index 056075ee9ab..235e0c8f83a 100644 >--- a/Source/WebCore/svg/SVGFontFaceFormatElement.h >+++ b/Source/WebCore/svg/SVGFontFaceFormatElement.h >@@ -27,14 +27,19 @@ namespace WebCore { > > class SVGFontFaceFormatElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGFontFaceFormatElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFontFaceFormatElement, SVGElement>; >+ > public: > static Ref<SVGFontFaceFormatElement> create(const QualifiedName&, Document&); > > private: > SVGFontFaceFormatElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > void childrenChanged(const ChildChange&) final; > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGFontFaceNameElement.h b/Source/WebCore/svg/SVGFontFaceNameElement.h >index 867cdc85f6e..42b20f6d658 100644 >--- a/Source/WebCore/svg/SVGFontFaceNameElement.h >+++ b/Source/WebCore/svg/SVGFontFaceNameElement.h >@@ -29,6 +29,8 @@ class CSSFontFaceSrcValue; > > class SVGFontFaceNameElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGFontFaceNameElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFontFaceNameElement, SVGElement>; >+ > public: > static Ref<SVGFontFaceNameElement> create(const QualifiedName&, Document&); > >@@ -37,7 +39,10 @@ public: > private: > SVGFontFaceNameElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGFontFaceSrcElement.h b/Source/WebCore/svg/SVGFontFaceSrcElement.h >index 416968c61f5..7befa862c59 100644 >--- a/Source/WebCore/svg/SVGFontFaceSrcElement.h >+++ b/Source/WebCore/svg/SVGFontFaceSrcElement.h >@@ -29,6 +29,8 @@ class CSSValueList; > > class SVGFontFaceSrcElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGFontFaceSrcElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFontFaceSrcElement, SVGElement>; >+ > public: > static Ref<SVGFontFaceSrcElement> create(const QualifiedName&, Document&); > >@@ -37,8 +39,11 @@ public: > private: > SVGFontFaceSrcElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > void childrenChanged(const ChildChange&) final; > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGFontFaceUriElement.h b/Source/WebCore/svg/SVGFontFaceUriElement.h >index c78a2bca97f..d7c90db84cd 100644 >--- a/Source/WebCore/svg/SVGFontFaceUriElement.h >+++ b/Source/WebCore/svg/SVGFontFaceUriElement.h >@@ -31,6 +31,8 @@ class CSSFontFaceSrcValue; > > class SVGFontFaceUriElement final : public SVGElement, public CachedFontClient { > WTF_MAKE_ISO_ALLOCATED(SVGFontFaceUriElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGFontFaceUriElement, SVGElement>; >+ > public: > static Ref<SVGFontFaceUriElement> create(const QualifiedName&, Document&); > >@@ -40,14 +42,17 @@ public: > > private: > SVGFontFaceUriElement(const QualifiedName&, Document&); >- >+ >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void childrenChanged(const ChildChange&) final; >+ > InsertedIntoAncestorResult insertedIntoAncestor(InsertionType, ContainerNode&) final; > bool rendererIsNeeded(const RenderStyle&) final { return false; } > > void loadFont(); > >+ PropertyRegistry m_propertyRegistry { *this }; > CachedResourceHandle<CachedFont> m_cachedFont; > }; > >diff --git a/Source/WebCore/svg/SVGForeignObjectElement.h b/Source/WebCore/svg/SVGForeignObjectElement.h >index fb57468a06f..0ac851dd69f 100644 >--- a/Source/WebCore/svg/SVGForeignObjectElement.h >+++ b/Source/WebCore/svg/SVGForeignObjectElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGForeignObjectElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGForeignObjectElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGForeignObjectElement, SVGGraphicsElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGForeignObjectElement> create(const QualifiedName&, Document&); > >@@ -44,9 +46,7 @@ public: > private: > SVGForeignObjectElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGForeignObjectElement, SVGGraphicsElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGGElement.h b/Source/WebCore/svg/SVGGElement.h >index cb206ae34ad..adaebbed153 100644 >--- a/Source/WebCore/svg/SVGGElement.h >+++ b/Source/WebCore/svg/SVGGElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGGElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGGElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGElement, SVGGraphicsElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGGElement> create(const QualifiedName&, Document&); > static Ref<SVGGElement> create(Document&); >@@ -37,9 +39,7 @@ private: > > RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) final; > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGElement, SVGGraphicsElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGGeometryElement.h b/Source/WebCore/svg/SVGGeometryElement.h >index d24e622d1e0..3cf247d7dec 100644 >--- a/Source/WebCore/svg/SVGGeometryElement.h >+++ b/Source/WebCore/svg/SVGGeometryElement.h >@@ -33,15 +33,16 @@ class SVGPoint; > > class SVGGeometryElement : public SVGGraphicsElement { > WTF_MAKE_ISO_ALLOCATED(SVGGeometryElement); >+ > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGeometryElement, SVGGraphicsElement>; >+ > virtual float getTotalLength() const; > virtual Ref<SVGPoint> getPointAtLength(float distance) const; > > bool isPointInFill(DOMPointInit&&); > bool isPointInStroke(DOMPointInit&&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGeometryElement, SVGGraphicsElement>; >- > float pathLength() const { return m_pathLength->currentValue(); } > SVGAnimatedNumber& pathLengthAnimated() { return m_pathLength; } > >diff --git a/Source/WebCore/svg/SVGGlyphElement.h b/Source/WebCore/svg/SVGGlyphElement.h >index 9ff991e720c..90c693895fd 100644 >--- a/Source/WebCore/svg/SVGGlyphElement.h >+++ b/Source/WebCore/svg/SVGGlyphElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGGlyphElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGGlyphElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGlyphElement, SVGElement>; >+ > public: > static Ref<SVGGlyphElement> create(const QualifiedName&, Document&); > >@@ -38,7 +40,10 @@ public: > private: > SVGGlyphElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGGlyphRefElement.h b/Source/WebCore/svg/SVGGlyphRefElement.h >index be046ee7362..592b8cfab83 100644 >--- a/Source/WebCore/svg/SVGGlyphRefElement.h >+++ b/Source/WebCore/svg/SVGGlyphRefElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGGlyphRefElement final : public SVGElement, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGGlyphRefElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGlyphRefElement, SVGElement, SVGURIReference>; >+ > public: > static Ref<SVGGlyphRefElement> create(const QualifiedName&, Document&); > >@@ -46,9 +48,7 @@ public: > private: > SVGGlyphRefElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGlyphRefElement, SVGElement, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > bool rendererIsNeeded(const RenderStyle&) final { return false; } > >diff --git a/Source/WebCore/svg/SVGGradientElement.h b/Source/WebCore/svg/SVGGradientElement.h >index 2613e886375..0b6c7d5f2dd 100644 >--- a/Source/WebCore/svg/SVGGradientElement.h >+++ b/Source/WebCore/svg/SVGGradientElement.h >@@ -32,7 +32,10 @@ namespace WebCore { > > class SVGGradientElement : public SVGElement, public SVGExternalResourcesRequired, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGGradientElement); >+ > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGradientElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; >+ > enum { > SVG_SPREADMETHOD_UNKNOWN = SVGSpreadMethodUnknown, > SVG_SPREADMETHOD_PAD = SVGSpreadMethodReflect, >@@ -42,8 +45,6 @@ public: > > Vector<Gradient::ColorStop> buildStops(); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGradientElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; >- > SVGSpreadMethodType spreadMethod() const { return m_spreadMethod->currentValue<SVGSpreadMethodType>(); } > SVGUnitTypes::SVGUnitType gradientUnits() const { return m_gradientUnits->currentValue<SVGUnitTypes::SVGUnitType>(); } > const SVGTransformList& gradientTransform() const { return m_gradientTransform->currentValue(); } >diff --git a/Source/WebCore/svg/SVGGraphicsElement.h b/Source/WebCore/svg/SVGGraphicsElement.h >index d516e59b385..7ec44f1bc3f 100644 >--- a/Source/WebCore/svg/SVGGraphicsElement.h >+++ b/Source/WebCore/svg/SVGGraphicsElement.h >@@ -34,7 +34,10 @@ class SVGMatrix; > > class SVGGraphicsElement : public SVGElement, public SVGTransformable, public SVGTests { > WTF_MAKE_ISO_ALLOCATED(SVGGraphicsElement); >+ > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGraphicsElement, SVGElement, SVGTests>; >+ > virtual ~SVGGraphicsElement(); > > Ref<SVGMatrix> getCTMForBindings(); >@@ -62,8 +65,6 @@ public: > > size_t approximateMemoryCost() const override { return sizeof(*this); } > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGGraphicsElement, SVGElement, SVGTests>; >- > const SVGTransformList& transform() const { return m_transform->currentValue(); } > SVGAnimatedTransformList& transformAnimated() { return m_transform; } > >diff --git a/Source/WebCore/svg/SVGHKernElement.h b/Source/WebCore/svg/SVGHKernElement.h >index 747b0327d69..f2935f00d20 100644 >--- a/Source/WebCore/svg/SVGHKernElement.h >+++ b/Source/WebCore/svg/SVGHKernElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGHKernElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGHKernElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGHKernElement, SVGElement>; >+ > public: > static Ref<SVGHKernElement> create(const QualifiedName&, Document&); > >@@ -37,7 +39,10 @@ public: > private: > SVGHKernElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGImageElement.h b/Source/WebCore/svg/SVGImageElement.h >index dcd7a0826ad..d31f032db9c 100644 >--- a/Source/WebCore/svg/SVGImageElement.h >+++ b/Source/WebCore/svg/SVGImageElement.h >@@ -30,6 +30,8 @@ namespace WebCore { > > class SVGImageElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGImageElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGImageElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGURIReference>; >+ > public: > static Ref<SVGImageElement> create(const QualifiedName&, Document&); > >@@ -51,9 +53,7 @@ public: > private: > SVGImageElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGImageElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGLineElement.h b/Source/WebCore/svg/SVGLineElement.h >index dd029a3d5be..e1fbea9e250 100644 >--- a/Source/WebCore/svg/SVGLineElement.h >+++ b/Source/WebCore/svg/SVGLineElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGLineElement final : public SVGGeometryElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGLineElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGLineElement, SVGGeometryElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGLineElement> create(const QualifiedName&, Document&); > >@@ -45,9 +47,7 @@ public: > private: > SVGLineElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGLineElement, SVGGeometryElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGLinearGradientElement.h b/Source/WebCore/svg/SVGLinearGradientElement.h >index 04a31dd47c0..8ad1ea9d249 100644 >--- a/Source/WebCore/svg/SVGLinearGradientElement.h >+++ b/Source/WebCore/svg/SVGLinearGradientElement.h >@@ -30,6 +30,8 @@ struct LinearGradientAttributes; > > class SVGLinearGradientElement final : public SVGGradientElement { > WTF_MAKE_ISO_ALLOCATED(SVGLinearGradientElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGLinearGradientElement, SVGGradientElement>; >+ > public: > static Ref<SVGLinearGradientElement> create(const QualifiedName&, Document&); > >@@ -48,9 +50,7 @@ public: > private: > SVGLinearGradientElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGLinearGradientElement, SVGGradientElement>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGMPathElement.h b/Source/WebCore/svg/SVGMPathElement.h >index d65903ceb83..670e64d9abc 100644 >--- a/Source/WebCore/svg/SVGMPathElement.h >+++ b/Source/WebCore/svg/SVGMPathElement.h >@@ -31,6 +31,8 @@ class SVGPathElement; > > class SVGMPathElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGMPathElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMPathElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; >+ > public: > static Ref<SVGMPathElement> create(const QualifiedName&, Document&); > >@@ -43,9 +45,7 @@ public: > private: > SVGMPathElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMPathElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGMarkerElement.h b/Source/WebCore/svg/SVGMarkerElement.h >index f034584403b..a63bc5350bf 100644 >--- a/Source/WebCore/svg/SVGMarkerElement.h >+++ b/Source/WebCore/svg/SVGMarkerElement.h >@@ -30,6 +30,8 @@ namespace WebCore { > > class SVGMarkerElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGFitToViewBox { > WTF_MAKE_ISO_ALLOCATED(SVGMarkerElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMarkerElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox>; >+ > public: > // Forward declare enumerations in the W3C naming scheme, for IDL generation. > enum { >@@ -71,9 +73,7 @@ public: > private: > SVGMarkerElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMarkerElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > void childrenChanged(const ChildChange&) override; >diff --git a/Source/WebCore/svg/SVGMaskElement.h b/Source/WebCore/svg/SVGMaskElement.h >index c5e358dffba..c3162f38544 100644 >--- a/Source/WebCore/svg/SVGMaskElement.h >+++ b/Source/WebCore/svg/SVGMaskElement.h >@@ -30,6 +30,8 @@ namespace WebCore { > > class SVGMaskElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGTests { > WTF_MAKE_ISO_ALLOCATED(SVGMaskElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMaskElement, SVGElement, SVGExternalResourcesRequired, SVGTests>; >+ > public: > static Ref<SVGMaskElement> create(const QualifiedName&, Document&); > >@@ -50,9 +52,7 @@ public: > private: > SVGMaskElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMaskElement, SVGElement, SVGExternalResourcesRequired, SVGTests>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > void childrenChanged(const ChildChange&) final; >diff --git a/Source/WebCore/svg/SVGMetadataElement.h b/Source/WebCore/svg/SVGMetadataElement.h >index 6b04112b7fa..db9be7801f3 100644 >--- a/Source/WebCore/svg/SVGMetadataElement.h >+++ b/Source/WebCore/svg/SVGMetadataElement.h >@@ -26,13 +26,18 @@ namespace WebCore { > > class SVGMetadataElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGMetadataElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMetadataElement, SVGElement>; >+ > public: > static Ref<SVGMetadataElement> create(const QualifiedName&, Document&); > > private: > SVGMetadataElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGMissingGlyphElement.h b/Source/WebCore/svg/SVGMissingGlyphElement.h >index 44b3746a827..449d41447d4 100644 >--- a/Source/WebCore/svg/SVGMissingGlyphElement.h >+++ b/Source/WebCore/svg/SVGMissingGlyphElement.h >@@ -28,13 +28,18 @@ namespace WebCore { > > class SVGMissingGlyphElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGMissingGlyphElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGMissingGlyphElement, SVGElement>; >+ > public: > static Ref<SVGMissingGlyphElement> create(const QualifiedName&, Document&); > > private: > SVGMissingGlyphElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGPathElement.cpp b/Source/WebCore/svg/SVGPathElement.cpp >index 07fc2a9a33f..c21f0b01098 100644 >--- a/Source/WebCore/svg/SVGPathElement.cpp >+++ b/Source/WebCore/svg/SVGPathElement.cpp >@@ -109,23 +109,17 @@ void SVGPathElement::removedFromAncestor(RemovalType removalType, ContainerNode& > > float SVGPathElement::getTotalLength() const > { >- float totalLength = 0; >- getTotalLengthOfSVGPathByteStream(pathByteStream(), totalLength); >- return totalLength; >+ return totalLengthOfSVGPathByteStream(pathByteStream()).valueOr(0); > } > > Ref<SVGPoint> SVGPathElement::getPointAtLength(float length) const > { >- FloatPoint point; >- getPointAtLengthOfSVGPathByteStream(pathByteStream(), length, point); >- return SVGPoint::create(point); >+ return SVGPoint::create(pointAtLengthOfSVGPathByteStream(pathByteStream(), length).valueOr(FloatPoint())); > } > > unsigned SVGPathElement::getPathSegAtLength(float length) const > { >- unsigned pathSeg = 0; >- getSVGPathSegAtLengthFromSVGPathByteStream(pathByteStream(), length, pathSeg); >- return pathSeg; >+ return pathSegAtLengthFromSVGPathByteStream(pathByteStream(), length).valueOr(0); > } > > FloatRect SVGPathElement::getBBox(StyleUpdateStrategy styleUpdateStrategy) >diff --git a/Source/WebCore/svg/SVGPathElement.h b/Source/WebCore/svg/SVGPathElement.h >index 6774d0698aa..f2508cae90d 100644 >--- a/Source/WebCore/svg/SVGPathElement.h >+++ b/Source/WebCore/svg/SVGPathElement.h >@@ -35,6 +35,8 @@ class SVGPoint; > > class SVGPathElement final : public SVGGeometryElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGPathElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGPathElement, SVGGeometryElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGPathElement> create(const QualifiedName&, Document&); > >@@ -108,9 +110,7 @@ public: > private: > SVGPathElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGPathElement, SVGGeometryElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGPathUtilities.cpp b/Source/WebCore/svg/SVGPathUtilities.cpp >index db8f929ad19..5d426eedb02 100644 >--- a/Source/WebCore/svg/SVGPathUtilities.cpp >+++ b/Source/WebCore/svg/SVGPathUtilities.cpp >@@ -193,48 +193,49 @@ bool addToSVGPathByteStream(SVGPathByteStream& streamToAppendTo, const SVGPathBy > return SVGPathBlender::addAnimatedPath(fromSource, bySource, builder, repeatCount); > } > >-bool getSVGPathSegAtLengthFromSVGPathByteStream(const SVGPathByteStream& stream, float length, unsigned& pathSeg) >+Optional<unsigned> pathSegAtLengthFromSVGPathByteStream(const SVGPathByteStream& stream, float length) > { > if (stream.isEmpty()) >- return false; >+ return WTF::nullopt; > > PathTraversalState traversalState(PathTraversalState::Action::SegmentAtLength); > SVGPathTraversalStateBuilder builder(traversalState, length); > > SVGPathByteStreamSource source(stream); >- bool ok = SVGPathParser::parse(source, builder); >- pathSeg = builder.pathSegmentIndex(); >- return ok; >+ if (!SVGPathParser::parse(source, builder)) >+ return WTF::nullopt; >+ >+ return builder.pathSegmentIndex(); > } > >-bool getTotalLengthOfSVGPathByteStream(const SVGPathByteStream& stream, float& totalLength) >+Optional<float> totalLengthOfSVGPathByteStream(const SVGPathByteStream& stream) > { > if (stream.isEmpty()) >- return false; >+ return WTF::nullopt; > > PathTraversalState traversalState(PathTraversalState::Action::TotalLength); >- > SVGPathTraversalStateBuilder builder(traversalState); > > SVGPathByteStreamSource source(stream); >- bool ok = SVGPathParser::parse(source, builder); >- totalLength = builder.totalLength(); >- return ok; >+ if (!SVGPathParser::parse(source, builder)) >+ return WTF::nullopt; >+ >+ return builder.totalLength(); > } > >-bool getPointAtLengthOfSVGPathByteStream(const SVGPathByteStream& stream, float length, FloatPoint& point) >+Optional<FloatPoint> pointAtLengthOfSVGPathByteStream(const SVGPathByteStream& stream, float length) > { > if (stream.isEmpty()) >- return false; >+ return WTF::nullopt; > > PathTraversalState traversalState(PathTraversalState::Action::VectorAtLength); >- > SVGPathTraversalStateBuilder builder(traversalState, length); > > SVGPathByteStreamSource source(stream); >- bool ok = SVGPathParser::parse(source, builder); >- point = builder.currentPoint(); >- return ok; >+ if (!SVGPathParser::parse(source, builder)) >+ return WTF::nullopt; >+ >+ return builder.currentPoint(); > } > > } >diff --git a/Source/WebCore/svg/SVGPathUtilities.h b/Source/WebCore/svg/SVGPathUtilities.h >index 490ff7c660c..11bb53df51b 100644 >--- a/Source/WebCore/svg/SVGPathUtilities.h >+++ b/Source/WebCore/svg/SVGPathUtilities.h >@@ -53,8 +53,8 @@ bool canBlendSVGPathByteStreams(const SVGPathByteStream& from, const SVGPathByte > bool buildAnimatedSVGPathByteStream(const SVGPathByteStream& from, const SVGPathByteStream& to, SVGPathByteStream& result, float progress); > bool addToSVGPathByteStream(SVGPathByteStream& streamToAppendTo, const SVGPathByteStream& from, unsigned repeatCount = 1); > >-bool getSVGPathSegAtLengthFromSVGPathByteStream(const SVGPathByteStream&, float length, unsigned& pathSeg); >-bool getTotalLengthOfSVGPathByteStream(const SVGPathByteStream&, float& totalLength); >-bool getPointAtLengthOfSVGPathByteStream(const SVGPathByteStream&, float length, FloatPoint&); >+Optional<unsigned> pathSegAtLengthFromSVGPathByteStream(const SVGPathByteStream&, float length); >+Optional<float> totalLengthOfSVGPathByteStream(const SVGPathByteStream&); >+Optional<FloatPoint> pointAtLengthOfSVGPathByteStream(const SVGPathByteStream&, float length); > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGPatternElement.h b/Source/WebCore/svg/SVGPatternElement.h >index 36cdefb0b76..e92d3151c94 100644 >--- a/Source/WebCore/svg/SVGPatternElement.h >+++ b/Source/WebCore/svg/SVGPatternElement.h >@@ -35,6 +35,8 @@ struct PatternAttributes; > > class SVGPatternElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGFitToViewBox, public SVGTests, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGPatternElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGPatternElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGTests, SVGURIReference>; >+ > public: > static Ref<SVGPatternElement> create(const QualifiedName&, Document&); > >@@ -61,9 +63,7 @@ public: > private: > SVGPatternElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGPatternElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGTests, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > void childrenChanged(const ChildChange&) final; >diff --git a/Source/WebCore/svg/SVGPolyElement.h b/Source/WebCore/svg/SVGPolyElement.h >index 67224903ef6..f226819c05b 100644 >--- a/Source/WebCore/svg/SVGPolyElement.h >+++ b/Source/WebCore/svg/SVGPolyElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGPolyElement : public SVGGeometryElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGPolyElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGPolyElement, SVGGeometryElement, SVGExternalResourcesRequired>; >+ > public: > const SVGPointList& points() const { return m_points->currentValue(); } > >@@ -41,9 +43,7 @@ protected: > SVGPolyElement(const QualifiedName&, Document&); > > private: >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGPolyElement, SVGGeometryElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGRadialGradientElement.h b/Source/WebCore/svg/SVGRadialGradientElement.h >index b88a35a4328..51bb84cd6f0 100644 >--- a/Source/WebCore/svg/SVGRadialGradientElement.h >+++ b/Source/WebCore/svg/SVGRadialGradientElement.h >@@ -30,6 +30,8 @@ struct RadialGradientAttributes; > > class SVGRadialGradientElement final : public SVGGradientElement { > WTF_MAKE_ISO_ALLOCATED(SVGRadialGradientElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGRadialGradientElement, SVGGradientElement>; >+ > public: > static Ref<SVGRadialGradientElement> create(const QualifiedName&, Document&); > >@@ -52,9 +54,7 @@ public: > private: > SVGRadialGradientElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGRadialGradientElement, SVGGradientElement>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGRectElement.h b/Source/WebCore/svg/SVGRectElement.h >index c392e1e2e5c..80460829817 100644 >--- a/Source/WebCore/svg/SVGRectElement.h >+++ b/Source/WebCore/svg/SVGRectElement.h >@@ -29,6 +29,8 @@ namespace WebCore { > > class SVGRectElement final : public SVGGeometryElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGRectElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGRectElement, SVGGeometryElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGRectElement> create(const QualifiedName&, Document&); > >@@ -49,9 +51,7 @@ public: > private: > SVGRectElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGRectElement, SVGGeometryElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGSVGElement.h b/Source/WebCore/svg/SVGSVGElement.h >index 960f85ada0a..69982d4abc9 100644 >--- a/Source/WebCore/svg/SVGSVGElement.h >+++ b/Source/WebCore/svg/SVGSVGElement.h >@@ -40,6 +40,8 @@ class SVGViewSpec; > > class SVGSVGElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired, public SVGFitToViewBox, public SVGZoomAndPan { > WTF_MAKE_ISO_ALLOCATED(SVGSVGElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGSVGElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGFitToViewBox>; >+ > public: // DOM > const AtomicString& contentScriptType() const; > void setContentScriptType(const AtomicString&); >@@ -131,11 +133,10 @@ private: > SVGSVGElement(const QualifiedName&, Document&); > virtual ~SVGSVGElement(); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGSVGElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGFitToViewBox>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; >+ > bool selfHasRelativeLengths() const override; > bool isValid() const override; > >diff --git a/Source/WebCore/svg/SVGScriptElement.h b/Source/WebCore/svg/SVGScriptElement.h >index f15f3b7cf6f..0a26ea83c58 100644 >--- a/Source/WebCore/svg/SVGScriptElement.h >+++ b/Source/WebCore/svg/SVGScriptElement.h >@@ -31,6 +31,8 @@ namespace WebCore { > > class SVGScriptElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGURIReference, public ScriptElement { > WTF_MAKE_ISO_ALLOCATED(SVGScriptElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGScriptElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; >+ > public: > static Ref<SVGScriptElement> create(const QualifiedName&, Document&, bool wasInsertedByParser); > >@@ -40,9 +42,7 @@ public: > private: > SVGScriptElement(const QualifiedName&, Document&, bool wasInsertedByParser, bool alreadyStarted); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGScriptElement, SVGElement, SVGExternalResourcesRequired, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGStopElement.h b/Source/WebCore/svg/SVGStopElement.h >index 8104fbbd7f6..b8c4c06c437 100644 >--- a/Source/WebCore/svg/SVGStopElement.h >+++ b/Source/WebCore/svg/SVGStopElement.h >@@ -27,6 +27,8 @@ namespace WebCore { > > class SVGStopElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGStopElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGStopElement, SVGElement>; >+ > public: > static Ref<SVGStopElement> create(const QualifiedName&, Document&); > >@@ -38,9 +40,7 @@ public: > private: > SVGStopElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGStopElement, SVGElement>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) final; > void svgAttributeChanged(const QualifiedName&) final; > >diff --git a/Source/WebCore/svg/SVGStyleElement.h b/Source/WebCore/svg/SVGStyleElement.h >index 41a937ed19e..c180e0c5ef8 100644 >--- a/Source/WebCore/svg/SVGStyleElement.h >+++ b/Source/WebCore/svg/SVGStyleElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGStyleElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGStyleElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGStyleElement, SVGElement>; >+ > public: > static Ref<SVGStyleElement> create(const QualifiedName&, Document&, bool createdByParser); > virtual ~SVGStyleElement(); >@@ -46,6 +48,7 @@ public: > private: > SVGStyleElement(const QualifiedName&, Document&, bool createdByParser); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > void parseAttribute(const QualifiedName&, const AtomicString&) final; > InsertedIntoAncestorResult insertedIntoAncestor(InsertionType, ContainerNode&) final; > void removedFromAncestor(RemovalType, ContainerNode&) final; >@@ -62,6 +65,7 @@ private: > > String title() const final; > >+ PropertyRegistry m_propertyRegistry { *this }; > InlineStyleSheetOwner m_styleSheetOwner; > Timer m_svgLoadEventTimer; > }; >diff --git a/Source/WebCore/svg/SVGSwitchElement.h b/Source/WebCore/svg/SVGSwitchElement.h >index 3d14a4faffa..8df1d2d0c9b 100644 >--- a/Source/WebCore/svg/SVGSwitchElement.h >+++ b/Source/WebCore/svg/SVGSwitchElement.h >@@ -28,13 +28,14 @@ namespace WebCore { > > class SVGSwitchElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGSwitchElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGSwitchElement, SVGGraphicsElement, SVGExternalResourcesRequired>; >+ > public: > static Ref<SVGSwitchElement> create(const QualifiedName&, Document&); > > private: > SVGSwitchElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGSwitchElement, SVGGraphicsElement, SVGExternalResourcesRequired>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > > bool isValid() const final { return SVGTests::isValid(); } >diff --git a/Source/WebCore/svg/SVGSymbolElement.h b/Source/WebCore/svg/SVGSymbolElement.h >index 8c4afdedc9c..e21d50752d0 100644 >--- a/Source/WebCore/svg/SVGSymbolElement.h >+++ b/Source/WebCore/svg/SVGSymbolElement.h >@@ -29,17 +29,18 @@ namespace WebCore { > > class SVGSymbolElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGFitToViewBox { > WTF_MAKE_ISO_ALLOCATED(SVGSymbolElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGSymbolElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox>; >+ > public: > static Ref<SVGSymbolElement> create(const QualifiedName&, Document&); > > private: > SVGSymbolElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGSymbolElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; >+ > RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) override; > > bool selfHasRelativeLengths() const override; >diff --git a/Source/WebCore/svg/SVGTRefElement.h b/Source/WebCore/svg/SVGTRefElement.h >index 8e816f5469b..90d0bd229fe 100644 >--- a/Source/WebCore/svg/SVGTRefElement.h >+++ b/Source/WebCore/svg/SVGTRefElement.h >@@ -30,6 +30,8 @@ class SVGTRefTargetEventListener; > > class SVGTRefElement final : public SVGTextPositioningElement, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGTRefElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTRefElement, SVGTextPositioningElement, SVGURIReference>; >+ > public: > static Ref<SVGTRefElement> create(const QualifiedName&, Document&); > >@@ -39,9 +41,7 @@ private: > SVGTRefElement(const QualifiedName&, Document&); > virtual ~SVGTRefElement(); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTRefElement, SVGTextPositioningElement, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGTSpanElement.h b/Source/WebCore/svg/SVGTSpanElement.h >index 5b22ea02c8a..ea3c1f11cc1 100644 >--- a/Source/WebCore/svg/SVGTSpanElement.h >+++ b/Source/WebCore/svg/SVGTSpanElement.h >@@ -26,15 +26,20 @@ namespace WebCore { > > class SVGTSpanElement final : public SVGTextPositioningElement { > WTF_MAKE_ISO_ALLOCATED(SVGTSpanElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTSpanElement, SVGTextPositioningElement>; >+ > public: > static Ref<SVGTSpanElement> create(const QualifiedName&, Document&); > > private: > SVGTSpanElement(const QualifiedName&, Document&); >- >+ >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) override; > bool childShouldCreateRenderer(const Node&) const override; > bool rendererIsNeeded(const RenderStyle&) override; >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGTests.h b/Source/WebCore/svg/SVGTests.h >index 449270d9f9d..55bad76d26f 100644 >--- a/Source/WebCore/svg/SVGTests.h >+++ b/Source/WebCore/svg/SVGTests.h >@@ -35,11 +35,11 @@ class SVGPropertyOwnerRegistry; > class SVGTests { > WTF_MAKE_NONCOPYABLE(SVGTests); > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTests>; >+ > static bool hasExtension(const String&); > bool isValid() const; > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTests>; >- > void parseAttribute(const QualifiedName&, const AtomicString&); > void svgAttributeChanged(const QualifiedName&); > >diff --git a/Source/WebCore/svg/SVGTextContentElement.h b/Source/WebCore/svg/SVGTextContentElement.h >index 411977970b3..8066c4be4e7 100644 >--- a/Source/WebCore/svg/SVGTextContentElement.h >+++ b/Source/WebCore/svg/SVGTextContentElement.h >@@ -31,6 +31,8 @@ struct DOMPointInit; > class SVGTextContentElement : public SVGGraphicsElement, public SVGExternalResourcesRequired { > WTF_MAKE_ISO_ALLOCATED(SVGTextContentElement); > public: >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTextContentElement, SVGGraphicsElement, SVGExternalResourcesRequired>; >+ > enum { > LENGTHADJUST_UNKNOWN = SVGLengthAdjustUnknown, > LENGTHADJUST_SPACING = SVGLengthAdjustSpacing, >@@ -49,8 +51,6 @@ public: > > static SVGTextContentElement* elementFromRenderer(RenderObject*); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTextContentElement, SVGGraphicsElement, SVGExternalResourcesRequired>; >- > const SVGLengthValue& specifiedTextLength() const { return m_specifiedTextLength; } > const SVGLengthValue& textLength() const { return m_textLength->currentValue(); } > SVGLengthAdjustType lengthAdjust() const { return m_lengthAdjust->currentValue<SVGLengthAdjustType>(); } >diff --git a/Source/WebCore/svg/SVGTextElement.h b/Source/WebCore/svg/SVGTextElement.h >index aa9445d92b6..8354ca993a0 100644 >--- a/Source/WebCore/svg/SVGTextElement.h >+++ b/Source/WebCore/svg/SVGTextElement.h >@@ -26,6 +26,8 @@ namespace WebCore { > > class SVGTextElement final : public SVGTextPositioningElement { > WTF_MAKE_ISO_ALLOCATED(SVGTextElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTextElement, SVGTextPositioningElement>; >+ > public: > static Ref<SVGTextElement> create(const QualifiedName&, Document&); > >@@ -34,8 +36,11 @@ public: > private: > SVGTextElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > RenderPtr<RenderElement> createElementRenderer(RenderStyle&&, const RenderTreePosition&) override; > bool childShouldCreateRenderer(const Node&) const override; >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGTextPathElement.h b/Source/WebCore/svg/SVGTextPathElement.h >index 8f295d70e54..805f5bcb021 100644 >--- a/Source/WebCore/svg/SVGTextPathElement.h >+++ b/Source/WebCore/svg/SVGTextPathElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGTextPathElement final : public SVGTextContentElement, public SVGURIReference { > WTF_MAKE_ISO_ALLOCATED(SVGTextPathElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTextPathElement, SVGTextContentElement, SVGURIReference>; >+ > public: > // Forward declare enumerations in the W3C naming scheme, for IDL generation. > enum { >@@ -56,9 +58,7 @@ private: > SVGTextPathElement(const QualifiedName&, Document&); > virtual ~SVGTextPathElement(); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTextPathElement, SVGTextContentElement, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGTextPositioningElement.h b/Source/WebCore/svg/SVGTextPositioningElement.h >index a4862ec4762..61c7db16214 100644 >--- a/Source/WebCore/svg/SVGTextPositioningElement.h >+++ b/Source/WebCore/svg/SVGTextPositioningElement.h >@@ -27,11 +27,12 @@ namespace WebCore { > > class SVGTextPositioningElement : public SVGTextContentElement { > WTF_MAKE_ISO_ALLOCATED(SVGTextPositioningElement); >-public: >- static SVGTextPositioningElement* elementFromRenderer(RenderBoxModelObject&); > >+public: > using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTextPositioningElement, SVGTextContentElement>; > >+ static SVGTextPositioningElement* elementFromRenderer(RenderBoxModelObject&); >+ > const SVGLengthList& x() const { return m_x->currentValue(); } > const SVGLengthList& y() const { return m_y->currentValue(); } > const SVGLengthList& dx() const { return m_dx->currentValue(); } >@@ -54,9 +55,6 @@ private: > bool isPresentationAttribute(const QualifiedName&) const final; > void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStyleProperties&) final; > >- const SVGPropertyRegistry& propertyRegistry() const override { return m_propertyRegistry; } >- >- PropertyRegistry m_propertyRegistry { *this }; > Ref<SVGAnimatedLengthList> m_x { SVGAnimatedLengthList::create(this, LengthModeWidth) }; > Ref<SVGAnimatedLengthList> m_y { SVGAnimatedLengthList::create(this, LengthModeHeight) }; > Ref<SVGAnimatedLengthList> m_dx { SVGAnimatedLengthList::create(this, LengthModeWidth) }; >diff --git a/Source/WebCore/svg/SVGTitleElement.h b/Source/WebCore/svg/SVGTitleElement.h >index 3f533356707..9afe40694ca 100644 >--- a/Source/WebCore/svg/SVGTitleElement.h >+++ b/Source/WebCore/svg/SVGTitleElement.h >@@ -27,17 +27,22 @@ namespace WebCore { > > class SVGTitleElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGTitleElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGTitleElement, SVGElement>; >+ > public: > static Ref<SVGTitleElement> create(const QualifiedName&, Document&); > > private: > SVGTitleElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >+ bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ > InsertedIntoAncestorResult insertedIntoAncestor(InsertionType, ContainerNode&) final; > void removedFromAncestor(RemovalType, ContainerNode&) final; > void childrenChanged(const ChildChange&) final; > >- bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGURIReference.h b/Source/WebCore/svg/SVGURIReference.h >index 201b6c71bed..0f98840da27 100644 >--- a/Source/WebCore/svg/SVGURIReference.h >+++ b/Source/WebCore/svg/SVGURIReference.h >@@ -32,7 +32,7 @@ class SVGElement; > class SVGURIReference { > WTF_MAKE_NONCOPYABLE(SVGURIReference); > public: >- virtual ~SVGURIReference() = default; >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGURIReference>; > > void parseAttribute(const QualifiedName&, const AtomicString&); > >@@ -56,13 +56,12 @@ public: > return !equalIgnoringFragmentIdentifier(url, document.url()); > } > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGURIReference>; >- > String href() const { return m_href->currentValue(); } > SVGAnimatedString& hrefAnimated() { return m_href; } > > protected: > SVGURIReference(SVGElement* contextElement); >+ virtual ~SVGURIReference() = default; > > static bool isKnownAttribute(const QualifiedName& attributeName); > >diff --git a/Source/WebCore/svg/SVGUnknownElement.h b/Source/WebCore/svg/SVGUnknownElement.h >index a15c7af9787..964452cc80a 100644 >--- a/Source/WebCore/svg/SVGUnknownElement.h >+++ b/Source/WebCore/svg/SVGUnknownElement.h >@@ -37,6 +37,8 @@ namespace WebCore { > // false to make sure we don't attempt to render such elements. > class SVGUnknownElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGUnknownElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGUnknownElement, SVGElement>; >+ > public: > static Ref<SVGUnknownElement> create(const QualifiedName& tagName, Document& document) > { >@@ -49,7 +51,10 @@ private: > { > } > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGUseElement.h b/Source/WebCore/svg/SVGUseElement.h >index 039081d166e..9c3963346f6 100644 >--- a/Source/WebCore/svg/SVGUseElement.h >+++ b/Source/WebCore/svg/SVGUseElement.h >@@ -34,6 +34,8 @@ class SVGGElement; > > class SVGUseElement final : public SVGGraphicsElement, public SVGExternalResourcesRequired, public SVGURIReference, private CachedSVGDocumentClient { > WTF_MAKE_ISO_ALLOCATED(SVGUseElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGUseElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGURIReference>; >+ > public: > static Ref<SVGUseElement> create(const QualifiedName&, Document&); > virtual ~SVGUseElement(); >@@ -63,9 +65,7 @@ private: > void removedFromAncestor(RemovalType, ContainerNode&) override; > void buildPendingResource() override; > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGUseElement, SVGGraphicsElement, SVGExternalResourcesRequired, SVGURIReference>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > void parseAttribute(const QualifiedName&, const AtomicString&) override; > void svgAttributeChanged(const QualifiedName&) override; > >diff --git a/Source/WebCore/svg/SVGVKernElement.h b/Source/WebCore/svg/SVGVKernElement.h >index 78c8d550189..1ec072c0c3c 100644 >--- a/Source/WebCore/svg/SVGVKernElement.h >+++ b/Source/WebCore/svg/SVGVKernElement.h >@@ -28,6 +28,8 @@ namespace WebCore { > > class SVGVKernElement final : public SVGElement { > WTF_MAKE_ISO_ALLOCATED(SVGVKernElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGVKernElement, SVGElement>; >+ > public: > static Ref<SVGVKernElement> create(const QualifiedName&, Document&); > >@@ -36,7 +38,10 @@ public: > private: > SVGVKernElement(const QualifiedName&, Document&); > >+ const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } > bool rendererIsNeeded(const RenderStyle&) final { return false; } >+ >+ PropertyRegistry m_propertyRegistry { *this }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGViewElement.h b/Source/WebCore/svg/SVGViewElement.h >index b0eef19d7c4..75d182f4d85 100644 >--- a/Source/WebCore/svg/SVGViewElement.h >+++ b/Source/WebCore/svg/SVGViewElement.h >@@ -31,6 +31,8 @@ namespace WebCore { > > class SVGViewElement final : public SVGElement, public SVGExternalResourcesRequired, public SVGFitToViewBox, public SVGZoomAndPan { > WTF_MAKE_ISO_ALLOCATED(SVGViewElement); >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGViewElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox>; >+ > public: > static Ref<SVGViewElement> create(const QualifiedName&, Document&); > >@@ -42,9 +44,7 @@ public: > private: > SVGViewElement(const QualifiedName&, Document&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGViewElement, SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox>; > const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; } >- > // FIXME(webkit.org/b/196554): svgAttributeChanged missing. > void parseAttribute(const QualifiedName&, const AtomicString&) final; > >diff --git a/Source/WebCore/svg/SVGViewSpec.h b/Source/WebCore/svg/SVGViewSpec.h >index 557799576d7..6f88c0caf92 100644 >--- a/Source/WebCore/svg/SVGViewSpec.h >+++ b/Source/WebCore/svg/SVGViewSpec.h >@@ -30,6 +30,8 @@ class SVGElement; > class SVGTransformList; > > class SVGViewSpec final : public RefCounted<SVGViewSpec>, public SVGFitToViewBox, public SVGZoomAndPan { >+ using PropertyRegistry = SVGPropertyOwnerRegistry<SVGViewSpec, SVGFitToViewBox>; >+ > public: > static Ref<SVGViewSpec> create(SVGElement& contextElement) > { >@@ -53,8 +55,6 @@ private: > > SVGParsingError parseAttribute(const QualifiedName&, const AtomicString&); > >- using PropertyRegistry = SVGPropertyOwnerRegistry<SVGViewSpec, SVGFitToViewBox>; >- > WeakPtr<SVGElement> m_contextElement; > String m_viewTargetString; > Ref<SVGTransformList> m_transform; >diff --git a/Source/WebCore/svg/SVGZoomAndPan.cpp b/Source/WebCore/svg/SVGZoomAndPan.cpp >index 3924f83d874..9a0e02313e8 100644 >--- a/Source/WebCore/svg/SVGZoomAndPan.cpp >+++ b/Source/WebCore/svg/SVGZoomAndPan.cpp >@@ -27,7 +27,7 @@ namespace WebCore { > Optional<SVGParsingError> SVGZoomAndPan::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (!name.matches(SVGNames::zoomAndPanAttr)) >- return { }; >+ return WTF::nullopt; > > auto expectedZoomAndPan = SVGPropertyTraits<SVGZoomAndPanType>::parse(value); > if (!expectedZoomAndPan)
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
Flags:
sabouhallawa
:
review?
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198122
:
370400
|
370506
|
371669
| 371689