| Index: Source/core/rendering/RenderTextFragment.cpp
|
| diff --git a/Source/core/rendering/RenderTextFragment.cpp b/Source/core/rendering/RenderTextFragment.cpp
|
| index 20f518f411efb627f41165815671c59eefc80566..1d274c83edadcc36139f909a24ac06316af0a676 100644
|
| --- a/Source/core/rendering/RenderTextFragment.cpp
|
| +++ b/Source/core/rendering/RenderTextFragment.cpp
|
| @@ -33,6 +33,7 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str, int startOff
|
| : RenderText(node, str ? str->substring(startOffset, length) : PassRefPtr<StringImpl>(nullptr))
|
| , m_start(startOffset)
|
| , m_end(length)
|
| + , m_contentString(str)
|
| , m_firstLetter(nullptr)
|
| {
|
| }
|
| @@ -65,10 +66,17 @@ RenderText* RenderTextFragment::firstRenderTextInFirstLetter() const
|
| return 0;
|
| }
|
|
|
| +void RenderTextFragment::setContentString(StringImpl* str)
|
| +{
|
| + m_contentString = str;
|
| + setText(str);
|
| +}
|
| +
|
| PassRefPtr<StringImpl> RenderTextFragment::originalText() const
|
| {
|
| - Node* e = node();
|
| - RefPtr<StringImpl> result = ((e && e->isTextNode()) ? toText(e)->dataImpl() : contentString());
|
| + RefPtr<StringImpl> result = RenderText::originalText();
|
| + if (!result)
|
| + result = m_contentString;
|
| if (!result)
|
| return nullptr;
|
| return result->substring(start(), end());
|
| @@ -102,7 +110,6 @@ void RenderTextFragment::setText(PassRefPtr<StringImpl> text, bool force)
|
| // layout. crbug.com/370458
|
| DeprecatedDisableModifyRenderTreeStructureAsserts disabler;
|
|
|
| - ASSERT(!m_contentString);
|
| m_firstLetter->destroy();
|
| m_firstLetter = nullptr;
|
| if (Node* t = node()) {
|
| @@ -122,8 +129,9 @@ void RenderTextFragment::transformText()
|
| UChar RenderTextFragment::previousCharacter() const
|
| {
|
| if (start()) {
|
| - Node* e = node();
|
| - StringImpl* original = ((e && e->isTextNode()) ? toText(e)->dataImpl() : contentString());
|
| + RefPtr<StringImpl> original = RenderText::originalText();
|
| + if (!original)
|
| + original = m_contentString;
|
| if (original && start() <= original->length())
|
| return (*original)[start() - 1];
|
| }
|
|
|