[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

zimmermann at webkit.org zimmermann at webkit.org
Wed Dec 22 14:17:10 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 767d9737993eb8e8b505d80a6f2c7da31113693d
Author: zimmermann at webkit.org <zimmermann at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 6 12:29:59 2010 +0000

    2010-10-06  Nikolas Zimmermann  <nzimmermann at rim.com>
    
            Reviewed by Dirk Schulze.
    
            Only execute first SVG text layout phase if needed
            https://bugs.webkit.org/show_bug.cgi?id=47254
    
            The first SVG text layout phase which computes the per-character metrics and extracts
            the x/y/dx/dy/rotate values from the SVG DOM is currently executed upon every RenderSVGText::layout() call.
    
            Optimize this, by only calling it:
            - if x/y/dx/dy/rotate value lists change
            - the style of a RenderSVGInlineText changes (eg. font-size changes influence metrics)
            - the text content of any of the children in the <text> subtree change
    
            No change in layout tests, a pure performance change - covered by existing tests.
    
            * rendering/RenderSVGResourceGradient.cpp:
            (WebCore::createMaskAndSwapContextForTextGradient): Adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
            (WebCore::clipToTextMask): Ditto.
            * rendering/SVGRenderSupport.cpp:
            * rendering/SVGRenderSupport.h: Move findTreeRootObject to RenderSVGText::locateRenderSVGTextAncestor().
            * rendering/svg/RenderSVGInline.cpp:
            (WebCore::RenderSVGInline::objectBoundingBox): adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
            (WebCore::RenderSVGInline::strokeBoundingBox): Ditto.
            (WebCore::RenderSVGInline::repaintRectInLocalCoordinates): Ditto.
            (WebCore::RenderSVGInline::absoluteQuads): Ditto.
            * rendering/svg/RenderSVGInlineText.cpp:
            (WebCore::RenderSVGInlineText::styleDidChange): Call setNeedsPositioningValuesUpdate() on the RenderSVGText root object, if diff == StyleDifferenceLayout.
            * rendering/svg/RenderSVGText.cpp:
            (WebCore::RenderSVGText::RenderSVGText): Initialize m_needsPositioningValuesUpdate.
            (WebCore::RenderSVGText::locateRenderSVGTextAncestor): New helper function, moved from SVGRenderSupport, to a more sensible place.
            (WebCore::RenderSVGText::layout): Only execute the first SVG text layout phase, if m_needsPositioningValuesUpdate=true.
            * rendering/svg/RenderSVGText.h:
            (WebCore::RenderSVGText::setNeedsPositioningValuesUpdate):
            (WebCore::toRenderSVGText): Add new helper casting methods, like most other renderers have.
            * svg/SVGTextPositioningElement.cpp:
            (WebCore::updatePositioningValuesInRenderer):
            (WebCore::SVGTextPositioningElement::svgAttributeChanged): If x/y/dx/dy/rotate changes, call setNeedsPositioningValuesUpdate on the RenderSVGText root object.
            (WebCore::SVGTextPositioningElement::childrenChanged): If any children changes (addition, removal), do the same.
            * svg/SVGTextPositioningElement.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69186 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 8e47ef3..be06279 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,45 @@
+2010-10-06  Nikolas Zimmermann  <nzimmermann at rim.com>
+
+        Reviewed by Dirk Schulze.
+
+        Only execute first SVG text layout phase if needed
+        https://bugs.webkit.org/show_bug.cgi?id=47254
+
+        The first SVG text layout phase which computes the per-character metrics and extracts
+        the x/y/dx/dy/rotate values from the SVG DOM is currently executed upon every RenderSVGText::layout() call.
+
+        Optimize this, by only calling it:
+        - if x/y/dx/dy/rotate value lists change
+        - the style of a RenderSVGInlineText changes (eg. font-size changes influence metrics)
+        - the text content of any of the children in the <text> subtree change
+
+        No change in layout tests, a pure performance change - covered by existing tests.
+
+        * rendering/RenderSVGResourceGradient.cpp:
+        (WebCore::createMaskAndSwapContextForTextGradient): Adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
+        (WebCore::clipToTextMask): Ditto.
+        * rendering/SVGRenderSupport.cpp:
+        * rendering/SVGRenderSupport.h: Move findTreeRootObject to RenderSVGText::locateRenderSVGTextAncestor().
+        * rendering/svg/RenderSVGInline.cpp:
+        (WebCore::RenderSVGInline::objectBoundingBox): adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
+        (WebCore::RenderSVGInline::strokeBoundingBox): Ditto.
+        (WebCore::RenderSVGInline::repaintRectInLocalCoordinates): Ditto.
+        (WebCore::RenderSVGInline::absoluteQuads): Ditto.
+        * rendering/svg/RenderSVGInlineText.cpp:
+        (WebCore::RenderSVGInlineText::styleDidChange): Call setNeedsPositioningValuesUpdate() on the RenderSVGText root object, if diff == StyleDifferenceLayout.
+        * rendering/svg/RenderSVGText.cpp:
+        (WebCore::RenderSVGText::RenderSVGText): Initialize m_needsPositioningValuesUpdate.
+        (WebCore::RenderSVGText::locateRenderSVGTextAncestor): New helper function, moved from SVGRenderSupport, to a more sensible place.
+        (WebCore::RenderSVGText::layout): Only execute the first SVG text layout phase, if m_needsPositioningValuesUpdate=true.
+        * rendering/svg/RenderSVGText.h:
+        (WebCore::RenderSVGText::setNeedsPositioningValuesUpdate):
+        (WebCore::toRenderSVGText): Add new helper casting methods, like most other renderers have.
+        * svg/SVGTextPositioningElement.cpp:
+        (WebCore::updatePositioningValuesInRenderer):
+        (WebCore::SVGTextPositioningElement::svgAttributeChanged): If x/y/dx/dy/rotate changes, call setNeedsPositioningValuesUpdate on the RenderSVGText root object.
+        (WebCore::SVGTextPositioningElement::childrenChanged): If any children changes (addition, removal), do the same.
+        * svg/SVGTextPositioningElement.h:
+
 2010-10-05  Andrey Kosyakov  <caseq at chromium.org>
 
         Reviewed by Yury Semikhatsky.
diff --git a/WebCore/rendering/RenderSVGResourceGradient.cpp b/WebCore/rendering/RenderSVGResourceGradient.cpp
index 1c33de4..169903e 100644
--- a/WebCore/rendering/RenderSVGResourceGradient.cpp
+++ b/WebCore/rendering/RenderSVGResourceGradient.cpp
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2006 Nikolas Zimmermann <zimmermann at kde.org>
- *               2008 Eric Seidel <eric at webkit.org>
- *               2008 Dirk Schulze <krit at webkit.org>
+ * Copyright (C) 2008 Eric Seidel <eric at webkit.org>
+ * Copyright (C) 2008 Dirk Schulze <krit at webkit.org>
  * Copyright (C) Research In Motion Limited 2010. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
@@ -28,6 +28,7 @@
 
 #include "GradientAttributes.h"
 #include "GraphicsContext.h"
+#include "RenderSVGText.h"
 #include "SVGImageBufferTools.h"
 #include "SVGRenderSupport.h"
 #include <wtf/UnusedParam.h>
@@ -75,9 +76,9 @@ void RenderSVGResourceGradient::removeClientFromCache(RenderObject* client, bool
 static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*& context,
                                                            GraphicsContext*& savedContext,
                                                            OwnPtr<ImageBuffer>& imageBuffer,
-                                                           const RenderObject* object)
+                                                           RenderObject* object)
 {
-    const RenderObject* textRootBlock = SVGRenderSupport::findTextRootObject(object);
+    RenderObject* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(object);
     ASSERT(textRootBlock);
 
     AffineTransform absoluteTransform;
@@ -108,10 +109,10 @@ static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*& con
 static inline AffineTransform clipToTextMask(GraphicsContext* context,
                                              OwnPtr<ImageBuffer>& imageBuffer,
                                              FloatRect& targetRect,
-                                             const RenderObject* object,
+                                             RenderObject* object,
                                              GradientData* gradientData)
 {
-    const RenderObject* textRootBlock = SVGRenderSupport::findTextRootObject(object);
+    RenderObject* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(object);
     ASSERT(textRootBlock);
 
     targetRect = textRootBlock->repaintRectInLocalCoordinates();
diff --git a/WebCore/rendering/SVGRenderSupport.cpp b/WebCore/rendering/SVGRenderSupport.cpp
index 644ff70..f29d4b9 100644
--- a/WebCore/rendering/SVGRenderSupport.cpp
+++ b/WebCore/rendering/SVGRenderSupport.cpp
@@ -347,16 +347,6 @@ void SVGRenderSupport::applyStrokeStyleToContext(GraphicsContext* context, const
     }
 }
 
-const RenderObject* SVGRenderSupport::findTextRootObject(const RenderObject* start)
-{
-    while (start && !start->isSVGText())
-        start = start->parent();
-    ASSERT(start);
-    ASSERT(start->isSVGText());
-
-    return start;
-}
-
 }
 
 #endif
