Title: [135713] trunk/Source/WebCore
Revision
135713
Author
yu...@chromium.org
Date
2012-11-26 06:06:58 -0800 (Mon, 26 Nov 2012)

Log Message

Web Inspector: unify agents handling in Page and Worker inspector controllers
https://bugs.webkit.org/show_bug.cgi?id=103238

Reviewed by Alexander Pavlov.

Introduced a class that represents a collection of inspector agents and allows
to call methods declared on InspectorAgentBaseInterface for all registered agents.
InspectorController and WorkerInspectorController switched to this class.

* inspector/InspectorBaseAgent.cpp:
(WebCore::InspectorAgentRegistry::append):
(WebCore):
(WebCore::InspectorAgentRegistry::setFrontend):
(WebCore::InspectorAgentRegistry::clearFrontend):
(WebCore::InspectorAgentRegistry::restore):
(WebCore::InspectorAgentRegistry::registerInDispatcher):
(WebCore::InspectorAgentRegistry::discardAgents):
* inspector/InspectorBaseAgent.h:
(InspectorAgentRegistry):
(WebCore):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::~InspectorController):
(WebCore::InspectorController::connectFrontend):
(WebCore::InspectorController::disconnectFrontend):
(WebCore::InspectorController::reconnectFrontend):
* inspector/InspectorController.h:
(InspectorController):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (135712 => 135713)


--- trunk/Source/WebCore/ChangeLog	2012-11-26 14:01:44 UTC (rev 135712)
+++ trunk/Source/WebCore/ChangeLog	2012-11-26 14:06:58 UTC (rev 135713)
@@ -1,3 +1,33 @@
+2012-11-26  Yury Semikhatsky  <yu...@chromium.org>
+
+        Web Inspector: unify agents handling in Page and Worker inspector controllers
+        https://bugs.webkit.org/show_bug.cgi?id=103238
+
+        Reviewed by Alexander Pavlov.
+
+        Introduced a class that represents a collection of inspector agents and allows
+        to call methods declared on InspectorAgentBaseInterface for all registered agents.
+        InspectorController and WorkerInspectorController switched to this class.
+
+        * inspector/InspectorBaseAgent.cpp:
+        (WebCore::InspectorAgentRegistry::append):
+        (WebCore):
+        (WebCore::InspectorAgentRegistry::setFrontend):
+        (WebCore::InspectorAgentRegistry::clearFrontend):
+        (WebCore::InspectorAgentRegistry::restore):
+        (WebCore::InspectorAgentRegistry::registerInDispatcher):
+        (WebCore::InspectorAgentRegistry::discardAgents):
+        * inspector/InspectorBaseAgent.h:
+        (InspectorAgentRegistry):
+        (WebCore):
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::~InspectorController):
+        (WebCore::InspectorController::connectFrontend):
+        (WebCore::InspectorController::disconnectFrontend):
+        (WebCore::InspectorController::reconnectFrontend):
+        * inspector/InspectorController.h:
+        (InspectorController):
+
 2012-11-26  Pavel Feldman  <pfeld...@chromium.org>
 
         Web Inspector: object preview does not render node id, className; logs too many functions for jQuery.

Modified: trunk/Source/WebCore/inspector/InspectorBaseAgent.cpp (135712 => 135713)


--- trunk/Source/WebCore/inspector/InspectorBaseAgent.cpp	2012-11-26 14:01:44 UTC (rev 135712)
+++ trunk/Source/WebCore/inspector/InspectorBaseAgent.cpp	2012-11-26 14:06:58 UTC (rev 135713)
@@ -57,6 +57,41 @@
     info.addWeakPointer(m_state);
 }
 
