Title: [158009] trunk/Source/WebCore
Revision
158009
Author
[email protected]
Date
2013-10-25 06:49:57 -0700 (Fri, 25 Oct 2013)

Log Message

SVGResourcesCache::clientStyleChanged() should take a RenderElement&.
<https://webkit.org/b/123335>

This function is always called with an object, and that object
is guaranteed to never be a text renderer.

Reviewed by Antti Koivisto.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (158008 => 158009)


--- trunk/Source/WebCore/ChangeLog	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/ChangeLog	2013-10-25 13:49:57 UTC (rev 158009)
@@ -1,5 +1,15 @@
 2013-10-25  Andreas Kling  <[email protected]>
 
+        SVGResourcesCache::clientStyleChanged() should take a RenderElement&.
+        <https://webkit.org/b/123335>
+
+        This function is always called with an object, and that object
+        is guaranteed to never be a text renderer.
+
+        Reviewed by Antti Koivisto.
+
+2013-10-25  Andreas Kling  <[email protected]>
+
         SVG: postApplyResource() should take a RenderElement&.
         <https://webkit.org/b/123334>
 

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGBlock.cpp (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/RenderSVGBlock.cpp	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGBlock.cpp	2013-10-25 13:49:57 UTC (rev 158009)
@@ -99,7 +99,7 @@
     if (diff == StyleDifferenceLayout)
         setNeedsBoundariesUpdate();
     RenderBlockFlow::styleDidChange(diff, oldStyle);
-    SVGResourcesCache::clientStyleChanged(this, diff, style());
+    SVGResourcesCache::clientStyleChanged(*this, diff, *style());
 }
 
 }

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp	2013-10-25 13:49:57 UTC (rev 158009)
@@ -111,7 +111,7 @@
     if (diff == StyleDifferenceLayout)
         setNeedsBoundariesUpdate();
     RenderInline::styleDidChange(diff, oldStyle);
-    SVGResourcesCache::clientStyleChanged(this, diff, style());
+    SVGResourcesCache::clientStyleChanged(*this, diff, *style());
 }
 
 void RenderSVGInline::addChild(RenderObject* child, RenderObject* beforeChild)

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.cpp	2013-10-25 13:49:57 UTC (rev 158009)
@@ -106,7 +106,7 @@
             setNeedsTransformUpdate();
     }
     RenderElement::styleDidChange(diff, oldStyle);
-    SVGResourcesCache::clientStyleChanged(this, diff, style());
+    SVGResourcesCache::clientStyleChanged(*this, diff, *style());
 }
 
 bool RenderSVGModelObject::nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation&, const LayoutPoint&, HitTestAction)

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp	2013-10-25 13:49:57 UTC (rev 158009)
@@ -189,10 +189,10 @@
     for (SVGDocumentExtensions::SVGPendingElements::const_iterator it = clients->begin(); it != end; ++it) {
         ASSERT((*it)->hasPendingResources());
         extensions.clearHasPendingResourcesIfPossible(*it);
-        RenderObject* renderer = (*it)->renderer();
+        auto renderer = (*it)->renderer();
         if (!renderer)
             continue;
-        SVGResourcesCache::clientStyleChanged(renderer, StyleDifferenceLayout, renderer->style());
+        SVGResourcesCache::clientStyleChanged(*renderer, StyleDifferenceLayout, *renderer->style());
         renderer->setNeedsLayout();
     }
 }

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp	2013-10-25 13:49:57 UTC (rev 158009)
@@ -318,7 +318,7 @@
     if (diff == StyleDifferenceLayout)
         setNeedsBoundariesUpdate();
     RenderReplaced::styleDidChange(diff, oldStyle);
-    SVGResourcesCache::clientStyleChanged(this, diff, style());
+    SVGResourcesCache::clientStyleChanged(*this, diff, *style());
 }
 
 void RenderSVGRoot::addChild(RenderObject* child, RenderObject* beforeChild)

Modified: trunk/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp	2013-10-25 13:49:57 UTC (rev 158009)
@@ -636,13 +636,13 @@
 
     // Draw text using selection style from the start to the end position of the selection
     if (style != selectionStyle)
