[SCM] WebKit Debian packaging branch, debian/experimental, updated. debian/1.3.8-1-142-g786665c
rniwa at webkit.org
rniwa at webkit.org
Mon Dec 27 16:28:44 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 5db4c53a5d9036df9f8d2e72f47e07bc0fd5f2cf
Author: rniwa at webkit.org <rniwa at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Dec 22 01:59:09 2010 +0000
2010-12-21 Ryosuke Niwa <rniwa at webkit.org>
Reviewed by Darin Adler.
CharacterData needs cleanup
https://bugs.webkit.org/show_bug.cgi?id=51426
Extracted CharacterData::setDataAndNotify and CharacterData::updateRenderer.
* dom/CharacterData.cpp:
(WebCore::CharacterData::setData): Calls setDataAndUpdate.
(WebCore::CharacterData::parserAppendData): Ditto.
(WebCore::CharacterData::appendData): Ditto.
(WebCore::CharacterData::insertData): Ditto.
(WebCore::CharacterData::deleteData): Ditto.
(WebCore::CharacterData::replaceData): Ditto.
(WebCore::CharacterData::setDataAndUpdate): Added.
(WebCore::CharacterData::updateRenderer): Added.
(WebCore::CharacterData::dispatchModifiedEvent): Renamed prevValue to oldData.
* dom/CharacterData.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74444 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 7706fc1..c96eb79 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,24 @@
+2010-12-21 Ryosuke Niwa <rniwa at webkit.org>
+
+ Reviewed by Darin Adler.
+
+ CharacterData needs cleanup
+ https://bugs.webkit.org/show_bug.cgi?id=51426
+
+ Extracted CharacterData::setDataAndNotify and CharacterData::updateRenderer.
+
+ * dom/CharacterData.cpp:
+ (WebCore::CharacterData::setData): Calls setDataAndUpdate.
+ (WebCore::CharacterData::parserAppendData): Ditto.
+ (WebCore::CharacterData::appendData): Ditto.
+ (WebCore::CharacterData::insertData): Ditto.
+ (WebCore::CharacterData::deleteData): Ditto.
+ (WebCore::CharacterData::replaceData): Ditto.
+ (WebCore::CharacterData::setDataAndUpdate): Added.
+ (WebCore::CharacterData::updateRenderer): Added.
+ (WebCore::CharacterData::dispatchModifiedEvent): Renamed prevValue to oldData.
+ * dom/CharacterData.h:
+
2010-12-21 Sheriff Bot <webkit.review.bot at gmail.com>
Unreviewed, rolling out r74420.
diff --git a/WebCore/dom/CharacterData.cpp b/WebCore/dom/CharacterData.cpp
index 0cb2847..3372c4c 100644
--- a/WebCore/dom/CharacterData.cpp
+++ b/WebCore/dom/CharacterData.cpp
@@ -36,18 +36,9 @@ void CharacterData::setData(const String& data, ExceptionCode&)
if (equal(m_data.get(), dataImpl))
return;
- int oldLength = length();
- RefPtr<StringImpl> oldStr = m_data;
- m_data = dataImpl;
-
- if ((!renderer() || !rendererIsNeeded(renderer()->style())) && attached()) {
- detach();
- attach();
- } else if (renderer())
- toRenderText(renderer())->setTextWithOffset(m_data, 0, oldLength);
-
- dispatchModifiedEvent(oldStr.get());
+ unsigned oldLength = length();
+ setDataAndUpdate(dataImpl, 0, oldLength);
document()->textRemoved(this, 0, oldLength);
}
@@ -60,26 +51,15 @@ String CharacterData::substringData(unsigned offset, unsigned count, ExceptionCo
return m_data->substring(offset, count);
}
-PassRefPtr<StringImpl> CharacterData::appendDataCommon(const String& data)
+void CharacterData::parserAppendData(const String& data)
{
String newStr = m_data;
newStr.append(data);
- RefPtr<StringImpl> oldStr = m_data;
+ int oldLength = m_data->length();
m_data = newStr.impl();
- if ((!renderer() || !rendererIsNeeded(renderer()->style())) && attached()) {
- detach();
- attach();
- } else if (renderer())
- toRenderText(renderer())->setTextWithOffset(m_data, oldStr->length(), 0);
-
- return oldStr.release();
-}
-
-void CharacterData::parserAppendData(const String& data)
-{
- appendDataCommon(data);
+ updateRenderer(oldLength, 0);
// We don't call dispatchModifiedEvent here because we don't want the
// parser to dispatch DOM mutation events.
if (parentNode())
@@ -88,8 +68,12 @@ void CharacterData::parserAppendData(const String& data)
void CharacterData::appendData(const String& data, ExceptionCode&)
{
- RefPtr<StringImpl> oldStr = appendDataCommon(data);
- dispatchModifiedEvent(oldStr.get());
+ String newStr = m_data;
+ newStr.append(data);
+
+ setDataAndUpdate(newStr.impl(), m_data->length(), 0);
+
+ // FIXME: Should we call textInserted here?
}
void CharacterData::insertData(unsigned offset, const String& data, ExceptionCode& ec)
@@ -101,17 +85,8 @@ void CharacterData::insertData(unsigned offset, const String& data, ExceptionCod
String newStr = m_data;
newStr.insert(data, offset);
- RefPtr<StringImpl> oldStr = m_data;
- m_data = newStr.impl();
+ setDataAndUpdate(newStr.impl(), offset, 0);
- if ((!renderer() || !rendererIsNeeded(renderer()->style())) && attached()) {
- detach();
- attach();
- } else if (renderer())
- toRenderText(renderer())->setTextWithOffset(m_data, offset, 0);
-
- dispatchModifiedEvent(oldStr.get());
-
document()->textInserted(this, offset, data.length());
}
@@ -130,16 +105,7 @@ void CharacterData::deleteData(unsigned offset, unsigned count, ExceptionCode& e
String newStr = m_data;
newStr.remove(offset, realCount);
- RefPtr<StringImpl> oldStr = m_data;
- m_data = newStr.impl();
-
- if ((!renderer() || !rendererIsNeeded(renderer()->style())) && attached()) {
- detach();
- attach();
- } else if (renderer())
- toRenderText(renderer())->setTextWithOffset(m_data, offset, count);
-
- dispatchModifiedEvent(oldStr.get());
+ setDataAndUpdate(newStr.impl(), offset, count);
document()->textRemoved(this, offset, realCount);
}
@@ -160,17 +126,8 @@ void CharacterData::replaceData(unsigned offset, unsigned count, const String& d
newStr.remove(offset, realCount);
newStr.insert(data, offset);
- RefPtr<StringImpl> oldStr = m_data;
- m_data = newStr.impl();
+ setDataAndUpdate(newStr.impl(), offset, count);
- if ((!renderer() || !rendererIsNeeded(renderer()->style())) && attached()) {
- detach();
- attach();
- } else if (renderer())
- toRenderText(renderer())->setTextWithOffset(m_data, offset, count);
-
- dispatchModifiedEvent(oldStr.get());
-
// update the markers for spell checking and grammar checking
document()->textRemoved(this, offset, realCount);
document()->textInserted(this, offset, data.length());
@@ -191,12 +148,29 @@ void CharacterData::setNodeValue(const String& nodeValue, ExceptionCode& ec)
setData(nodeValue, ec);
}
-void CharacterData::dispatchModifiedEvent(StringImpl* prevValue)
+void CharacterData::setDataAndUpdate(PassRefPtr<StringImpl> newData, unsigned offsetOfReplacedData, unsigned lengthOfReplacedData)
+{
+ RefPtr<StringImpl> oldData = m_data;
+ m_data = newData;
+ updateRenderer(offsetOfReplacedData, lengthOfReplacedData);
+ dispatchModifiedEvent(oldData.get());
+}
+
+void CharacterData::updateRenderer(unsigned offsetOfReplacedData, unsigned lengthOfReplacedData)
+{
+ if ((!renderer() || !rendererIsNeeded(renderer()->style())) && attached()) {
+ detach();
+ attach();
+ } else if (renderer())
+ toRenderText(renderer())->setTextWithOffset(m_data, offsetOfReplacedData, lengthOfReplacedData);
+}
+
+void CharacterData::dispatchModifiedEvent(StringImpl* oldData)
{
if (parentNode())
parentNode()->childrenChanged();
if (document()->hasListenerType(Document::DOMCHARACTERDATAMODIFIED_LISTENER))
- dispatchEvent(MutationEvent::create(eventNames().DOMCharacterDataModifiedEvent, true, 0, prevValue, m_data));
+ dispatchEvent(MutationEvent::create(eventNames().DOMCharacterDataModifiedEvent, true, 0, oldData, m_data));
dispatchSubtreeModifiedEvent();
#if ENABLE(INSPECTOR)
InspectorInstrumentation::characterDataModified(document(), this);
diff --git a/WebCore/dom/CharacterData.h b/WebCore/dom/CharacterData.h
index 94e812b..32856d1 100644
--- a/WebCore/dom/CharacterData.h
+++ b/WebCore/dom/CharacterData.h
@@ -64,9 +64,9 @@ private:
virtual bool isCharacterDataNode() const { return true; }
virtual int maxCharacterOffset() const;
virtual bool offsetInCharacters() const;
-
+ void setDataAndUpdate(PassRefPtr<StringImpl>, unsigned offsetOfReplacedData, unsigned lengthOfReplacedData);
+ void updateRenderer(unsigned offsetOfReplacedData, unsigned lengthOfReplacedData);
void checkCharDataOperation(unsigned offset, ExceptionCode&);
- PassRefPtr<StringImpl> appendDataCommon(const String&);
RefPtr<StringImpl> m_data;
};
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list