+void InspectorAgentRegistry::append(PassOwnPtr<InspectorBaseAgentInterface> agent)
+{
+    m_agents.append(agent);
+}
+
+void InspectorAgentRegistry::setFrontend(InspectorFrontend* frontend)
+{
+    for (size_t i = 0; i < m_agents.size(); i++)
+        m_agents[i]->setFrontend(frontend);
+}
+
+void InspectorAgentRegistry::clearFrontend()
+{
+    for (size_t i = 0; i < m_agents.size(); i++)
+        m_agents[i]->clearFrontend();
+}
+
+void InspectorAgentRegistry::restore()
+{
+    for (size_t i = 0; i < m_agents.size(); i++)
+        m_agents[i]->restore();
+}
+
+void InspectorAgentRegistry::registerInDispatcher(InspectorBackendDispatcher* dispatcher)
+{
+    for (size_t i = 0; i < m_agents.size(); i++)
+        m_agents[i]->registerInDispatcher(dispatcher);
+}
+
+void InspectorAgentRegistry::discardAgents()
+{
+    for (size_t i = 0; i < m_agents.size(); i++)
+        m_agents[i]->discardAgent();
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(INSPECTOR)

Modified: trunk/Source/WebCore/inspector/InspectorBaseAgent.h (135712 => 135713)


--- trunk/Source/WebCore/inspector/InspectorBaseAgent.h	2012-11-26 14:01:44 UTC (rev 135712)
+++ trunk/Source/WebCore/inspector/InspectorBaseAgent.h	2012-11-26 14:06:58 UTC (rev 135713)
@@ -65,6 +65,20 @@
     String m_name;
 };
 
+class InspectorAgentRegistry {
+public:
+    void append(PassOwnPtr<InspectorBaseAgentInterface>);
+
+    void setFrontend(InspectorFrontend*);
+    void clearFrontend();
+    void restore();
+    void registerInDispatcher(InspectorBackendDispatcher*);
+    void discardAgents();
+
+private:
+    Vector<OwnPtr<InspectorBaseAgentInterface> > m_agents;
+};
+
 template<typename T>
 class InspectorBaseAgent : public InspectorBaseAgentInterface {
 public:

Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (135712 => 135713)


--- trunk/Source/WebCore/inspector/InspectorController.cpp	2012-11-26 14:01:44 UTC (rev 135712)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp	2012-11-26 14:06:58 UTC (rev 135713)
@@ -171,9 +171,7 @@
 
 InspectorController::~InspectorController()
 {
-    for (Agents::iterator it = m_agents.begin(); it != m_agents.end(); ++it)
-        (*it)->discardAgent();
-
+    m_agents.discardAgents();
     ASSERT(!m_inspectorClient);
 }
 
@@ -221,18 +219,14 @@
     // We can reconnect to existing front-end -> unmute state.
     m_state->unmute();
 
-    InspectorFrontend* frontend = m_inspectorFrontend.get();
-    for (Agents::iterator it = m_agents.begin(); it != m_agents.end(); ++it)
-        (*it)->setFrontend(frontend);
+    m_agents.setFrontend(m_inspectorFrontend.get());
 
     InspectorInstrumentation::frontendCreated();
 
     ASSERT(m_inspectorClient);
     m_inspectorBackendDispatcher = InspectorBackendDispatcher::create(frontendChannel);
 
-    InspectorBackendDispatcher* dispatcher = m_inspectorBackendDispatcher.get();
-    for (Agents::iterator it = m_agents.begin(); it != m_agents.end(); ++it)
-        (*it)->registerInDispatcher(dispatcher);
+    m_agents.registerInDispatcher(m_inspectorBackendDispatcher.get());
 }
 
 void InspectorController::disconnectFrontend()
@@ -246,8 +240,7 @@
     // Pre-disconnect state will be used to restore inspector agents.
     m_state->mute();
 
-    for (Agents::iterator it = m_agents.begin(); it != m_agents.end(); ++it)
-        (*it)->clearFrontend();
+    m_agents.clearFrontend();
 
     m_inspectorFrontend.clear();
 
@@ -281,9 +274,7 @@
     ASSERT(!m_inspectorFrontend);
     connectFrontend(frontendChannel);
     m_state->loadFromCookie(inspectorStateCookie);
-
-    for (Agents::iterator it = m_agents.begin(); it != m_agents.end(); ++it)
-        (*it)->restore();
+    m_agents.restore();
 }
 
 void InspectorController::setProcessId(long processId)

Modified: trunk/Source/WebCore/inspector/InspectorController.h (135712 => 135713)


--- trunk/Source/WebCore/inspector/InspectorController.h	2012-11-26 14:01:44 UTC (rev 135712)
+++ trunk/Source/WebCore/inspector/InspectorController.h	2012-11-26 14:06:58 UTC (rev 135713)
@@ -31,6 +31,7 @@
 #ifndef InspectorController_h
 #define InspectorController_h
 
+#include "InspectorBaseAgent.h"
 #include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/Noncopyable.h>