-        SVGResourcesCache::clientStyleChanged(&parent()->renderer(), StyleDifferenceRepaint, selectionStyle);
+        SVGResourcesCache::clientStyleChanged(parent()->renderer(), StyleDifferenceRepaint, *selectionStyle);
 
     TextRun selectionTextRun = constructTextRun(selectionStyle, fragment);
     paintTextWithShadows(context, selectionStyle, textRun, fragment, startPosition, endPosition);
 
     if (style != selectionStyle)
-        SVGResourcesCache::clientStyleChanged(&parent()->renderer(), StyleDifferenceRepaint, style);
+        SVGResourcesCache::clientStyleChanged(parent()->renderer(), StyleDifferenceRepaint, *style);
 
     // Eventually draw text using regular style from the end position of the selection to the end of the current chunk part
     if (endPosition < static_cast<int>(fragment.length) && !paintSelectedTextOnly)

Modified: trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp	2013-10-25 13:49:57 UTC (rev 158009)
@@ -119,29 +119,28 @@
     return renderer->node() && renderer->node()->isSVGElement() && !renderer->isSVGInlineText();
 }
 
-void SVGResourcesCache::clientStyleChanged(RenderObject* renderer, StyleDifference diff, const RenderStyle* newStyle)
+void SVGResourcesCache::clientStyleChanged(RenderElement& renderer, StyleDifference diff, const RenderStyle& newStyle)
 {
-    ASSERT(renderer);
-    if (diff == StyleDifferenceEqual || !renderer->parent())
+    if (diff == StyleDifferenceEqual || !renderer.parent())
         return;
 
     // In this case the proper SVGFE*Element will decide whether the modified CSS properties require a relayout or repaint.
-    if (renderer->isSVGResourceFilterPrimitive() && (diff == StyleDifferenceRepaint || diff == StyleDifferenceRepaintIfTextOrBorderOrOutline))
+    if (renderer.isSVGResourceFilterPrimitive() && (diff == StyleDifferenceRepaint || diff == StyleDifferenceRepaintIfTextOrBorderOrOutline))
         return;
 
     // Dynamic changes of CSS properties like 'clip-path' may require us to recompute the associated resources for a renderer.
     // FIXME: Avoid passing in a useless StyleDifference, but instead compare oldStyle/newStyle to see which resources changed
     // to be able to selectively rebuild individual resources, instead of all of them.
-    if (rendererCanHaveResources(renderer)) {
-        SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer);
-        cache->removeResourcesFromRenderObject(renderer);
-        cache->addResourcesFromRenderObject(renderer, newStyle);
+    if (rendererCanHaveResources(&renderer)) {
+        SVGResourcesCache* cache = resourcesCacheFromRenderObject(&renderer);
+        cache->removeResourcesFromRenderObject(&renderer);
+        cache->addResourcesFromRenderObject(&renderer, &newStyle);
     }
 
-    RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer, false);
+    RenderSVGResource::markForLayoutAndParentResourceInvalidation(&renderer, false);
 
-    if (renderer->node() && !renderer->node()->isSVGElement())
-        renderer->node()->setNeedsStyleRecalc(SyntheticStyleChange);
+    if (renderer.element() && !renderer.element()->isSVGElement())
+        renderer.element()->setNeedsStyleRecalc(SyntheticStyleChange);
 }
 
 void SVGResourcesCache::clientWasAddedToTree(RenderObject* renderer, const RenderStyle* newStyle)

Modified: trunk/Source/WebCore/rendering/svg/SVGResourcesCache.h (158008 => 158009)


--- trunk/Source/WebCore/rendering/svg/SVGResourcesCache.h	2013-10-25 13:48:19 UTC (rev 158008)
+++ trunk/Source/WebCore/rendering/svg/SVGResourcesCache.h	2013-10-25 13:49:57 UTC (rev 158009)
@@ -53,7 +53,7 @@
     static void clientLayoutChanged(RenderObject*);
 
     // Called from all SVG renderers styleDidChange() methods.
-    static void clientStyleChanged(RenderObject*, StyleDifference, const RenderStyle* newStyle);
+    static void clientStyleChanged(RenderElement&, StyleDifference, const RenderStyle& newStyle);
 
     // Called from RenderSVGResourceContainer::willBeDestroyed().
     static void resourceDestroyed(RenderSVGResourceContainer*);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to