diff options
Diffstat (limited to 'Source/WebCore/dom/CharacterData.cpp')
-rw-r--r-- | Source/WebCore/dom/CharacterData.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Source/WebCore/dom/CharacterData.cpp b/Source/WebCore/dom/CharacterData.cpp index 91f5ac70f..b613ab97c 100644 --- a/Source/WebCore/dom/CharacterData.cpp +++ b/Source/WebCore/dom/CharacterData.cpp @@ -33,6 +33,7 @@ #include "NodeRenderingContext.h" #include "RenderText.h" #include "TextBreakIterator.h" +#include "UndoManager.h" using namespace std; @@ -96,7 +97,7 @@ void CharacterData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const { MemoryClassInfo info(memoryObjectInfo, this, MemoryInstrumentation::DOM); Node::reportMemoryUsage(memoryObjectInfo); - info.addMember(m_data); + info.addInstrumentedMember(m_data); } void CharacterData::appendData(const String& data, ExceptionCode&) @@ -183,6 +184,13 @@ void CharacterData::setNodeValue(const String& nodeValue, ExceptionCode& ec) void CharacterData::setDataAndUpdate(const String& newData, unsigned offsetOfReplacedData, unsigned oldLength, unsigned newLength) { +#if ENABLE(UNDO_MANAGER) + if (UndoManager::isRecordingAutomaticTransaction(this)) { + const String& replacingData = newData.substring(offsetOfReplacedData, newLength); + const String& replacedData = m_data.substring(offsetOfReplacedData, oldLength); + UndoManager::addTransactionStep(DataReplacingDOMTransactionStep::create(this, offsetOfReplacedData, oldLength, replacingData, replacedData)); + } +#endif String oldData = m_data; m_data = newData; |