@@ -141,8 +142,7 @@
     OwnPtr<InspectorFrontend> m_inspectorFrontend;
     Page* m_page;
     InspectorClient* m_inspectorClient;
-    typedef Vector<OwnPtr<InspectorBaseAgentInterface> > Agents;
-    Agents m_agents;
+    InspectorAgentRegistry m_agents;
 };
 
 }

Modified: trunk/Source/WebCore/inspector/WorkerInspectorController.cpp (135712 => 135713)


--- trunk/Source/WebCore/inspector/WorkerInspectorController.cpp	2012-11-26 14:01:44 UTC (rev 135712)
+++ trunk/Source/WebCore/inspector/WorkerInspectorController.cpp	2012-11-26 14:06:58 UTC (rev 135713)
@@ -96,16 +96,23 @@
     , m_state(adoptPtr(new InspectorState(m_stateClient.get())))
     , m_instrumentingAgents(adoptPtr(new InstrumentingAgents()))
     , m_injectedScriptManager(InjectedScriptManager::createForWorker())
+    , m_runtimeAgent(0)
 {
+    OwnPtr<InspectorRuntimeAgent> runtimeAgent = WorkerRuntimeAgent::create(m_instrumentingAgents.get(), m_state.get(), m_injectedScriptManager.get(), workerContext);
+    m_runtimeAgent = runtimeAgent.get();
+    m_agents.append(runtimeAgent.release());
 
-    m_runtimeAgent = WorkerRuntimeAgent::create(m_instrumentingAgents.get(), m_state.get(), m_injectedScriptManager.get(), workerContext);
-    m_consoleAgent = WorkerConsoleAgent::create(m_instrumentingAgents.get(), m_state.get(), m_injectedScriptManager.get());
-
+    OwnPtr<InspectorConsoleAgent> consoleAgent = WorkerConsoleAgent::create(m_instrumentingAgents.get(), m_state.get(), m_injectedScriptManager.get());
 #if ENABLE(_javascript__DEBUGGER)
-    m_debuggerAgent = WorkerDebuggerAgent::create(m_instrumentingAgents.get(), m_state.get(), workerContext, m_injectedScriptManager.get());
-    m_profilerAgent = InspectorProfilerAgent::create(m_instrumentingAgents.get(), m_consoleAgent.get(), workerContext, m_state.get(), m_injectedScriptManager.get());
+    OwnPtr<InspectorDebuggerAgent> debuggerAgent = WorkerDebuggerAgent::create(m_instrumentingAgents.get(), m_state.get(), workerContext, m_injectedScriptManager.get());
+    InspectorDebuggerAgent* debuggerAgentPtr = debuggerAgent.get();
+    m_runtimeAgent->setScriptDebugServer(&debuggerAgent->scriptDebugServer());
+    m_agents.append(debuggerAgent.release());
+
+    m_agents.append(InspectorProfilerAgent::create(m_instrumentingAgents.get(), consoleAgent.get(), workerContext, m_state.get(), m_injectedScriptManager.get()));
 #endif
-    m_timelineAgent = InspectorTimelineAgent::create(m_instrumentingAgents.get(), 0, m_state.get(), InspectorTimelineAgent::WorkerInspector, 0);
+    m_agents.append(InspectorTimelineAgent::create(m_instrumentingAgents.get(), 0, m_state.get(), InspectorTimelineAgent::WorkerInspector, 0));
+    m_agents.append(consoleAgent.release());
 
     m_injectedScriptManager->injectedScriptHost()->init(0
         , 0
@@ -115,13 +122,9 @@
         , 0
         , 0
 #if ENABLE(_javascript__DEBUGGER)
-        , m_debuggerAgent.get()
+        , debuggerAgentPtr
 #endif
     );
-
-#if ENABLE(_javascript__DEBUGGER)
-    m_runtimeAgent->setScriptDebugServer(&m_debuggerAgent->scriptDebugServer());
-#endif
 }
  
 WorkerInspectorController::~WorkerInspectorController()
@@ -136,20 +139,8 @@
     m_frontendChannel = adoptPtr(new PageInspectorProxy(m_workerContext));
     m_frontend = adoptPtr(new InspectorFrontend(m_frontendChannel.get()));
     m_backendDispatcher = InspectorBackendDispatcher::create(m_frontendChannel.get());
