Index: Source/core/css/resolver/StyleAdjuster.cpp |
diff --git a/Source/core/css/resolver/StyleAdjuster.cpp b/Source/core/css/resolver/StyleAdjuster.cpp |
index 733e50a61fb46c2684ba9ef0e8434d79e1581285..19c3d4d940e1ea95ac68fb61ccf522425472266e 100644 |
--- a/Source/core/css/resolver/StyleAdjuster.cpp |
+++ b/Source/core/css/resolver/StyleAdjuster.cpp |
@@ -197,7 +197,9 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, const ComputedStyl |
// will-change:transform should result in the same rendering behavior as having a transform, |
// including the creation of a containing block for fixed position descendants. |
- if (!style.hasTransform() && (style.willChangeProperties().contains(CSSPropertyWebkitTransform) || style.willChangeProperties().contains(CSSPropertyTransform))) { |
+ // SVG elements can skip this because they implicitly have transforms. |
+ bool isSVGElement = e && e->isSVGElement(); |
+ if (!isSVGElement && !style.hasTransform() && (style.willChangeProperties().contains(CSSPropertyWebkitTransform) || style.willChangeProperties().contains(CSSPropertyTransform))) { |
bool makeIdentity = true; |
style.setTransform(TransformOperations(makeIdentity)); |
} |
@@ -228,7 +230,7 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, const ComputedStyl |
|| style.hasFilter())) |
style.setTransformStyle3D(TransformStyle3DFlat); |
- if (e && e->isSVGElement()) { |
+ if (isSVGElement) { |
// Only the root <svg> element in an SVG document fragment tree honors css position |
if (!(isSVGSVGElement(*e) && e->parentNode() && !e->parentNode()->isSVGElement())) |
style.setPosition(ComputedStyle::initialPosition()); |