Diff
Modified: trunk/LayoutTests/ChangeLog (169010 => 169011)
--- trunk/LayoutTests/ChangeLog 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/LayoutTests/ChangeLog 2014-05-18 10:51:53 UTC (rev 169011)
@@ -1,3 +1,13 @@
+2014-05-18 Antti Koivisto <[email protected]>
+
+ REGRESSION (r160259): text-combine glyphs are not rendered
+ https://bugs.webkit.org/show_bug.cgi?id=127324
+
+ Reviewed by Andreas Kling.
+
+ * fast/text/text-combine-rendering-expected.html: Added.
+ * fast/text/text-combine-rendering.html: Added.
+
2014-05-17 Maciej Stachowiak <[email protected]>
Don't attempt to update id or name for nodes that are already removed
Added: trunk/LayoutTests/fast/text/text-combine-rendering-expected.html (0 => 169011)
--- trunk/LayoutTests/fast/text/text-combine-rendering-expected.html (rev 0)
+++ trunk/LayoutTests/fast/text/text-combine-rendering-expected.html 2014-05-18 10:51:53 UTC (rev 169011)
@@ -0,0 +1,5 @@
+<link rel="stylesheet" href="" />
+<style>
+body { font-family: myahem; color: green}
+</style>
+x
Added: trunk/LayoutTests/fast/text/text-combine-rendering.html (0 => 169011)
--- trunk/LayoutTests/fast/text/text-combine-rendering.html (rev 0)
+++ trunk/LayoutTests/fast/text/text-combine-rendering.html 2014-05-18 10:51:53 UTC (rev 169011)
@@ -0,0 +1,6 @@
+<link rel="stylesheet" href="" />
+<style>
+body { -webkit-writing-mode: vertical-lr; font-family: myahem; color: green }
+.combine { -webkit-text-combine: horizontal }
+</style>
+<span class="combine">x</span>
Modified: trunk/Source/WebCore/ChangeLog (169010 => 169011)
--- trunk/Source/WebCore/ChangeLog 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/ChangeLog 2014-05-18 10:51:53 UTC (rev 169011)
@@ -1,3 +1,43 @@
+2014-05-18 Antti Koivisto <[email protected]>
+
+ REGRESSION (r160259): text-combine glyphs are not rendered
+ https://bugs.webkit.org/show_bug.cgi?id=127324
+
+ Reviewed by Andreas Kling.
+
+ The original text gets overwritten by a change that is supposed to affect rendered text only.
+ Fixed by giving the text update functions well-defined purposes.
+
+ Test: fast/text/text-combine-rendering.html
+
+ * rendering/RenderCombineText.cpp:
+ (WebCore::RenderCombineText::styleDidChange):
+ (WebCore::RenderCombineText::setRenderedText):
+ (WebCore::RenderCombineText::combineText):
+ (WebCore::RenderCombineText::setTextInternal): Deleted.
+ * rendering/RenderCombineText.h:
+ * rendering/RenderCounter.cpp:
+ (WebCore::RenderCounter::computePreferredLogicalWidths):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::setRenderedText):
+
+ This function now updates the rendered text but does not change the original.
+ Get the original text by calling originalText().
+
+ (WebCore::RenderText::setText):
+
+ This the only place original text now changes.
+
+ (WebCore::RenderText::setTextInternal): Deleted.
+
+ Renamed to setRenderedText.
+
+ * rendering/RenderText.h:
+ * rendering/svg/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::setRenderedText):
+ (WebCore::RenderSVGInlineText::setTextInternal): Deleted.
+ * rendering/svg/RenderSVGInlineText.h:
+
2014-05-17 Maciej Stachowiak <[email protected]>
Don't attempt to update id or name for nodes that are already removed
Modified: trunk/Source/WebCore/rendering/RenderCombineText.cpp (169010 => 169011)
--- trunk/Source/WebCore/rendering/RenderCombineText.cpp 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/rendering/RenderCombineText.cpp 2014-05-18 10:51:53 UTC (rev 169011)
@@ -44,16 +44,16 @@
RenderText::styleDidChange(diff, oldStyle);
if (m_isCombined) {
- RenderText::setTextInternal(originalText()); // This RenderCombineText has been combined once. Restore the original text for the next combineText().
+ RenderText::setRenderedText(originalText()); // This RenderCombineText has been combined once. Restore the original text for the next combineText().
m_isCombined = false;
}
m_needsFontUpdate = true;
}
-void RenderCombineText::setTextInternal(const String& text)
+void RenderCombineText::setRenderedText(const String& text)
{
- RenderText::setTextInternal(text);
+ RenderText::setRenderedText(text);
m_needsFontUpdate = true;
}
@@ -137,7 +137,7 @@
if (m_isCombined) {
DEPRECATED_DEFINE_STATIC_LOCAL(String, objectReplacementCharacterString, (&objectReplacementCharacter, 1));
- RenderText::setTextInternal(objectReplacementCharacterString.impl());
+ RenderText::setRenderedText(objectReplacementCharacterString.impl());
}
}
Modified: trunk/Source/WebCore/rendering/RenderCombineText.h (169010 => 169011)
--- trunk/Source/WebCore/rendering/RenderCombineText.h 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/rendering/RenderCombineText.h 2014-05-18 10:51:53 UTC (rev 169011)
@@ -49,7 +49,7 @@
virtual float width(unsigned from, unsigned length, const Font&, float xPosition, HashSet<const SimpleFontData*>* fallbackFonts = 0, GlyphOverflow* = 0) const;
virtual const char* renderName() const { return "RenderCombineText"; }
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
- virtual void setTextInternal(const String&) override;
+ virtual void setRenderedText(const String&) override;
RefPtr<RenderStyle> m_combineFontStyle;
float m_combinedTextWidth;
Modified: trunk/Source/WebCore/rendering/RenderCounter.cpp (169010 => 169011)
--- trunk/Source/WebCore/rendering/RenderCounter.cpp 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/rendering/RenderCounter.cpp 2014-05-18 10:51:53 UTC (rev 169011)
@@ -436,7 +436,7 @@
SetLayoutNeededForbiddenScope layoutForbiddenScope(this, false);
#endif
- setTextInternal(originalText());
+ setRenderedText(originalText());
RenderText::computePreferredLogicalWidths(lead);
}
Modified: trunk/Source/WebCore/rendering/RenderText.cpp (169010 => 169011)
--- trunk/Source/WebCore/rendering/RenderText.cpp 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/rendering/RenderText.cpp 2014-05-18 10:51:53 UTC (rev 169011)
@@ -1017,15 +1017,11 @@
}
}
-void RenderText::setTextInternal(const String& text)
+void RenderText::setRenderedText(const String& text)
{
ASSERT(!text.isNull());
- if (m_originalTextDiffersFromRendered) {
- originalTextMap().remove(this);
- m_originalTextDiffersFromRendered = false;
- }
- String originalText = text;
+ String originalText = this->originalText();
m_text = text;
@@ -1069,8 +1065,11 @@
m_canUseSimpleFontCodePath = computeCanUseSimpleFontCodePath();
if (m_text != originalText) {
- originalTextMap().add(this, originalText);
+ originalTextMap().set(this, originalText);
m_originalTextDiffersFromRendered = true;
+ } else if (m_originalTextDiffersFromRendered) {
+ originalTextMap().remove(this);
+ m_originalTextDiffersFromRendered = false;
}
}
@@ -1103,7 +1102,14 @@
if (!force && text == originalText())
return;
- setTextInternal(text);
+ m_text = text;
+ if (m_originalTextDiffersFromRendered) {
+ originalTextMap().remove(this);
+ m_originalTextDiffersFromRendered = false;
+ }
+
+ setRenderedText(text);
+
setNeedsLayoutAndPrefWidthsRecalc();
m_knownToHaveNoOverflowAndNoFallbackFonts = false;
Modified: trunk/Source/WebCore/rendering/RenderText.h (169010 => 169011)
--- trunk/Source/WebCore/rendering/RenderText.h 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/rendering/RenderText.h 2014-05-18 10:51:53 UTC (rev 169011)
@@ -158,7 +158,7 @@
virtual void computePreferredLogicalWidths(float leadWidth);
virtual void willBeDestroyed() override;
- virtual void setTextInternal(const String&);
+ virtual void setRenderedText(const String&);
virtual UChar previousCharacter() const;
private:
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp (169010 => 169011)
--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp 2014-05-18 10:51:53 UTC (rev 169011)
@@ -77,9 +77,9 @@
return textNode().data();
}
-void RenderSVGInlineText::setTextInternal(const String& text)
+void RenderSVGInlineText::setRenderedText(const String& text)
{
- RenderText::setTextInternal(text);
+ RenderText::setRenderedText(text);
if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
textAncestor->subtreeTextDidChange(this);
}
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h (169010 => 169011)
--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h 2014-05-18 07:57:27 UTC (rev 169010)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h 2014-05-18 10:51:53 UTC (rev 169011)
@@ -52,7 +52,7 @@
virtual const char* renderName() const override { return "RenderSVGInlineText"; }
virtual String originalText() const override;
- virtual void setTextInternal(const String&) override;
+ virtual void setRenderedText(const String&) override;
virtual void styleDidChange(StyleDifference, const RenderStyle*) override;
virtual FloatRect objectBoundingBox() const override { return floatLinesBoundingBox(); }