-    m_consoleAgent->registerInDispatcher(m_backendDispatcher.get());
-    m_timelineAgent->registerInDispatcher(m_backendDispatcher.get());
-#if ENABLE(_javascript__DEBUGGER)
-    m_debuggerAgent->registerInDispatcher(m_backendDispatcher.get());
-    m_profilerAgent->registerInDispatcher(m_backendDispatcher.get());
-#endif
-    m_runtimeAgent->registerInDispatcher(m_backendDispatcher.get());
-
-#if ENABLE(_javascript__DEBUGGER)
-    m_debuggerAgent->setFrontend(m_frontend.get());
-    m_profilerAgent->setFrontend(m_frontend.get());
-#endif
-    m_consoleAgent->setFrontend(m_frontend.get());
-    m_timelineAgent->setFrontend(m_frontend.get());
+    m_agents.registerInDispatcher(m_backendDispatcher.get());
+    m_agents.setFrontend(m_frontend.get());
 }
 
 void WorkerInspectorController::disconnectFrontend()
@@ -161,13 +152,7 @@
     // Destroying agents would change the state, but we don't want that.
     // Pre-disconnect state will be used to restore inspector agents.
     m_state->mute();
-#if ENABLE(_javascript__DEBUGGER)
-    m_debuggerAgent->clearFrontend();
-    m_profilerAgent->clearFrontend();
-#endif
-    m_consoleAgent->clearFrontend();
-    m_timelineAgent->clearFrontend();
-
+    m_agents.clearFrontend();
     m_frontend.clear();
     m_frontendChannel.clear();
 }
@@ -178,12 +163,7 @@
     connectFrontend();
     m_state->loadFromCookie(inspectorCookie);
 
-#if ENABLE(_javascript__DEBUGGER)
-    m_debuggerAgent->restore();
-    m_profilerAgent->restore();
-#endif
-    m_consoleAgent->restore();
-    m_timelineAgent->restore();
+    m_agents.restore();
 }
 
 void WorkerInspectorController::dispatchMessageFromFrontend(const String& message)

Modified: trunk/Source/WebCore/inspector/WorkerInspectorController.h (135712 => 135713)


--- trunk/Source/WebCore/inspector/WorkerInspectorController.h	2012-11-26 14:01:44 UTC (rev 135712)
+++ trunk/Source/WebCore/inspector/WorkerInspectorController.h	2012-11-26 14:06:58 UTC (rev 135713)
@@ -33,6 +33,7 @@
 
 #if ENABLE(INSPECTOR) && ENABLE(WORKERS)
 
+#include "InspectorBaseAgent.h"
 #include <wtf/FastAllocBase.h>
 #include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
@@ -42,20 +43,13 @@
 namespace WebCore {
 
 class InjectedScriptManager;
-#if ENABLE(_javascript__DEBUGGER)
-class InspectorDebuggerAgent;
-#endif
 class InspectorBackendDispatcher;
-class InspectorConsoleAgent;
 class InspectorFrontend;
 class InspectorFrontendChannel;
-class InspectorConsoleAgent;
 class InspectorInstrumentation;
-class InspectorProfilerAgent;
 class InspectorRuntimeAgent;
 class InspectorState;
 class InspectorStateClient;
-class InspectorTimelineAgent;
 class InstrumentingAgents;
 class WorkerContext;
 
@@ -83,14 +77,8 @@
     OwnPtr<InspectorState> m_state;
     OwnPtr<InstrumentingAgents> m_instrumentingAgents;
     OwnPtr<InjectedScriptManager> m_injectedScriptManager;
-#if ENABLE(_javascript__DEBUGGER)
-    OwnPtr<InspectorDebuggerAgent> m_debuggerAgent;
-    OwnPtr<InspectorProfilerAgent> m_profilerAgent;
-#endif
-    OwnPtr<InspectorRuntimeAgent> m_runtimeAgent;
-    OwnPtr<InspectorConsoleAgent> m_consoleAgent;
-    OwnPtr<InspectorTimelineAgent> m_timelineAgent;
-
+    InspectorRuntimeAgent* m_runtimeAgent;
+    InspectorAgentRegistry m_agents;
     OwnPtr<InspectorFrontendChannel> m_frontendChannel;
     OwnPtr<InspectorFrontend> m_frontend;
     RefPtr<InspectorBackendDispatcher> m_backendDispatcher;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to