Title: [95301] trunk
- Revision
- 95301
- Author
- infe...@chromium.org
- Date
- 2011-09-16 10:23:52 -0700 (Fri, 16 Sep 2011)
Log Message
cachedFont not getting updated for inline SVG text.
https://bugs.webkit.org/show_bug.cgi?id=68060
Reviewed by Nikolas Zimmermann.
Source/WebCore:
The cached scaledFont needs to be updated on every style set call. It
is not similar to m_style which can get derived from parent's style and
hence will get automatically updated on ancestor's style change. This is
required, otherwise we will maintain stale font list in cached scaledFont
when custom fonts are retired on Document::recalcStyle.
Test: svg/text/text-style-recalc-crash.html
* rendering/svg/RenderSVGInlineText.cpp:
(WebCore::RenderSVGInlineText::styleDidChange):
(WebCore::RenderSVGInlineText::setStyle):
* rendering/svg/RenderSVGInlineText.h:
LayoutTests:
* svg/text/text-style-recalc-crash-expected.txt: Added.
* svg/text/text-style-recalc-crash.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (95300 => 95301)
--- trunk/LayoutTests/ChangeLog 2011-09-16 16:58:38 UTC (rev 95300)
+++ trunk/LayoutTests/ChangeLog 2011-09-16 17:23:52 UTC (rev 95301)
@@ -1,3 +1,13 @@
+2011-09-16 Abhishek Arya <infe...@chromium.org>
+
+ cachedFont not getting updated for inline SVG text.
+ https://bugs.webkit.org/show_bug.cgi?id=68060
+
+ Reviewed by Nikolas Zimmermann.
+
+ * svg/text/text-style-recalc-crash-expected.txt: Added.
+ * svg/text/text-style-recalc-crash.html: Added.
+
2011-09-16 Csaba Osztrogonác <o...@webkit.org>
Unreviewed rolling out r95277.
Added: trunk/LayoutTests/svg/text/text-style-recalc-crash-expected.txt (0 => 95301)
--- trunk/LayoutTests/svg/text/text-style-recalc-crash-expected.txt (rev 0)
+++ trunk/LayoutTests/svg/text/text-style-recalc-crash-expected.txt 2011-09-16 17:23:52 UTC (rev 95301)
@@ -0,0 +1,3 @@
+Test passes if it does not crash.
+PASS
+
Added: trunk/LayoutTests/svg/text/text-style-recalc-crash.html (0 => 95301)
--- trunk/LayoutTests/svg/text/text-style-recalc-crash.html (rev 0)
+++ trunk/LayoutTests/svg/text/text-style-recalc-crash.html 2011-09-16 17:23:52 UTC (rev 95301)
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+Test passes if it does not crash.
+<svg viewBox="0 0 1 1">
+<font-face font-family="A">
+<font-face-src>
+<font-face-uri xlink:href=""
+</font-face-src>
+</font-face>
+<g font-family="A">
+<text>PASS</text>
+<script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ document.execCommand("SelectAll");
+</script>
+<g>
+<text></text>
+</g>
+</g>
+</svg>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (95300 => 95301)
--- trunk/Source/WebCore/ChangeLog 2011-09-16 16:58:38 UTC (rev 95300)
+++ trunk/Source/WebCore/ChangeLog 2011-09-16 17:23:52 UTC (rev 95301)
@@ -1,3 +1,23 @@
+2011-09-16 Abhishek Arya <infe...@chromium.org>
+
+ cachedFont not getting updated for inline SVG text.
+ https://bugs.webkit.org/show_bug.cgi?id=68060
+
+ Reviewed by Nikolas Zimmermann.
+
+ The cached scaledFont needs to be updated on every style set call. It
+ is not similar to m_style which can get derived from parent's style and
+ hence will get automatically updated on ancestor's style change. This is
+ required, otherwise we will maintain stale font list in cached scaledFont
+ when custom fonts are retired on Document::recalcStyle.
+
+ Test: svg/text/text-style-recalc-crash.html
+
+ * rendering/svg/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::styleDidChange):
+ (WebCore::RenderSVGInlineText::setStyle):
+ * rendering/svg/RenderSVGInlineText.h:
+
2011-09-16 Antti Koivisto <an...@apple.com>
REGRESSION (r95052): SelectorChecker identifier filter not working
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp (95300 => 95301)
--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp 2011-09-16 16:58:38 UTC (rev 95300)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp 2011-09-16 17:23:52 UTC (rev 95301)
@@ -87,8 +87,6 @@
// The text metrics may be influenced by style changes.
if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this))
textRenderer->setNeedsPositioningValuesUpdate();
-
- updateScaledFont();
}
const RenderStyle* newStyle = style();
@@ -223,6 +221,19 @@
return createVisiblePosition(offset + closestDistanceBox->start(), offset > 0 ? VP_UPSTREAM_IF_POSSIBLE : DOWNSTREAM);
}
+void RenderSVGInlineText::setStyle(PassRefPtr<RenderStyle> style)
+{
+ RenderText::setStyle(style);
+
+ // The cached scaledFont needs to be updated on every style set call. It
+ // is not similar to m_style which can get derived from parent's style and
+ // hence will get automatically updated on ancestor's style change. This is
+ // required, otherwise we will maintain stale font list in cached scaledFont
+ // when custom fonts are retired on Document::recalcStyle. See webkit bug
+ // https://bugs.webkit.org/show_bug.cgi?id=68060.
+ updateScaledFont();
+}
+
void RenderSVGInlineText::updateScaledFont()
{
computeNewScaledFontForStyle(this, style(), m_scalingFactor, m_scaledFont);
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h (95300 => 95301)
--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h 2011-09-16 16:58:38 UTC (rev 95300)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h 2011-09-16 17:23:52 UTC (rev 95301)
@@ -49,6 +49,8 @@
virtual const char* renderName() const { return "RenderSVGInlineText"; }
virtual void willBeDestroyed();
+
+ virtual void setStyle(PassRefPtr<RenderStyle>);
virtual void styleDidChange(StyleDifference, const RenderStyle*);
// FIXME: We need objectBoundingBox for DRT results and filters at the moment.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes