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*);