Index: third_party/WebKit/Source/core/svg/SVGElement.cpp |
diff --git a/third_party/WebKit/Source/core/svg/SVGElement.cpp b/third_party/WebKit/Source/core/svg/SVGElement.cpp |
index 88b13cabd79b091f5a2cf4d69f8c1e4987973a16..41ce743cf7e10c025ac8df688eef8c7798bf9d70 100644 |
--- a/third_party/WebKit/Source/core/svg/SVGElement.cpp |
+++ b/third_party/WebKit/Source/core/svg/SVGElement.cpp |
@@ -1026,6 +1026,27 @@ PassRefPtr<ComputedStyle> SVGElement::customStyleForLayoutObject() { |
correspondingElement(), style, DisallowStyleSharing); |
} |
+bool SVGElement::layoutObjectIsNeeded(const ComputedStyle& style) { |
+ // SVG elements only render when inside <svg>, or if the element is an <svg> |
+ // itself. |
+ if (!isSVGSVGElement(*this) && |
+ (!parentNode() || !parentNode()->isSVGElement())) { |
+ return false; |
+ } |
+ |
+ if (!isValid()) |
+ return false; |
+ |
+ // Ignore display: contents, since it isn't really specified for SVG and Gecko |
+ // doesn't take display into account at all for SVG (except display: none). |
+ // |
+ // [1]: https://www.w3.org/TR/SVG/painting.html#DisplayProperty |
+ if (style.display() == EDisplay::Contents) |
+ return true; |
+ |
+ return Element::layoutObjectIsNeeded(style); |
+} |
+ |
MutableStylePropertySet* SVGElement::animatedSMILStyleProperties() const { |
if (hasSVGRareData()) |
return svgRareData()->animatedSMILStyleProperties(); |