Index: third_party/WebKit/Source/core/layout/svg/LayoutSVGHiddenContainer.cpp |
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGHiddenContainer.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGHiddenContainer.cpp |
index 3961d888d0349e6063e00be58bc349481b706f29..d1979aa6d556e40dc767737975409630113c1d3a 100644 |
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGHiddenContainer.cpp |
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGHiddenContainer.cpp |
@@ -35,7 +35,13 @@ void LayoutSVGHiddenContainer::layout() |
LayoutAnalyzer::Scope analyzer(*this); |
// TODO(fs): In what cases do we need this? |
bool transformChanged = SVGLayoutSupport::transformToRootChanged(this); |
- SVGLayoutSupport::layoutChildren(this, selfNeedsLayout(), transformChanged); |
+ |
+ // When hasRelativeLengths() is false, no descendants have relative lengths |
+ // (hence no one is interested in viewport size changes). |
+ bool layoutSizeChanged = element()->hasRelativeLengths() |
+ && SVGLayoutSupport::layoutSizeOfNearestViewportChanged(this); |
+ |
+ SVGLayoutSupport::layoutChildren(this, selfNeedsLayout(), transformChanged, layoutSizeChanged); |
updateCachedBoundaries(); |
clearNeedsLayout(); |
} |