[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