diff --git a/WebCore/rendering/SVGRenderSupport.h b/WebCore/rendering/SVGRenderSupport.h
index 54622d2..7814863 100644
--- a/WebCore/rendering/SVGRenderSupport.h
+++ b/WebCore/rendering/SVGRenderSupport.h
@@ -70,7 +70,6 @@ public:
     static void applyStrokeStyleToContext(GraphicsContext*, const RenderStyle*, const RenderObject*);
 
     // FIXME: These methods do not belong here.
-    static const RenderObject* findTextRootObject(const RenderObject* start);
     static const RenderSVGRoot* findTreeRootObject(const RenderObject* start);
 
 private:
diff --git a/WebCore/rendering/svg/RenderSVGInline.cpp b/WebCore/rendering/svg/RenderSVGInline.cpp
index 5d12a61..4d0c533 100644
--- a/WebCore/rendering/svg/RenderSVGInline.cpp
+++ b/WebCore/rendering/svg/RenderSVGInline.cpp
@@ -1,8 +1,7 @@
 /*
- * This file is part of the WebKit project.
- *
  * Copyright (C) 2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
  * Copyright (C) 2006 Apple Inc. All rights reserved.
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -27,6 +26,7 @@
 #include "RenderSVGInline.h"
 
 #include "RenderSVGResource.h"
+#include "RenderSVGText.h"
 #include "SVGInlineFlowBox.h"
 
 namespace WebCore {
@@ -45,7 +45,7 @@ InlineFlowBox* RenderSVGInline::createInlineFlowBox()
 
 FloatRect RenderSVGInline::objectBoundingBox() const
 {
-    if (const RenderObject* object = SVGRenderSupport::findTextRootObject(this))
+    if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
         return object->objectBoundingBox();
 
     return FloatRect();
@@ -53,7 +53,7 @@ FloatRect RenderSVGInline::objectBoundingBox() const
 
 FloatRect RenderSVGInline::strokeBoundingBox() const
 {
-    if (const RenderObject* object = SVGRenderSupport::findTextRootObject(this))
+    if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
         return object->strokeBoundingBox();
 
     return FloatRect();
@@ -61,7 +61,7 @@ FloatRect RenderSVGInline::strokeBoundingBox() const
 
 FloatRect RenderSVGInline::repaintRectInLocalCoordinates() const
 {
-    if (const RenderObject* object = SVGRenderSupport::findTextRootObject(this))
+    if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
         return object->repaintRectInLocalCoordinates();
 
     return FloatRect();
@@ -84,7 +84,7 @@ void RenderSVGInline::mapLocalToContainer(RenderBoxModelObject* repaintContainer
 
 void RenderSVGInline::absoluteQuads(Vector<FloatQuad>& quads)
 {
-    const RenderObject* object = SVGRenderSupport::findTextRootObject(this);
+    RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this);
     if (!object)
         return;
 
diff --git a/WebCore/rendering/svg/RenderSVGInlineText.cpp b/WebCore/rendering/svg/RenderSVGInlineText.cpp
index d77bb2a..49727ee 100644
--- a/WebCore/rendering/svg/RenderSVGInlineText.cpp
+++ b/WebCore/rendering/svg/RenderSVGInlineText.cpp
@@ -1,10 +1,9 @@
 /*
- * This file is part of the WebKit project.
- *
  * Copyright (C) 2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
- *           (C) 2006 Apple Computer Inc.
- *           (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
- *           (C) 2008 Rob Buis <buis at kde.org>
+ * Copyright (C) 2006 Apple Computer Inc.
+ * Copyright (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2008 Rob Buis <buis at kde.org>
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -32,6 +31,7 @@
 #include "FloatQuad.h"
 #include "RenderBlock.h"
 #include "RenderSVGRoot.h"
+#include "RenderSVGText.h"
 #include "SVGInlineTextBox.h"
 #include "SVGRootInlineBox.h"
 #include "VisiblePosition.h"
@@ -71,6 +71,12 @@ void RenderSVGInlineText::styleDidChange(StyleDifference diff, const RenderStyle
 {
     RenderText::styleDidChange(diff, oldStyle);
 
+    if (diff == StyleDifferenceLayout) {
+        // The text metrics may be influenced by style changes.
+        if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this))
+            textRenderer->setNeedsPositioningValuesUpdate();
+    }
+
     const RenderStyle* newStyle = style();
     if (!newStyle || newStyle->whiteSpace() != PRE)
         return;
diff --git a/WebCore/rendering/svg/RenderSVGText.cpp b/WebCore/rendering/svg/RenderSVGText.cpp
index 24bd498..01a92b0 100644
--- a/WebCore/rendering/svg/RenderSVGText.cpp
+++ b/WebCore/rendering/svg/RenderSVGText.cpp
@@ -1,12 +1,11 @@
 /*
- * This file is part of the WebKit project.
- *
  * Copyright (C) 2006 Apple Computer, Inc.
- *               2006 Alexander Kellett <lypanov at kde.org>
- *               2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
- *               2007 Nikolas Zimmermann <zimmermann at kde.org>
- *               2008 Rob Buis <buis at kde.org>
- *               2009 Dirk Schulze <krit at webkit.org>
+ * Copyright (C) 2006 Alexander Kellett <lypanov at kde.org>
+ * Copyright (C) 2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
+ * Copyright (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2008 Rob Buis <buis at kde.org>
+ * Copyright (C) 2009 Dirk Schulze <krit at webkit.org>
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -53,10 +52,31 @@ namespace WebCore {
 
 RenderSVGText::RenderSVGText(SVGTextElement* node) 
     : RenderSVGBlock(node)
+    , m_needsPositioningValuesUpdate(true)
     , m_needsTransformUpdate(true)
 {
 }
 
+RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(RenderObject* start)
+{
+    ASSERT(start);
+    while (start && !start->isSVGText())
+        start = start->parent();
+    if (!start || !start->isSVGText())
+        return 0;
+    return toRenderSVGText(start);
+}
+
+const RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(const RenderObject* start)
+{
+    ASSERT(start);
+    while (start && !start->isSVGText())
+        start = start->parent();
+    if (!start || !start->isSVGText())
+        return 0;
+    return toRenderSVGText(start);
+}
+
 IntRect RenderSVGText::clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer)
 {
     return SVGRenderSupport::clippedOverflowRectForRepaint(this, repaintContainer);
@@ -85,9 +105,13 @@ void RenderSVGText::layout()
         updateCachedBoundariesInParents = true;
     }
 
-    // Perform SVG text layout phase one (see SVGTextLayoutAttributesBuilder for details).
-    SVGTextLayoutAttributesBuilder layoutAttributesBuilder;
-    layoutAttributesBuilder.buildLayoutAttributesForTextSubtree(this);
+    if (m_needsPositioningValuesUpdate) {
+        // Perform SVG text layout phase one (see SVGTextLayoutAttributesBuilder for details).
+        SVGTextLayoutAttributesBuilder layoutAttributesBuilder;
+        layoutAttributesBuilder.buildLayoutAttributesForTextSubtree(this);
+        m_needsPositioningValuesUpdate = false;
+        updateCachedBoundariesInParents = true;
+    }
 
     // Reduced version of RenderBlock::layoutBlock(), which only takes care of SVG text.
     // All if branches that could cause early exit in RenderBlocks layoutBlock() method are turned into assertions.
diff --git a/WebCore/rendering/svg/RenderSVGText.h b/WebCore/rendering/svg/RenderSVGText.h
index 3a490ee..deae78c 100644
--- a/WebCore/rendering/svg/RenderSVGText.h
+++ b/WebCore/rendering/svg/RenderSVGText.h
@@ -1,8 +1,7 @@
 /*
- * This file is part of the WebKit project.
- *
  * Copyright (C) 2006 Apple Computer, Inc.
- *           (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -37,9 +36,13 @@ class RenderSVGText : public RenderSVGBlock {
 public:
     RenderSVGText(SVGTextElement* node);
 
+    void setNeedsPositioningValuesUpdate() { m_needsPositioningValuesUpdate = true; }
     virtual void setNeedsTransformUpdate() { m_needsTransformUpdate = true; }
     virtual FloatRect repaintRectInLocalCoordinates() const;
 
+    static RenderSVGText* locateRenderSVGTextAncestor(RenderObject*);
+    static const RenderSVGText* locateRenderSVGTextAncestor(const RenderObject*);
+
 private:
     virtual const char* renderName() const { return "RenderSVGText"; }
     virtual bool isSVGText() const { return true; }
@@ -69,10 +72,26 @@ private:
     virtual RenderBlock* firstLineBlock() const;
     virtual void updateFirstLetter();
 
+    bool m_needsPositioningValuesUpdate : 1;
     bool m_needsTransformUpdate : 1;
     AffineTransform m_localTransform;
 };
 
+inline RenderSVGText* toRenderSVGText(RenderObject* object)
+{
+    ASSERT(!object || object->isSVGText());
+    return static_cast<RenderSVGText*>(object);
+}
+
+inline const RenderSVGText* toRenderSVGText(const RenderObject* object)
+{
+    ASSERT(!object || object->isSVGText());
+    return static_cast<const RenderSVGText*>(object);
+}
+
+// This will catch anyone doing an unnecessary cast.
+void toRenderSVGText(const RenderSVGText*);
+
 }
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGTextPositioningElement.cpp b/WebCore/svg/SVGTextPositioningElement.cpp
index 65220cb..cbc324d 100644
--- a/WebCore/svg/SVGTextPositioningElement.cpp
+++ b/WebCore/svg/SVGTextPositioningElement.cpp
@@ -24,8 +24,8 @@
 #include "SVGTextPositioningElement.h"
 
 #include "Attribute.h"
-#include "RenderObject.h"
 #include "RenderSVGResource.h"
+#include "RenderSVGText.h"
 #include "SVGLengthList.h"
 #include "SVGNames.h"
 #include "SVGNumberList.h"
@@ -58,21 +58,65 @@ void SVGTextPositioningElement::parseMappedAttribute(Attribute* attr)
         SVGTextContentElement::parseMappedAttribute(attr);
 }
 
+static inline void updatePositioningValuesInRenderer(RenderObject* renderer)
+{
+    RenderSVGText* textRenderer = 0;
+
+    if (renderer->isSVGText())
+        textRenderer = toRenderSVGText(renderer);
+    else {
+        // Locate RenderSVGText parent renderer.
+        RenderObject* parent = renderer->parent();
+        while (parent && !parent->isSVGText())
+            parent = parent->parent();
+
+        if (parent) {
+            ASSERT(parent->isSVGText());
+            textRenderer = toRenderSVGText(parent);
+        }
+    }
+
+    if (!textRenderer)
+        return;
+
+    textRenderer->setNeedsPositioningValuesUpdate();
+}
+
 void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrName)
 {
     SVGTextContentElement::svgAttributeChanged(attrName);
 
-    if (attrName == SVGNames::xAttr
-        || attrName == SVGNames::yAttr
-        || attrName == SVGNames::dxAttr
-        || attrName == SVGNames::dyAttr)
+    bool updateRelativeLengths = attrName == SVGNames::xAttr
+                              || attrName == SVGNames::yAttr
+                              || attrName == SVGNames::dxAttr
+                              || attrName == SVGNames::dyAttr;
+
+    if (updateRelativeLengths)
         updateRelativeLengthsInformation();
 
-    if (!renderer())
+    RenderObject* renderer = this->renderer();
+    if (!renderer)
         return;
 
-    if (isKnownAttribute(attrName))
-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer());
+    if (updateRelativeLengths || attrName == SVGNames::rotateAttr) {
+        updatePositioningValuesInRenderer(renderer);
+        RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
+        return;
+    }
+
+    if (SVGTextContentElement::isKnownAttribute(attrName))
+        RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
+}
+
+void SVGTextPositioningElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
+{
+    SVGTextContentElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
+
+    if (changedByParser)
+        return;
+
+    if (RenderObject* object = renderer())
+        updatePositioningValuesInRenderer(object);
 }
 
 void SVGTextPositioningElement::synchronizeProperty(const QualifiedName& attrName)
@@ -100,16 +144,6 @@ void SVGTextPositioningElement::synchronizeProperty(const QualifiedName& attrNam
         synchronizeRotate();
 }
 
-bool SVGTextPositioningElement::isKnownAttribute(const QualifiedName& attrName)
-{
-    return (attrName.matches(SVGNames::xAttr) ||
-            attrName.matches(SVGNames::yAttr) ||
-            attrName.matches(SVGNames::dxAttr) ||
-            attrName.matches(SVGNames::dyAttr) ||
-            attrName.matches(SVGNames::rotateAttr) ||
-            SVGTextContentElement::isKnownAttribute(attrName));
-}
-
 static inline bool listContainsRelativeValue(SVGLengthList* list)
 {
     if (!list)
diff --git a/WebCore/svg/SVGTextPositioningElement.h b/WebCore/svg/SVGTextPositioningElement.h
index d26fbcb..41de9f3 100644
--- a/WebCore/svg/SVGTextPositioningElement.h
+++ b/WebCore/svg/SVGTextPositioningElement.h
@@ -36,11 +36,10 @@ namespace WebCore {
         SVGTextPositioningElement(const QualifiedName&, Document*);
 
         virtual void parseMappedAttribute(Attribute*);
+        virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
         virtual void svgAttributeChanged(const QualifiedName&);
         virtual void synchronizeProperty(const QualifiedName&);
 
-        bool isKnownAttribute(const QualifiedName&);
-
         virtual bool selfHasRelativeLengths() const;
 
         DECLARE_ANIMATED_PROPERTY(SVGTextPositioningElement, SVGNames::xAttr, SVGLengthList*, X, x)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list