Index: Source/core/css/resolver/StyleAdjuster.cpp |
diff --git a/Source/core/css/resolver/StyleAdjuster.cpp b/Source/core/css/resolver/StyleAdjuster.cpp |
index ddc486e2911935341e95b48dedfddcfd04cb115a..ea0adfd5adacb3065e46e9a919226b7510e37cc5 100644 |
--- a/Source/core/css/resolver/StyleAdjuster.cpp |
+++ b/Source/core/css/resolver/StyleAdjuster.cpp |
@@ -98,14 +98,20 @@ static EDisplay equivalentBlockDisplay(EDisplay display, bool isFloating, bool s |
return BLOCK; |
} |
+static bool isOutermostSVGElement(const Element* e) |
+{ |
+ return e && e->isSVGElement() && toSVGElement(*e).isOutermostSVGSVGElement(); |
+} |
+ |
// CSS requires text-decoration to be reset at each DOM element for tables, |
// inline blocks, inline tables, shadow DOM crossings, floating elements, |
-// and absolute or relatively positioned elements. |
+// and absolute or relatively positioned elements. Outermost <svg> roots are |
+// considered to be atomic inline-level. |
static bool doesNotInheritTextDecoration(const ComputedStyle& style, const Element* e) |
{ |
return style.display() == TABLE || style.display() == INLINE_TABLE |
|| style.display() == INLINE_BLOCK || style.display() == INLINE_BOX || isAtShadowBoundary(e) |
- || style.isFloating() || style.hasOutOfFlowPosition(); |
+ || style.isFloating() || style.hasOutOfFlowPosition() || isOutermostSVGElement(e); |
} |
// FIXME: This helper is only needed because pseudoStyleForElement passes a null |