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

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

Issue 1880273002: [DevTools] Create last agents on attach, modify InspectorDatabaseAgent to support it. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: two databases in the test Created 4 years, 8 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 29d5b1876b357363441cdfc8af0389748b3b783a..40b669c426c74f298d06a316c10c7d6fcf378ac4 100644
--- a/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
+++ b/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
@@ -100,6 +100,17 @@
namespace blink {
+namespace {
+
+bool isMainFrame(WebLocalFrameImpl* frame)
+{
+ // TODO(dgozman): sometimes view->mainFrameImpl() does return null, even though |frame| is meant to be main frame.
+ // See http://crbug.com/526162.
+ return frame->viewImpl() && !frame->parent();
+}
+
+}
+
class ClientMessageLoopAdapter : public MainThreadDebugger::ClientMessageLoop {
public:
~ClientMessageLoopAdapter() override
@@ -268,29 +279,15 @@ ClientMessageLoopAdapter* ClientMessageLoopAdapter::s_instance = nullptr;
// static
WebDevToolsAgentImpl* WebDevToolsAgentImpl::create(WebLocalFrameImpl* frame, WebDevToolsAgentClient* client)
{
- WebViewImpl* view = frame->viewImpl();
- // TODO(dgozman): sometimes view->mainFrameImpl() does return null, even though |frame| is meant to be main frame.
- // See http://crbug.com/526162.
- bool isMainFrame = view && !frame->parent();
- if (!isMainFrame) {
- WebDevToolsAgentImpl* agent = new WebDevToolsAgentImpl(frame, client, nullptr);
+ if (!isMainFrame(frame)) {
+ WebDevToolsAgentImpl* agent = new WebDevToolsAgentImpl(frame, client, nullptr, false);
if (frame->frameWidget())
agent->layerTreeViewChanged(toWebFrameWidgetImpl(frame->frameWidget())->layerTreeView());
return agent;
}
- WebDevToolsAgentImpl* agent = new WebDevToolsAgentImpl(frame, client, InspectorOverlay::create(view));
- // 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->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->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());
+ WebViewImpl* view = frame->viewImpl();
+ WebDevToolsAgentImpl* agent = new WebDevToolsAgentImpl(frame, client, InspectorOverlay::create(view), true);
agent->layerTreeViewChanged(view->layerTreeView());
return agent;
}
@@ -298,7 +295,8 @@ WebDevToolsAgentImpl* WebDevToolsAgentImpl::create(WebLocalFrameImpl* frame, Web
WebDevToolsAgentImpl::WebDevToolsAgentImpl(
WebLocalFrameImpl* webLocalFrameImpl,
WebDevToolsAgentClient* client,
- InspectorOverlay* overlay)
+ InspectorOverlay* overlay,
+ bool includeViewAgents)
: m_client(client)
, m_webLocalFrameImpl(webLocalFrameImpl)
, m_attached(false)
@@ -316,6 +314,7 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl(
, m_tracingAgent(nullptr)
, m_agents(m_instrumentingAgents.get())
, m_deferredAgentsInitialized(false)
+ , m_includeViewAgents(includeViewAgents)
, m_sessionId(0)
, m_stateMuted(false)
, m_layerTreeId(0)
@@ -447,6 +446,22 @@ void WebDevToolsAgentImpl::initializeDeferredAgents()
runtimeAgent->setClearConsoleCallback(bind<>(&InspectorConsoleAgent::clearAllMessages, pageConsoleAgent));
m_tracingAgent->setLayerTreeId(m_layerTreeId);
+
+ if (m_includeViewAgents) {
+ // 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.
+ m_agents.append(InspectorRenderingAgent::create(m_webLocalFrameImpl, m_overlay.get()));
+ m_agents.append(InspectorEmulationAgent::create(m_webLocalFrameImpl, this));
+ // TODO(dgozman): migrate each of the following agents to frame once module is ready.
+ Page* page = m_webLocalFrameImpl->viewImpl()->page();
+ m_agents.append(InspectorDatabaseAgent::create(page));
+ m_agents.append(DeviceOrientationInspectorAgent::create(page));
+ m_agents.append(InspectorAccessibilityAgent::create(page));
+ m_agents.append(InspectorDOMStorageAgent::create(page));
+ m_agents.append(InspectorCacheStorageAgent::create());
+ }
+
if (m_overlay)
m_overlay->init(cssAgent, debuggerAgent, m_domAgent);
}
« 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