Commit 2cd7f315 authored by dgozman's avatar dgozman Committed by Commit bot

[DevTools] Create agents on attach.

To support multiple attached devtools, we have to instantiate
individual agents on demand, rather than on creation.
This patch moves regular of agents, with view-specific and worker's left.

BUG=590878

Review URL: https://codereview.chromium.org/1834073002

Cr-Commit-Position: refs/heads/master@{#383833}
parent d993d51b
...@@ -123,8 +123,8 @@ void InspectorAgentRegistry::registerInDispatcher(protocol::Dispatcher* dispatch ...@@ -123,8 +123,8 @@ void InspectorAgentRegistry::registerInDispatcher(protocol::Dispatcher* dispatch
void InspectorAgentRegistry::discardAgents() void InspectorAgentRegistry::discardAgents()
{ {
for (size_t i = 0; i < m_agents.size(); i++) for (size_t i = m_agents.size(); i > 0; i--)
m_agents[i]->discardAgent(); m_agents[i - 1]->discardAgent();
} }
void InspectorAgentRegistry::flushPendingProtocolNotifications() void InspectorAgentRegistry::flushPendingProtocolNotifications()
......
...@@ -43,10 +43,10 @@ namespace ConsoleAgentState { ...@@ -43,10 +43,10 @@ namespace ConsoleAgentState {
static const char consoleMessagesEnabled[] = "consoleMessagesEnabled"; static const char consoleMessagesEnabled[] = "consoleMessagesEnabled";
} }
InspectorConsoleAgent::InspectorConsoleAgent(V8RuntimeAgent* runtimeAgent) InspectorConsoleAgent::InspectorConsoleAgent(V8RuntimeAgent* runtimeAgent, V8DebuggerAgent* debuggerAgent)
: InspectorBaseAgent<InspectorConsoleAgent, protocol::Frontend::Console>("Console") : InspectorBaseAgent<InspectorConsoleAgent, protocol::Frontend::Console>("Console")
, m_runtimeAgent(runtimeAgent) , m_runtimeAgent(runtimeAgent)
, m_debuggerAgent(nullptr) , m_debuggerAgent(debuggerAgent)
, m_enabled(false) , m_enabled(false)
{ {
} }
......
...@@ -40,11 +40,9 @@ class V8RuntimeAgent; ...@@ -40,11 +40,9 @@ class V8RuntimeAgent;
class CORE_EXPORT InspectorConsoleAgent : public InspectorBaseAgent<InspectorConsoleAgent, protocol::Frontend::Console>, public protocol::Backend::Console { class CORE_EXPORT InspectorConsoleAgent : public InspectorBaseAgent<InspectorConsoleAgent, protocol::Frontend::Console>, public protocol::Backend::Console {
WTF_MAKE_NONCOPYABLE(InspectorConsoleAgent); WTF_MAKE_NONCOPYABLE(InspectorConsoleAgent);
public: public:
explicit InspectorConsoleAgent(V8RuntimeAgent*); InspectorConsoleAgent(V8RuntimeAgent*, V8DebuggerAgent*);
~InspectorConsoleAgent() override; ~InspectorConsoleAgent() override;
void setDebuggerAgent(V8DebuggerAgent* debuggerAgent) { m_debuggerAgent = debuggerAgent; }
void enable(ErrorString*) override; void enable(ErrorString*) override;
bool enabled() { return m_enabled; } bool enabled() { return m_enabled; }
......
...@@ -45,8 +45,8 @@ namespace blink { ...@@ -45,8 +45,8 @@ namespace blink {
int PageConsoleAgent::s_enabledAgentCount = 0; int PageConsoleAgent::s_enabledAgentCount = 0;
PageConsoleAgent::PageConsoleAgent(V8RuntimeAgent* runtimeAgent, InspectorDOMAgent* domAgent, InspectedFrames* inspectedFrames) PageConsoleAgent::PageConsoleAgent(V8RuntimeAgent* runtimeAgent, V8DebuggerAgent* debuggerAgent, InspectorDOMAgent* domAgent, InspectedFrames* inspectedFrames)
: InspectorConsoleAgent(runtimeAgent) : InspectorConsoleAgent(runtimeAgent, debuggerAgent)
, m_inspectorDOMAgent(domAgent) , m_inspectorDOMAgent(domAgent)
, m_inspectedFrames(inspectedFrames) , m_inspectedFrames(inspectedFrames)
{ {
......
...@@ -47,9 +47,9 @@ class WorkerGlobalScopeProxy; ...@@ -47,9 +47,9 @@ class WorkerGlobalScopeProxy;
class CORE_EXPORT PageConsoleAgent final : public InspectorConsoleAgent { class CORE_EXPORT PageConsoleAgent final : public InspectorConsoleAgent {
WTF_MAKE_NONCOPYABLE(PageConsoleAgent); WTF_MAKE_NONCOPYABLE(PageConsoleAgent);
public: public:
static PassOwnPtrWillBeRawPtr<PageConsoleAgent> create(V8RuntimeAgent* runtimeAgent, InspectorDOMAgent* domAgent, InspectedFrames* inspectedFrames) static PassOwnPtrWillBeRawPtr<PageConsoleAgent> create(V8RuntimeAgent* runtimeAgent, V8DebuggerAgent* debuggerAgent, InspectorDOMAgent* domAgent, InspectedFrames* inspectedFrames)
{ {
return adoptPtrWillBeNoop(new PageConsoleAgent(runtimeAgent, domAgent, inspectedFrames)); return adoptPtrWillBeNoop(new PageConsoleAgent(runtimeAgent, debuggerAgent, domAgent, inspectedFrames));
} }
~PageConsoleAgent() override; ~PageConsoleAgent() override;
DECLARE_VIRTUAL_TRACE(); DECLARE_VIRTUAL_TRACE();
...@@ -67,7 +67,7 @@ protected: ...@@ -67,7 +67,7 @@ protected:
void disableStackCapturingIfNeeded() override; void disableStackCapturingIfNeeded() override;
private: private:
PageConsoleAgent(V8RuntimeAgent*, InspectorDOMAgent*, InspectedFrames*); PageConsoleAgent(V8RuntimeAgent*, V8DebuggerAgent*, InspectorDOMAgent*, InspectedFrames*);
void clearMessages(ErrorString*) override; void clearMessages(ErrorString*) override;
RawPtrWillBeMember<InspectorDOMAgent> m_inspectorDOMAgent; RawPtrWillBeMember<InspectorDOMAgent> m_inspectorDOMAgent;
......
...@@ -61,11 +61,6 @@ DEFINE_TRACE(PageRuntimeAgent) ...@@ -61,11 +61,6 @@ DEFINE_TRACE(PageRuntimeAgent)
InspectorRuntimeAgent::trace(visitor); InspectorRuntimeAgent::trace(visitor);
} }
void PageRuntimeAgent::init()
{
InspectorRuntimeAgent::init();
}
void PageRuntimeAgent::enable(ErrorString* errorString) void PageRuntimeAgent::enable(ErrorString* errorString)
{ {
if (m_enabled) if (m_enabled)
......
...@@ -48,7 +48,6 @@ public: ...@@ -48,7 +48,6 @@ public:
} }
~PageRuntimeAgent() override; ~PageRuntimeAgent() override;
DECLARE_VIRTUAL_TRACE(); DECLARE_VIRTUAL_TRACE();
void init() override;
void enable(ErrorString*) override; void enable(ErrorString*) override;
void disable(ErrorString*) override; void disable(ErrorString*) override;
......
...@@ -38,8 +38,8 @@ ...@@ -38,8 +38,8 @@
namespace blink { namespace blink {
WorkerConsoleAgent::WorkerConsoleAgent(V8RuntimeAgent* runtimeAgent, WorkerGlobalScope* workerGlobalScope) WorkerConsoleAgent::WorkerConsoleAgent(V8RuntimeAgent* runtimeAgent, V8DebuggerAgent* debuggerAgent, WorkerGlobalScope* workerGlobalScope)
: InspectorConsoleAgent(runtimeAgent) : InspectorConsoleAgent(runtimeAgent, debuggerAgent)
, m_workerGlobalScope(workerGlobalScope) , m_workerGlobalScope(workerGlobalScope)
{ {
} }
......
...@@ -41,9 +41,9 @@ class WorkerGlobalScope; ...@@ -41,9 +41,9 @@ class WorkerGlobalScope;
class WorkerConsoleAgent final : public InspectorConsoleAgent { class WorkerConsoleAgent final : public InspectorConsoleAgent {
WTF_MAKE_NONCOPYABLE(WorkerConsoleAgent); WTF_MAKE_NONCOPYABLE(WorkerConsoleAgent);
public: public:
static PassOwnPtrWillBeRawPtr<WorkerConsoleAgent> create(V8RuntimeAgent* runtimeAgent, WorkerGlobalScope* workerGlobalScope) static PassOwnPtrWillBeRawPtr<WorkerConsoleAgent> create(V8RuntimeAgent* runtimeAgent, V8DebuggerAgent* debuggerAgent, WorkerGlobalScope* workerGlobalScope)
{ {
return adoptPtrWillBeNoop(new WorkerConsoleAgent(runtimeAgent, workerGlobalScope)); return adoptPtrWillBeNoop(new WorkerConsoleAgent(runtimeAgent, debuggerAgent, workerGlobalScope));
} }
~WorkerConsoleAgent() override; ~WorkerConsoleAgent() override;
DECLARE_VIRTUAL_TRACE(); DECLARE_VIRTUAL_TRACE();
...@@ -58,7 +58,7 @@ protected: ...@@ -58,7 +58,7 @@ protected:
void disableStackCapturingIfNeeded() override; void disableStackCapturingIfNeeded() override;
private: private:
WorkerConsoleAgent(V8RuntimeAgent*, WorkerGlobalScope*); WorkerConsoleAgent(V8RuntimeAgent*, V8DebuggerAgent*, WorkerGlobalScope*);
RawPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope; RawPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope;
}; };
......
...@@ -72,9 +72,8 @@ WorkerInspectorController::WorkerInspectorController(WorkerGlobalScope* workerGl ...@@ -72,9 +72,8 @@ WorkerInspectorController::WorkerInspectorController(WorkerGlobalScope* workerGl
m_agents.append(InspectorProfilerAgent::create(debugger, 0)); m_agents.append(InspectorProfilerAgent::create(debugger, 0));
m_agents.append(InspectorHeapProfilerAgent::create(workerGlobalScope->thread()->isolate(), m_workerRuntimeAgent->v8Agent())); m_agents.append(InspectorHeapProfilerAgent::create(workerGlobalScope->thread()->isolate(), m_workerRuntimeAgent->v8Agent()));
OwnPtrWillBeRawPtr<WorkerConsoleAgent> workerConsoleAgent = WorkerConsoleAgent::create(m_workerRuntimeAgent->v8Agent(), workerGlobalScope); OwnPtrWillBeRawPtr<WorkerConsoleAgent> workerConsoleAgent = WorkerConsoleAgent::create(m_workerRuntimeAgent->v8Agent(), m_workerDebuggerAgent->v8Agent(), workerGlobalScope);
WorkerConsoleAgent* workerConsoleAgentPtr = workerConsoleAgent.get(); WorkerConsoleAgent* workerConsoleAgentPtr = workerConsoleAgent.get();
workerConsoleAgentPtr->setDebuggerAgent(m_workerDebuggerAgent->v8Agent());
m_agents.append(workerConsoleAgent.release()); m_agents.append(workerConsoleAgent.release());
m_workerRuntimeAgent->v8Agent()->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, workerConsoleAgentPtr)); m_workerRuntimeAgent->v8Agent()->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, workerConsoleAgentPtr));
......
...@@ -282,14 +282,14 @@ PassOwnPtrWillBeRawPtr<WebDevToolsAgentImpl> WebDevToolsAgentImpl::create(WebLoc ...@@ -282,14 +282,14 @@ PassOwnPtrWillBeRawPtr<WebDevToolsAgentImpl> WebDevToolsAgentImpl::create(WebLoc
// TODO(dgozman): we should actually pass the view instead of frame, but during // TODO(dgozman): we should actually pass the view instead of frame, but during
// remote->local transition we cannot access mainFrameImpl() yet, so we have to store the // remote->local transition we cannot access mainFrameImpl() yet, so we have to store the
// frame which will become the main frame later. // frame which will become the main frame later.
agent->registerAgent(InspectorRenderingAgent::create(frame, agent->m_overlay.get())); agent->m_agents.append(InspectorRenderingAgent::create(frame, agent->m_overlay.get()));
agent->registerAgent(InspectorEmulationAgent::create(frame, agent)); agent->m_agents.append(InspectorEmulationAgent::create(frame, agent));
// TODO(dgozman): migrate each of the following agents to frame once module is ready. // TODO(dgozman): migrate each of the following agents to frame once module is ready.
agent->registerAgent(InspectorDatabaseAgent::create(view->page())); agent->m_agents.append(InspectorDatabaseAgent::create(view->page()));
agent->registerAgent(DeviceOrientationInspectorAgent::create(view->page())); agent->m_agents.append(DeviceOrientationInspectorAgent::create(view->page()));
agent->registerAgent(InspectorAccessibilityAgent::create(view->page())); agent->m_agents.append(InspectorAccessibilityAgent::create(view->page()));
agent->registerAgent(InspectorDOMStorageAgent::create(view->page())); agent->m_agents.append(InspectorDOMStorageAgent::create(view->page()));
agent->registerAgent(InspectorCacheStorageAgent::create()); agent->m_agents.append(InspectorCacheStorageAgent::create());
agent->layerTreeViewChanged(view->layerTreeView()); agent->layerTreeViewChanged(view->layerTreeView());
return adoptPtrWillBeNoop(agent); return adoptPtrWillBeNoop(agent);
} }
...@@ -308,53 +308,19 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl( ...@@ -308,53 +308,19 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl(
, m_resourceContentLoader(InspectorResourceContentLoader::create(m_webLocalFrameImpl->frame())) , m_resourceContentLoader(InspectorResourceContentLoader::create(m_webLocalFrameImpl->frame()))
, m_overlay(overlay) , m_overlay(overlay)
, m_inspectedFrames(InspectedFrames::create(m_webLocalFrameImpl->frame())) , m_inspectedFrames(InspectedFrames::create(m_webLocalFrameImpl->frame()))
, m_inspectorAgent(nullptr)
, m_domAgent(nullptr) , m_domAgent(nullptr)
, m_pageAgent(nullptr) , m_pageAgent(nullptr)
, m_resourceAgent(nullptr) , m_resourceAgent(nullptr)
, m_layerTreeAgent(nullptr) , m_layerTreeAgent(nullptr)
, m_tracingAgent(nullptr) , m_tracingAgent(nullptr)
, m_pageRuntimeAgent(nullptr)
, m_pageConsoleAgent(nullptr)
, m_agents(m_instrumentingAgents.get()) , m_agents(m_instrumentingAgents.get())
, m_deferredAgentsInitialized(false) , m_deferredAgentsInitialized(false)
, m_sessionId(0) , m_sessionId(0)
, m_stateMuted(false) , m_stateMuted(false)
, m_layerTreeId(0)
{ {
ASSERT(isMainThread()); ASSERT(isMainThread());
ASSERT(m_webLocalFrameImpl->frame()); ASSERT(m_webLocalFrameImpl->frame());
ClientMessageLoopAdapter::ensureMainThreadDebuggerCreated(m_client);
MainThreadDebugger* mainThreadDebugger = MainThreadDebugger::instance();
OwnPtrWillBeRawPtr<InspectorInspectorAgent> inspectorAgentPtr(InspectorInspectorAgent::create());
m_inspectorAgent = inspectorAgentPtr.get();
m_agents.append(inspectorAgentPtr.release());
OwnPtrWillBeRawPtr<PageRuntimeAgent> pageRuntimeAgentPtr(PageRuntimeAgent::create(this, mainThreadDebugger->debugger(), m_inspectedFrames.get(), mainThreadDebugger->contextGroupId(m_inspectedFrames->root())));
m_pageRuntimeAgent = pageRuntimeAgentPtr.get();
m_agents.append(pageRuntimeAgentPtr.release());
v8::Isolate* isolate = V8PerIsolateData::mainThreadIsolate();
OwnPtrWillBeRawPtr<InspectorDOMAgent> domAgentPtr(InspectorDOMAgent::create(isolate, m_inspectedFrames.get(), m_pageRuntimeAgent->v8Agent(), m_overlay.get()));
m_domAgent = domAgentPtr.get();
m_agents.append(domAgentPtr.release());
OwnPtrWillBeRawPtr<InspectorLayerTreeAgent> layerTreeAgentPtr(InspectorLayerTreeAgent::create(m_inspectedFrames.get()));
m_layerTreeAgent = layerTreeAgentPtr.get();
m_agents.append(layerTreeAgentPtr.release());
OwnPtrWillBeRawPtr<PageConsoleAgent> pageConsoleAgentPtr = PageConsoleAgent::create(m_pageRuntimeAgent->v8Agent(), m_domAgent, m_inspectedFrames.get());
m_pageConsoleAgent = pageConsoleAgentPtr.get();
OwnPtrWillBeRawPtr<InspectorWorkerAgent> workerAgentPtr = InspectorWorkerAgent::create(m_inspectedFrames.get(), pageConsoleAgentPtr.get());
OwnPtrWillBeRawPtr<InspectorTracingAgent> tracingAgentPtr = InspectorTracingAgent::create(this, workerAgentPtr.get(), m_inspectedFrames.get());
m_tracingAgent = tracingAgentPtr.get();
m_agents.append(tracingAgentPtr.release());
m_agents.append(workerAgentPtr.release());
m_agents.append(pageConsoleAgentPtr.release());
} }
WebDevToolsAgentImpl::~WebDevToolsAgentImpl() WebDevToolsAgentImpl::~WebDevToolsAgentImpl()
...@@ -393,14 +359,11 @@ DEFINE_TRACE(WebDevToolsAgentImpl) ...@@ -393,14 +359,11 @@ DEFINE_TRACE(WebDevToolsAgentImpl)
visitor->trace(m_resourceContentLoader); visitor->trace(m_resourceContentLoader);
visitor->trace(m_overlay); visitor->trace(m_overlay);
visitor->trace(m_inspectedFrames); visitor->trace(m_inspectedFrames);
visitor->trace(m_inspectorAgent);
visitor->trace(m_domAgent); visitor->trace(m_domAgent);
visitor->trace(m_pageAgent); visitor->trace(m_pageAgent);
visitor->trace(m_resourceAgent); visitor->trace(m_resourceAgent);
visitor->trace(m_layerTreeAgent); visitor->trace(m_layerTreeAgent);
visitor->trace(m_tracingAgent); visitor->trace(m_tracingAgent);
visitor->trace(m_pageRuntimeAgent);
visitor->trace(m_pageConsoleAgent);
visitor->trace(m_agents); visitor->trace(m_agents);
} }
...@@ -421,48 +384,75 @@ void WebDevToolsAgentImpl::initializeDeferredAgents() ...@@ -421,48 +384,75 @@ void WebDevToolsAgentImpl::initializeDeferredAgents()
return; return;
m_deferredAgentsInitialized = true; m_deferredAgentsInitialized = true;
OwnPtrWillBeRawPtr<InspectorResourceAgent> resourceAgentPtr(InspectorResourceAgent::create(m_inspectedFrames.get())); ClientMessageLoopAdapter::ensureMainThreadDebuggerCreated(m_client);
m_resourceAgent = resourceAgentPtr.get(); MainThreadDebugger* mainThreadDebugger = MainThreadDebugger::instance();
m_agents.append(resourceAgentPtr.release()); v8::Isolate* isolate = V8PerIsolateData::mainThreadIsolate();
OwnPtrWillBeRawPtr<InspectorInspectorAgent> inspectorAgent = InspectorInspectorAgent::create();
InspectorInspectorAgent* inspectorAgentPtr = inspectorAgent.get();
m_agents.append(inspectorAgent.release());
OwnPtrWillBeRawPtr<InspectorCSSAgent> cssAgentPtr(InspectorCSSAgent::create(m_domAgent, m_inspectedFrames.get(), m_resourceAgent, m_resourceContentLoader.get())); OwnPtrWillBeRawPtr<PageRuntimeAgent> pageRuntimeAgent = PageRuntimeAgent::create(this, mainThreadDebugger->debugger(), m_inspectedFrames.get(), mainThreadDebugger->contextGroupId(m_inspectedFrames->root()));
InspectorCSSAgent* cssAgent = cssAgentPtr.get(); V8RuntimeAgent* runtimeAgent = pageRuntimeAgent->v8Agent();
m_agents.append(cssAgentPtr.release()); m_agents.append(pageRuntimeAgent.release());
m_agents.append(InspectorAnimationAgent::create(m_inspectedFrames.get(), m_domAgent, cssAgent, m_pageRuntimeAgent->v8Agent())); OwnPtrWillBeRawPtr<InspectorDOMAgent> domAgent = InspectorDOMAgent::create(isolate, m_inspectedFrames.get(), runtimeAgent, m_overlay.get());
m_domAgent = domAgent.get();
m_agents.append(domAgent.release());
OwnPtrWillBeRawPtr<InspectorLayerTreeAgent> layerTreeAgent = InspectorLayerTreeAgent::create(m_inspectedFrames.get());
m_layerTreeAgent = layerTreeAgent.get();
m_agents.append(layerTreeAgent.release());
OwnPtrWillBeRawPtr<InspectorResourceAgent> resourceAgent = InspectorResourceAgent::create(m_inspectedFrames.get());
m_resourceAgent = resourceAgent.get();
m_agents.append(resourceAgent.release());
OwnPtrWillBeRawPtr<InspectorCSSAgent> cssAgent = InspectorCSSAgent::create(m_domAgent, m_inspectedFrames.get(), m_resourceAgent, m_resourceContentLoader.get());
InspectorCSSAgent* cssAgentPtr = cssAgent.get();
m_agents.append(cssAgent.release());
m_agents.append(InspectorAnimationAgent::create(m_inspectedFrames.get(), m_domAgent, cssAgentPtr, runtimeAgent));
m_agents.append(InspectorMemoryAgent::create()); m_agents.append(InspectorMemoryAgent::create());
m_agents.append(InspectorApplicationCacheAgent::create(m_inspectedFrames.get())); m_agents.append(InspectorApplicationCacheAgent::create(m_inspectedFrames.get()));
m_agents.append(InspectorIndexedDBAgent::create(m_inspectedFrames.get())); m_agents.append(InspectorIndexedDBAgent::create(m_inspectedFrames.get()));
OwnPtrWillBeRawPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgent::create(m_inspectedFrames.get(), m_pageRuntimeAgent->v8Agent())); OwnPtrWillBeRawPtr<InspectorDebuggerAgent> debuggerAgent = PageDebuggerAgent::create(m_inspectedFrames.get(), runtimeAgent);
InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get(); InspectorDebuggerAgent* debuggerAgentPtr = debuggerAgent.get();
m_agents.append(debuggerAgentPtr.release()); m_agents.append(debuggerAgent.release());
v8::Isolate* isolate = V8PerIsolateData::mainThreadIsolate(); OwnPtrWillBeRawPtr<PageConsoleAgent> pageConsoleAgent = PageConsoleAgent::create(runtimeAgent, debuggerAgentPtr->v8Agent(), m_domAgent, m_inspectedFrames.get());
PageConsoleAgent* pageConsoleAgentPtr = pageConsoleAgent.get();
m_agents.append(pageConsoleAgent.release());
OwnPtrWillBeRawPtr<InspectorWorkerAgent> workerAgent = InspectorWorkerAgent::create(m_inspectedFrames.get(), pageConsoleAgentPtr);
InspectorWorkerAgent* workerAgentPtr = workerAgent.get();
m_agents.append(workerAgent.release());
OwnPtrWillBeRawPtr<InspectorTracingAgent> tracingAgent = InspectorTracingAgent::create(this, workerAgentPtr, m_inspectedFrames.get());
m_tracingAgent = tracingAgent.get();
m_agents.append(tracingAgent.release());
m_agents.append(InspectorDOMDebuggerAgent::create(isolate, m_domAgent, runtimeAgent, debuggerAgentPtr->v8Agent()));
m_agents.append(InspectorDOMDebuggerAgent::create(isolate, m_domAgent, m_pageRuntimeAgent->v8Agent(), debuggerAgent->v8Agent()));
m_agents.append(InspectorInputAgent::create(m_inspectedFrames.get())); m_agents.append(InspectorInputAgent::create(m_inspectedFrames.get()));
m_agents.append(InspectorProfilerAgent::create(MainThreadDebugger::instance()->debugger(), m_overlay.get()));
m_agents.append(InspectorHeapProfilerAgent::create(isolate, m_pageRuntimeAgent->v8Agent()));
OwnPtrWillBeRawPtr<InspectorPageAgent> pageAgentPtr(InspectorPageAgent::create(m_inspectedFrames.get(), this, m_resourceContentLoader.get(), debuggerAgent)); m_agents.append(InspectorProfilerAgent::create(MainThreadDebugger::instance()->debugger(), m_overlay.get()));
m_pageAgent = pageAgentPtr.get();
m_agents.append(pageAgentPtr.release());
m_pageConsoleAgent->setDebuggerAgent(debuggerAgent->v8Agent()); m_agents.append(InspectorHeapProfilerAgent::create(isolate, runtimeAgent));
m_pageRuntimeAgent->v8Agent()->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, m_pageConsoleAgent.get())); OwnPtrWillBeRawPtr<InspectorPageAgent> pageAgent = InspectorPageAgent::create(m_inspectedFrames.get(), this, m_resourceContentLoader.get(), debuggerAgentPtr);
m_pageRuntimeAgent->v8Agent()->setInspectObjectCallback(bind<PassOwnPtr<protocol::Runtime::RemoteObject>, PassOwnPtr<protocol::DictionaryValue>>(&InspectorInspectorAgent::inspect, m_inspectorAgent.get())); m_pageAgent = pageAgent.get();
m_agents.append(pageAgent.release());
runtimeAgent->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, pageConsoleAgentPtr));
runtimeAgent->setInspectObjectCallback(bind<PassOwnPtr<protocol::Runtime::RemoteObject>, PassOwnPtr<protocol::DictionaryValue>>(&InspectorInspectorAgent::inspect, inspectorAgentPtr));
m_tracingAgent->setLayerTreeId(m_layerTreeId);
if (m_overlay) if (m_overlay)
m_overlay->init(cssAgent, debuggerAgent, m_domAgent.get()); m_overlay->init(cssAgentPtr, debuggerAgentPtr, m_domAgent);
}
void WebDevToolsAgentImpl::registerAgent(PassOwnPtrWillBeRawPtr<InspectorAgent> agent)
{
m_agents.append(agent);
} }
void WebDevToolsAgentImpl::attach(const WebString& hostId, int sessionId) void WebDevToolsAgentImpl::attach(const WebString& hostId, int sessionId)
...@@ -544,17 +534,21 @@ bool WebDevToolsAgentImpl::screencastEnabled() ...@@ -544,17 +534,21 @@ bool WebDevToolsAgentImpl::screencastEnabled()
void WebDevToolsAgentImpl::willAddPageOverlay(const GraphicsLayer* layer) void WebDevToolsAgentImpl::willAddPageOverlay(const GraphicsLayer* layer)
{ {
m_layerTreeAgent->willAddPageOverlay(layer); if (m_layerTreeAgent)
m_layerTreeAgent->willAddPageOverlay(layer);
} }
void WebDevToolsAgentImpl::didRemovePageOverlay(const GraphicsLayer* layer) void WebDevToolsAgentImpl::didRemovePageOverlay(const GraphicsLayer* layer)
{ {
m_layerTreeAgent->didRemovePageOverlay(layer); if (m_layerTreeAgent)
m_layerTreeAgent->didRemovePageOverlay(layer);
} }
void WebDevToolsAgentImpl::layerTreeViewChanged(WebLayerTreeView* layerTreeView) void WebDevToolsAgentImpl::layerTreeViewChanged(WebLayerTreeView* layerTreeView)
{ {
m_tracingAgent->setLayerTreeId(layerTreeView ? layerTreeView->layerTreeId() : 0); m_layerTreeId = layerTreeView ? layerTreeView->layerTreeId() : 0;
if (m_tracingAgent)
m_tracingAgent->setLayerTreeId(m_layerTreeId);
} }
void WebDevToolsAgentImpl::enableTracing(const String& categoryFilter) void WebDevToolsAgentImpl::enableTracing(const String& categoryFilter)
...@@ -591,6 +585,8 @@ void WebDevToolsAgentImpl::dispatchMessageFromFrontend(int sessionId, const Stri ...@@ -591,6 +585,8 @@ void WebDevToolsAgentImpl::dispatchMessageFromFrontend(int sessionId, const Stri
void WebDevToolsAgentImpl::inspectElementAt(const WebPoint& pointInRootFrame) void WebDevToolsAgentImpl::inspectElementAt(const WebPoint& pointInRootFrame)
{ {
if (!m_domAgent)
return;
HitTestRequest::HitTestRequestType hitType = HitTestRequest::Move | HitTestRequest::ReadOnly | HitTestRequest::AllowChildFrameContent; HitTestRequest::HitTestRequestType hitType = HitTestRequest::Move | HitTestRequest::ReadOnly | HitTestRequest::AllowChildFrameContent;
HitTestRequest request(hitType); HitTestRequest request(hitType);
WebMouseEvent dummyEvent; WebMouseEvent dummyEvent;
......
...@@ -48,13 +48,10 @@ namespace blink { ...@@ -48,13 +48,10 @@ namespace blink {
class GraphicsLayer; class GraphicsLayer;
class InspectedFrames; class InspectedFrames;
class InspectorInspectorAgent;
class InspectorOverlay; class InspectorOverlay;
class InspectorResourceContentLoader; class InspectorResourceContentLoader;
class LocalFrame; class LocalFrame;
class Page; class Page;
class PageConsoleAgent;
class PageRuntimeAgent;
class PlatformGestureEvent; class PlatformGestureEvent;
class PlatformKeyboardEvent; class PlatformKeyboardEvent;
class PlatformMouseEvent; class PlatformMouseEvent;
...@@ -91,7 +88,6 @@ public: ...@@ -91,7 +88,6 @@ public:
InspectorOverlay* overlay() const { return m_overlay.get(); } InspectorOverlay* overlay() const { return m_overlay.get(); }
void flushPendingProtocolNotifications(); void flushPendingProtocolNotifications();
void dispatchMessageFromFrontend(int sessionId, const String& message); void dispatchMessageFromFrontend(int sessionId, const String& message);
void registerAgent(PassOwnPtrWillBeRawPtr<InspectorAgent>);
static void webViewImplClosed(WebViewImpl*); static void webViewImplClosed(WebViewImpl*);
static void webFrameWidgetImplClosed(WebFrameWidgetImpl*); static void webFrameWidgetImplClosed(WebFrameWidgetImpl*);
...@@ -156,14 +152,11 @@ private: ...@@ -156,14 +152,11 @@ private:
OwnPtrWillBeMember<InspectorOverlay> m_overlay; OwnPtrWillBeMember<InspectorOverlay> m_overlay;
OwnPtrWillBeMember<InspectedFrames> m_inspectedFrames; OwnPtrWillBeMember<InspectedFrames> m_inspectedFrames;
RawPtrWillBeMember<InspectorInspectorAgent> m_inspectorAgent;
RawPtrWillBeMember<InspectorDOMAgent> m_domAgent; RawPtrWillBeMember<InspectorDOMAgent> m_domAgent;
RawPtrWillBeMember<InspectorPageAgent> m_pageAgent; RawPtrWillBeMember<InspectorPageAgent> m_pageAgent;
RawPtrWillBeMember<InspectorResourceAgent> m_resourceAgent; RawPtrWillBeMember<InspectorResourceAgent> m_resourceAgent;
RawPtrWillBeMember<InspectorLayerTreeAgent> m_layerTreeAgent; RawPtrWillBeMember<InspectorLayerTreeAgent> m_layerTreeAgent;
RawPtrWillBeMember<InspectorTracingAgent> m_tracingAgent; RawPtrWillBeMember<InspectorTracingAgent> m_tracingAgent;
RawPtrWillBeMember<PageRuntimeAgent> m_pageRuntimeAgent;
RawPtrWillBeMember<PageConsoleAgent> m_pageConsoleAgent;
OwnPtr<protocol::Dispatcher> m_inspectorBackendDispatcher; OwnPtr<protocol::Dispatcher> m_inspectorBackendDispatcher;
OwnPtr<protocol::Frontend> m_inspectorFrontend; OwnPtr<protocol::Frontend> m_inspectorFrontend;
...@@ -175,6 +168,7 @@ private: ...@@ -175,6 +168,7 @@ private:
int m_sessionId; int m_sessionId;
String m_stateCookie; String m_stateCookie;
bool m_stateMuted; bool m_stateMuted;
int m_layerTreeId;
}; };
} // namespace blink } // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment