[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.15.1-1414-gc69ee75

pfeldman at chromium.org pfeldman at chromium.org
Thu Oct 29 20:50:09 UTC 2009


The following commit has been merged in the webkit-1.1 branch:
commit acb70cddd9ada6e4034833da38f616e69fc8351b
Author: pfeldman at chromium.org <pfeldman at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Oct 22 19:15:36 2009 +0000

    2009-10-22  Pavel Feldman  <pfeldman at chromium.org>
    
            Reviewed by Timothy Hatcher.
    
            Web Inspector: Fix DOMAgent leak.
    
            https://bugs.webkit.org/show_bug.cgi?id=30615
    
            * inspector/InspectorController.cpp:
            (WebCore::InspectorController::~InspectorController):
            (WebCore::InspectorController::setFrontendProxyObject):
            (WebCore::InspectorController::close):
            (WebCore::InspectorController::releaseDOMAgent):
            * inspector/InspectorController.h:
            * inspector/InspectorDOMAgent.h:
            (WebCore::InspectorDOMAgent::create):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49950 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 63b4bf8..76faba2 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,20 @@
+2009-10-22  Pavel Feldman  <pfeldman at chromium.org>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Fix DOMAgent leak.
+
+        https://bugs.webkit.org/show_bug.cgi?id=30615
+
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::~InspectorController):
+        (WebCore::InspectorController::setFrontendProxyObject):
+        (WebCore::InspectorController::close):
+        (WebCore::InspectorController::releaseDOMAgent):
+        * inspector/InspectorController.h:
+        * inspector/InspectorDOMAgent.h:
+        (WebCore::InspectorDOMAgent::create):
+
 2009-10-22  Dimitri Glazkov  <dglazkov at chromium.org>
 
         Reviewed by Adam Barth.
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index c54a768..7509009 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -171,10 +171,7 @@ InspectorController::~InspectorController()
         s_settingCache = 0;
     }
     
-    // m_domAgent is RefPtr. Remove DOM listeners first to ensure that there are
-    // no references to the DOM agent from the DOM tree.
-    if (m_domAgent)
-        m_domAgent->setDocument(0);
+    releaseDOMAgent();
 
     m_inspectorBackend->disconnectController();
 }
@@ -557,7 +554,8 @@ void InspectorController::setFrontendProxyObject(ScriptState* scriptState, Scrip
     m_scriptState = scriptState;
     m_injectedScriptObj = injectedScriptObj;
     m_frontend.set(new InspectorFrontend(this, scriptState, webInspectorObj));
-    m_domAgent = new InspectorDOMAgent(m_frontend.get());
+    releaseDOMAgent();
+    m_domAgent = InspectorDOMAgent::create(m_frontend.get());
     m_timelineAgent = 0;
 }
 
@@ -613,11 +611,7 @@ void InspectorController::close()
 
     m_frontend.set(0);
     m_injectedScriptObj = ScriptObject();
-    // m_domAgent is RefPtr. Remove DOM listeners first to ensure that there are
-    // no references to the DOM agent from the DOM tree.
-    if (m_domAgent)
-        m_domAgent->setDocument(0);
-    m_domAgent = 0;
+    releaseDOMAgent();
     m_timelineAgent = 0;
     m_scriptState = 0;
     if (m_page)
@@ -647,6 +641,15 @@ void InspectorController::closeWindow()
     m_client->closeWindow();
 }
 
+void InspectorController::releaseDOMAgent()
+{
+    // m_domAgent is RefPtr. Remove DOM listeners first to ensure that there are
+    // no references to the DOM agent from the DOM tree.
+    if (m_domAgent)
+        m_domAgent->setDocument(0);
+    m_domAgent = 0;
+}
+
 void InspectorController::populateScriptObjects()
 {
     ASSERT(m_frontend);
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 8c14532..1f7e07e 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -300,6 +300,7 @@ private:
     void storeLastActivePanel(const String& panelName);
     void closeWindow();
     InspectorDOMAgent* domAgent() { return m_domAgent.get(); }
+    void releaseDOMAgent();
 
     friend class InspectorFrontend;
     // Following are used from InspectorFrontend only. We don't want to expose them to the
diff --git a/WebCore/inspector/InspectorDOMAgent.h b/WebCore/inspector/InspectorDOMAgent.h
index b9bdb6b..3f736f7 100644
--- a/WebCore/inspector/InspectorDOMAgent.h
+++ b/WebCore/inspector/InspectorDOMAgent.h
@@ -68,6 +68,11 @@ namespace WebCore {
 
     class InspectorDOMAgent : public EventListener {
     public:
+        static PassRefPtr<InspectorDOMAgent> create(InspectorFrontend* frontend)
+        {
+            return adoptRef(new InspectorDOMAgent(frontend));
+        }
+
         static const InspectorDOMAgent* cast(const EventListener* listener)
         {
             return listener->type() == InspectorDOMAgentType

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list