Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Unified Diff: third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp

Issue 1834073002: [DevTools] Create agents on attach. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/web/WebDevToolsAgentImpl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
diff --git a/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp b/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
index 5eae3a1c4f4025ee2f9f9d7e2c5003b31f5941ae..893809f0db8e49bd834b28dff37ae9ef92bc586a 100644
--- a/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
+++ b/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
@@ -282,14 +282,14 @@ PassOwnPtrWillBeRawPtr<WebDevToolsAgentImpl> WebDevToolsAgentImpl::create(WebLoc
// 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
// frame which will become the main frame later.
- agent->registerAgent(InspectorRenderingAgent::create(frame, agent->m_overlay.get()));
- agent->registerAgent(InspectorEmulationAgent::create(frame, agent));
+ agent->m_agents.append(InspectorRenderingAgent::create(frame, agent->m_overlay.get()));
+ agent->m_agents.append(InspectorEmulationAgent::create(frame, agent));
// TODO(dgozman): migrate each of the following agents to frame once module is ready.
- agent->registerAgent(InspectorDatabaseAgent::create(view->page()));
- agent->registerAgent(DeviceOrientationInspectorAgent::create(view->page()));
- agent->registerAgent(InspectorAccessibilityAgent::create(view->page()));
- agent->registerAgent(InspectorDOMStorageAgent::create(view->page()));
- agent->registerAgent(InspectorCacheStorageAgent::create());
+ agent->m_agents.append(InspectorDatabaseAgent::create(view->page()));
+ agent->m_agents.append(DeviceOrientationInspectorAgent::create(view->page()));
+ agent->m_agents.append(InspectorAccessibilityAgent::create(view->page()));
+ agent->m_agents.append(InspectorDOMStorageAgent::create(view->page()));
+ agent->m_agents.append(InspectorCacheStorageAgent::create());
agent->layerTreeViewChanged(view->layerTreeView());
return adoptPtrWillBeNoop(agent);
}
@@ -308,53 +308,19 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl(
, m_resourceContentLoader(InspectorResourceContentLoader::create(m_webLocalFrameImpl->frame()))
, m_overlay(overlay)
, m_inspectedFrames(InspectedFrames::create(m_webLocalFrameImpl->frame()))
- , m_inspectorAgent(nullptr)
, m_domAgent(nullptr)
, m_pageAgent(nullptr)
, m_resourceAgent(nullptr)
, m_layerTreeAgent(nullptr)
, m_tracingAgent(nullptr)
- , m_pageRuntimeAgent(nullptr)
- , m_pageConsoleAgent(nullptr)
, m_agents(m_instrumentingAgents.get())
, m_deferredAgentsInitialized(false)
, m_sessionId(0)
, m_stateMuted(false)
+ , m_layerTreeId(0)
{
ASSERT(isMainThread());
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()
@@ -393,14 +359,11 @@ DEFINE_TRACE(WebDevToolsAgentImpl)
visitor->trace(m_resourceContentLoader);
visitor->trace(m_overlay);
visitor->trace(m_inspectedFrames);
- visitor->trace(m_inspectorAgent);
visitor->trace(m_domAgent);
visitor->trace(m_pageAgent);
visitor->trace(m_resourceAgent);
visitor->trace(m_layerTreeAgent);
visitor->trace(m_tracingAgent);
- visitor->trace(m_pageRuntimeAgent);
- visitor->trace(m_pageConsoleAgent);
visitor->trace(m_agents);
}
@@ -421,48 +384,75 @@ void WebDevToolsAgentImpl::initializeDeferredAgents()
return;
m_deferredAgentsInitialized = true;
- OwnPtrWillBeRawPtr<InspectorResourceAgent> resourceAgentPtr(InspectorResourceAgent::create(m_inspectedFrames.get()));
- m_resourceAgent = resourceAgentPtr.get();
- m_agents.append(resourceAgentPtr.release());
+ ClientMessageLoopAdapter::ensureMainThreadDebuggerCreated(m_client);
+ MainThreadDebugger* mainThreadDebugger = MainThreadDebugger::instance();
+ 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()));
- InspectorCSSAgent* cssAgent = cssAgentPtr.get();
- m_agents.append(cssAgentPtr.release());
+ OwnPtrWillBeRawPtr<PageRuntimeAgent> pageRuntimeAgent = PageRuntimeAgent::create(this, mainThreadDebugger->debugger(), m_inspectedFrames.get(), mainThreadDebugger->contextGroupId(m_inspectedFrames->root()));
+ V8RuntimeAgent* runtimeAgent = pageRuntimeAgent->v8Agent();
+ 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(InspectorApplicationCacheAgent::create(m_inspectedFrames.get()));
+
m_agents.append(InspectorIndexedDBAgent::create(m_inspectedFrames.get()));
- OwnPtrWillBeRawPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgent::create(m_inspectedFrames.get(), m_pageRuntimeAgent->v8Agent()));
- InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get();
- m_agents.append(debuggerAgentPtr.release());
+ OwnPtrWillBeRawPtr<InspectorDebuggerAgent> debuggerAgent = PageDebuggerAgent::create(m_inspectedFrames.get(), runtimeAgent);
+ InspectorDebuggerAgent* debuggerAgentPtr = debuggerAgent.get();
+ 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(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_pageAgent = pageAgentPtr.get();
- m_agents.append(pageAgentPtr.release());
+ m_agents.append(InspectorProfilerAgent::create(MainThreadDebugger::instance()->debugger(), m_overlay.get()));
- m_pageConsoleAgent->setDebuggerAgent(debuggerAgent->v8Agent());
+ m_agents.append(InspectorHeapProfilerAgent::create(isolate, runtimeAgent));
- m_pageRuntimeAgent->v8Agent()->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, m_pageConsoleAgent.get()));
- m_pageRuntimeAgent->v8Agent()->setInspectObjectCallback(bind<PassOwnPtr<protocol::Runtime::RemoteObject>, PassOwnPtr<protocol::DictionaryValue>>(&InspectorInspectorAgent::inspect, m_inspectorAgent.get()));
+ OwnPtrWillBeRawPtr<InspectorPageAgent> pageAgent = InspectorPageAgent::create(m_inspectedFrames.get(), this, m_resourceContentLoader.get(), debuggerAgentPtr);
+ 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)
- m_overlay->init(cssAgent, debuggerAgent, m_domAgent.get());
-}
-
-void WebDevToolsAgentImpl::registerAgent(PassOwnPtrWillBeRawPtr<InspectorAgent> agent)
-{
- m_agents.append(agent);
+ m_overlay->init(cssAgentPtr, debuggerAgentPtr, m_domAgent);
}
void WebDevToolsAgentImpl::attach(const WebString& hostId, int sessionId)
@@ -544,17 +534,21 @@ bool WebDevToolsAgentImpl::screencastEnabled()
void WebDevToolsAgentImpl::willAddPageOverlay(const GraphicsLayer* layer)
{
- m_layerTreeAgent->willAddPageOverlay(layer);
+ if (m_layerTreeAgent)
+ m_layerTreeAgent->willAddPageOverlay(layer);
}
void WebDevToolsAgentImpl::didRemovePageOverlay(const GraphicsLayer* layer)
{
- m_layerTreeAgent->didRemovePageOverlay(layer);
+ if (m_layerTreeAgent)
+ m_layerTreeAgent->didRemovePageOverlay(layer);
}
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)
@@ -591,6 +585,8 @@ void WebDevToolsAgentImpl::dispatchMessageFromFrontend(int sessionId, const Stri
void WebDevToolsAgentImpl::inspectElementAt(const WebPoint& pointInRootFrame)
{
+ if (!m_domAgent)
+ return;
HitTestRequest::HitTestRequestType hitType = HitTestRequest::Move | HitTestRequest::ReadOnly | HitTestRequest::AllowChildFrameContent;
HitTestRequest request(hitType);
WebMouseEvent dummyEvent;
« no previous file with comments | « third_party/WebKit/Source/web/WebDevToolsAgentImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698