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/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;