Diff
Modified: trunk/Source/WebCore/ChangeLog (157939 => 157940)
--- trunk/Source/WebCore/ChangeLog 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/ChangeLog 2013-10-24 18:41:42 UTC (rev 157940)
@@ -1,3 +1,16 @@
+2013-10-24 Andreas Kling <[email protected]>
+
+ SVG: RenderElement-ize intersectRepaintRectWithResources().
+ <https://webkit.org/b/123278>
+
+ SVGRenderSupport::intersectRepaintRectWithResources() is only ever
+ called with non-text renderers so make it take RenderElement&.
+
+ Had to tweak RenderSVGResource::resourceBoundingBox() to take the
+ renderer by reference.
+
+ Reviewed by Antti Koivisto.
+
2013-10-24 Joseph Pecoraro <[email protected]>
Web Inspector: Breakpoints in sourceURL named scripts do not work
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -169,7 +169,7 @@
void RenderSVGContainer::updateCachedBoundaries()
{
SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m_objectBoundingBoxValid, m_strokeBoundingBox, m_repaintBoundingBox);
- SVGRenderSupport::intersectRepaintRectWithResources(this, m_repaintBoundingBox);
+ SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBox);
}
bool RenderSVGContainer::nodeAtFloatPoint(const HitTestRequest& request, HitTestResult& result, const FloatPoint& pointInParent, HitTestAction hitTestAction)
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -98,7 +98,7 @@
if (m_needsBoundariesUpdate) {
m_repaintBoundingBoxExcludingShadow = m_objectBoundingBox;
- SVGRenderSupport::intersectRepaintRectWithResources(this, m_repaintBoundingBoxExcludingShadow);
+ SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBoxExcludingShadow);
m_repaintBoundingBox = m_repaintBoundingBoxExcludingShadow;
SVGRenderSupport::intersectRepaintRectWithShadows(this, m_repaintBoundingBox);
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResource.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResource.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResource.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -64,7 +64,7 @@
virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode) = 0;
virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short, const Path*, const RenderSVGShape*) { }
- virtual FloatRect resourceBoundingBox(RenderObject*) = 0;
+ virtual FloatRect resourceBoundingBox(const RenderObject&) = 0;
virtual RenderSVGResourceType resourceType() const = 0;
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -309,17 +309,17 @@
return false;
}
-FloatRect RenderSVGResourceClipper::resourceBoundingBox(RenderObject* object)
+FloatRect RenderSVGResourceClipper::resourceBoundingBox(const RenderObject& object)
{
// Resource was not layouted yet. Give back the boundingBox of the object.
if (selfNeedsLayout())
- return object->objectBoundingBox();
+ return object.objectBoundingBox();
if (m_clipBoundaries.isEmpty())
calculateClipContentRepaintRect();
if (clipPathElement().clipPathUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) {
- FloatRect objectBoundingBox = object->objectBoundingBox();
+ FloatRect objectBoundingBox = object.objectBoundingBox();
AffineTransform transform;
transform.translate(objectBoundingBox.x(), objectBoundingBox.y());
transform.scaleNonUniform(objectBoundingBox.width(), objectBoundingBox.height());
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -56,7 +56,7 @@
// applyResource directly and use the rects from the object, since they are empty for RenderSVGResources
// FIXME: We made applyClippingToContext public because we cannot call applyResource on HTML elements (it asserts on RenderObject::objectBoundingBox)
bool applyClippingToContext(RenderObject*, const FloatRect&, const FloatRect&, GraphicsContext*);
- virtual FloatRect resourceBoundingBox(RenderObject*);
+ virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE;
virtual RenderSVGResourceType resourceType() const { return ClipperResourceType; }
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -311,9 +311,9 @@
filterData->sourceGraphicBuffer.clear();
}
-FloatRect RenderSVGResourceFilter::resourceBoundingBox(RenderObject* object)
+FloatRect RenderSVGResourceFilter::resourceBoundingBox(const RenderObject& object)
{
- return SVGLengthContext::resolveRectangle<SVGFilterElement>(&filterElement(), filterElement().filterUnits(), object->objectBoundingBox());
+ return SVGLengthContext::resolveRectangle<SVGFilterElement>(&filterElement(), filterElement().filterUnits(), object.objectBoundingBox());
}
void RenderSVGResourceFilter::primitiveAttributeChanged(RenderObject* object, const QualifiedName& attribute)
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -77,7 +77,7 @@
virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode);
virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*);
- virtual FloatRect resourceBoundingBox(RenderObject*);
+ virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE;
std::unique_ptr<SVGFilterBuilder> buildPrimitives(SVGFilter*);
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -52,7 +52,7 @@
virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode) OVERRIDE FINAL;
virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*) OVERRIDE FINAL;
- virtual FloatRect resourceBoundingBox(RenderObject*) OVERRIDE FINAL { return FloatRect(); }
+ virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE FINAL { return FloatRect(); }
protected:
explicit RenderSVGResourceGradient(SVGGradientElement&);
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceMarker.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -56,7 +56,7 @@
AffineTransform markerTransformation(const FloatPoint& origin, float angle, float strokeWidth) const;
virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short) { return false; }
- virtual FloatRect resourceBoundingBox(RenderObject*) { return FloatRect(); }
+ virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE { return FloatRect(); }
FloatPoint referencePoint() const;
float angle() const;
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -161,9 +161,9 @@
}
}
-FloatRect RenderSVGResourceMasker::resourceBoundingBox(RenderObject* object)
+FloatRect RenderSVGResourceMasker::resourceBoundingBox(const RenderObject& object)
{
- FloatRect objectBoundingBox = object->objectBoundingBox();
+ FloatRect objectBoundingBox = object.objectBoundingBox();
FloatRect maskBoundaries = SVGLengthContext::resolveRectangle<SVGMaskElement>(&maskElement(), maskElement().maskUnits(), objectBoundingBox);
// Resource was not layouted yet. Give back clipping rect of the mask.
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -48,7 +48,7 @@
virtual void removeAllClientsFromCache(bool markForInvalidation = true);
virtual void removeClientFromCache(RenderObject*, bool markForInvalidation = true);
virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode);
- virtual FloatRect resourceBoundingBox(RenderObject*);
+ virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE;
SVGUnitTypes::SVGUnitType maskUnits() const { return maskElement().maskUnits(); }
SVGUnitTypes::SVGUnitType maskContentUnits() const { return maskElement().maskContentUnits(); }
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -53,7 +53,7 @@
virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode);
virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*);
- virtual FloatRect resourceBoundingBox(RenderObject*) { return FloatRect(); }
+ virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE { return FloatRect(); }
virtual RenderSVGResourceType resourceType() const { return s_resourceType; }
static RenderSVGResourceType s_resourceType;
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -37,7 +37,7 @@
virtual bool applyResource(RenderObject*, RenderStyle*, GraphicsContext*&, unsigned short resourceMode);
virtual void postApplyResource(RenderObject*, GraphicsContext*&, unsigned short resourceMode, const Path*, const RenderSVGShape*);
- virtual FloatRect resourceBoundingBox(RenderObject*) { return FloatRect(); }
+ virtual FloatRect resourceBoundingBox(const RenderObject&) OVERRIDE { return FloatRect(); }
virtual RenderSVGResourceType resourceType() const { return s_resourceType; }
static RenderSVGResourceType s_resourceType;
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -399,7 +399,7 @@
void RenderSVGRoot::updateCachedBoundaries()
{
SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m_objectBoundingBoxValid, m_strokeBoundingBox, m_repaintBoundingBoxExcludingShadow);
- SVGRenderSupport::intersectRepaintRectWithResources(this, m_repaintBoundingBoxExcludingShadow);
+ SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBoxExcludingShadow);
m_repaintBoundingBoxExcludingShadow.inflate(borderAndPaddingWidth());
m_repaintBoundingBox = m_repaintBoundingBoxExcludingShadow;
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGShape.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -404,7 +404,7 @@
void RenderSVGShape::updateRepaintBoundingBox()
{
m_repaintBoundingBoxExcludingShadow = strokeBoundingBox();
- SVGRenderSupport::intersectRepaintRectWithResources(this, m_repaintBoundingBoxExcludingShadow);
+ SVGRenderSupport::intersectRepaintRectWithResources(*this, m_repaintBoundingBoxExcludingShadow);
m_repaintBoundingBox = m_repaintBoundingBoxExcludingShadow;
SVGRenderSupport::intersectRepaintRectWithShadows(this, m_repaintBoundingBox);
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -527,7 +527,7 @@
FloatRect RenderSVGText::repaintRectInLocalCoordinates() const
{
FloatRect repaintRect = strokeBoundingBox();
- SVGRenderSupport::intersectRepaintRectWithResources(this, repaintRect);
+ SVGRenderSupport::intersectRepaintRectWithResources(*this, repaintRect);
if (const ShadowData* textShadow = style()->textShadow())
textShadow->adjustRectForShadow(repaintRect);
Modified: trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -371,12 +371,9 @@
repaintRect = rootToLocalTransform.mapRect(repaintRect);
}
-void SVGRenderSupport::intersectRepaintRectWithResources(const RenderObject* object, FloatRect& repaintRect)
+void SVGRenderSupport::intersectRepaintRectWithResources(const RenderElement& renderer, FloatRect& repaintRect)
{
- ASSERT(object);
-
- RenderObject* renderer = const_cast<RenderObject*>(object);
- SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(renderer);
+ SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(&renderer);
if (!resources)
return;
Modified: trunk/Source/WebCore/rendering/svg/SVGRenderSupport.h (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/SVGRenderSupport.h 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderSupport.h 2013-10-24 18:41:42 UTC (rev 157940)
@@ -54,7 +54,7 @@
static void intersectRepaintRectWithShadows(const RenderObject*, FloatRect&);
// Calculates the repaintRect in combination with filter, clipper and masker in local coordinates.
- static void intersectRepaintRectWithResources(const RenderObject*, FloatRect&);
+ static void intersectRepaintRectWithResources(const RenderElement&, FloatRect&);
// Determines whether a container needs to be laid out because it's filtered and a child is being laid out.
static bool filtersForceContainerLayout(RenderObject*);
Modified: trunk/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp (157939 => 157940)
--- trunk/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp 2013-10-24 18:22:21 UTC (rev 157939)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp 2013-10-24 18:41:42 UTC (rev 157940)
@@ -649,7 +649,7 @@
writeNameAndQuotedValue(ts, "masker", svgStyle->maskerResource());
ts << " ";
writeStandardPrefix(ts, *masker, 0);
- ts << " " << masker->resourceBoundingBox(&renderer) << "\n";
+ ts << " " << masker->resourceBoundingBox(renderer) << "\n";
}
}
if (!svgStyle->clipperResource().isEmpty()) {
@@ -659,7 +659,7 @@
writeNameAndQuotedValue(ts, "clipPath", svgStyle->clipperResource());
ts << " ";
writeStandardPrefix(ts, *clipper, 0);
- ts << " " << clipper->resourceBoundingBox(&renderer) << "\n";
+ ts << " " << clipper->resourceBoundingBox(renderer) << "\n";
}
}
#if ENABLE(FILTERS)
@@ -670,7 +670,7 @@
writeNameAndQuotedValue(ts, "filter", svgStyle->filterResource());
ts << " ";
writeStandardPrefix(ts, *filter, 0);
- ts << " " << filter->resourceBoundingBox(&renderer) << "\n";
+ ts << " " << filter->resourceBoundingBox(renderer) << "\n";
}
}
#endif