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

Side by Side Diff: Source/core/inspector/InspectorController.cpp

Issue 146683002: InspectorController should lazily initialize InspectorAgents which begin instrumenting at later sta… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Patch after rebase! Created 6 years, 11 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 unified diff | Download patch
« no previous file with comments | « Source/core/inspector/InspectorController.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 InspectorController::InspectorController(Page* page, InspectorClient* inspectorC lient) 74 InspectorController::InspectorController(Page* page, InspectorClient* inspectorC lient)
75 : m_instrumentingAgents(InstrumentingAgents::create()) 75 : m_instrumentingAgents(InstrumentingAgents::create())
76 , m_injectedScriptManager(InjectedScriptManager::createForPage()) 76 , m_injectedScriptManager(InjectedScriptManager::createForPage())
77 , m_state(adoptPtr(new InspectorCompositeState(inspectorClient))) 77 , m_state(adoptPtr(new InspectorCompositeState(inspectorClient)))
78 , m_overlay(InspectorOverlay::create(page, inspectorClient)) 78 , m_overlay(InspectorOverlay::create(page, inspectorClient))
79 , m_page(page) 79 , m_page(page)
80 , m_inspectorClient(inspectorClient) 80 , m_inspectorClient(inspectorClient)
81 , m_agents(m_instrumentingAgents.get(), m_state.get()) 81 , m_agents(m_instrumentingAgents.get(), m_state.get())
82 , m_isUnderTest(false) 82 , m_isUnderTest(false)
83 , m_initializeDeferredAgents(true)
pfeldman 2014/01/25 10:39:06 nit: i got used to the reversed semantics, i.e. m_
83 { 84 {
84 m_agents.append(InspectorInspectorAgent::create(page, m_injectedScriptManage r.get())); 85 InjectedScriptManager* injectedScriptManager = m_injectedScriptManager.get() ;
86 InspectorOverlay* overlay = m_overlay.get();
85 87
86 OwnPtr<InspectorPageAgent> pageAgentPtr(InspectorPageAgent::create(page, m_i njectedScriptManager.get(), inspectorClient, m_overlay.get())); 88 m_agents.append(InspectorInspectorAgent::create(m_page, injectedScriptManage r));
87 InspectorPageAgent* pageAgent = pageAgentPtr.get(); 89
90 OwnPtr<InspectorPageAgent> pageAgentPtr(InspectorPageAgent::create(m_page, i njectedScriptManager, inspectorClient, overlay));
91 m_pageAgent = pageAgentPtr.get();
88 m_agents.append(pageAgentPtr.release()); 92 m_agents.append(pageAgentPtr.release());
89 93
90 OwnPtr<InspectorDOMAgent> domAgentPtr(InspectorDOMAgent::create(pageAgent, m _injectedScriptManager.get(), m_overlay.get())); 94 OwnPtr<InspectorDOMAgent> domAgentPtr(InspectorDOMAgent::create(m_pageAgent, injectedScriptManager, overlay));
91 InspectorDOMAgent* domAgent = domAgentPtr.get(); 95 m_domAgent = domAgentPtr.get();
92 m_agents.append(domAgentPtr.release()); 96 m_agents.append(domAgentPtr.release());
93 97
94 OwnPtr<InspectorResourceAgent> resourceAgentPtr(InspectorResourceAgent::crea te(pageAgent, inspectorClient));
95 InspectorResourceAgent* resourceAgent = resourceAgentPtr.get();
96 m_agents.append(resourceAgentPtr.release());
97
98 m_agents.append(InspectorCSSAgent::create(domAgent, pageAgent, resourceAgent ));
99
100 m_agents.append(InspectorDatabaseAgent::create()); 98 m_agents.append(InspectorDatabaseAgent::create());
101 99
102 m_agents.append(InspectorIndexedDBAgent::create(m_injectedScriptManager.get( ), pageAgent)); 100 OwnPtr<InspectorTimelineAgent> timelineAgentPtr(InspectorTimelineAgent::crea te(m_pageAgent, m_domAgent, overlay,
103
104 m_agents.append(InspectorFileSystemAgent::create(pageAgent));
105
106 m_agents.append(InspectorDOMStorageAgent::create(pageAgent));
107
108 OwnPtr<InspectorMemoryAgent> memoryAgentPtr(InspectorMemoryAgent::create());
109 m_memoryAgent = memoryAgentPtr.get();
110 m_agents.append(memoryAgentPtr.release());
111
112 OwnPtr<InspectorTimelineAgent> timelineAgentPtr(InspectorTimelineAgent::crea te(pageAgent, domAgent, m_overlay.get(),
113 InspectorTimelineAgent::PageInspector, inspectorClient)); 101 InspectorTimelineAgent::PageInspector, inspectorClient));
114 m_timelineAgent = timelineAgentPtr.get(); 102 m_timelineAgent = timelineAgentPtr.get();
115 m_agents.append(timelineAgentPtr.release()); 103 m_agents.append(timelineAgentPtr.release());
116 104
117 m_agents.append(InspectorApplicationCacheAgent::create(pageAgent));
118
119 PageScriptDebugServer* pageScriptDebugServer = &PageScriptDebugServer::share d(); 105 PageScriptDebugServer* pageScriptDebugServer = &PageScriptDebugServer::share d();
120 106
121 m_agents.append(PageRuntimeAgent::create(m_injectedScriptManager.get(), page ScriptDebugServer, page, pageAgent)); 107 m_agents.append(PageRuntimeAgent::create(injectedScriptManager, pageScriptDe bugServer, m_page, m_pageAgent));
122 108
123 m_agents.append(PageConsoleAgent::create(m_injectedScriptManager.get(), domA gent, m_timelineAgent)); 109 m_agents.append(PageConsoleAgent::create(injectedScriptManager, m_domAgent, m_timelineAgent));
124
125 OwnPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgent::create(pa geScriptDebugServer, pageAgent, m_injectedScriptManager.get(), m_overlay.get())) ;
126 InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get();
127 m_agents.append(debuggerAgentPtr.release());
128
129 m_agents.append(InspectorDOMDebuggerAgent::create(domAgent, debuggerAgent));
130
131 m_agents.append(InspectorProfilerAgent::create(m_injectedScriptManager.get() , m_overlay.get()));
132
133 m_agents.append(InspectorHeapProfilerAgent::create(m_injectedScriptManager.g et()));
134
135 110
136 m_agents.append(InspectorWorkerAgent::create()); 111 m_agents.append(InspectorWorkerAgent::create());
137 112
138 m_agents.append(InspectorCanvasAgent::create(pageAgent, m_injectedScriptMana ger.get()));
139
140 m_agents.append(InspectorInputAgent::create(page, inspectorClient));
141
142 m_agents.append(InspectorLayerTreeAgent::create(domAgent, page));
143
144 ASSERT_ARG(inspectorClient, inspectorClient); 113 ASSERT_ARG(inspectorClient, inspectorClient);
145 m_injectedScriptManager->injectedScriptHost()->init(m_instrumentingAgents.ge t(), pageScriptDebugServer); 114 m_injectedScriptManager->injectedScriptHost()->init(m_instrumentingAgents.ge t(), pageScriptDebugServer);
146 } 115 }
147 116
148 InspectorController::~InspectorController() 117 InspectorController::~InspectorController()
149 { 118 {
150 m_instrumentingAgents->reset(); 119 m_instrumentingAgents->reset();
151 m_agents.discardAgents(); 120 m_agents.discardAgents();
152 ASSERT(!m_inspectorClient); 121 ASSERT(!m_inspectorClient);
153 } 122 }
154 123
155 PassOwnPtr<InspectorController> InspectorController::create(Page* page, Inspecto rClient* client) 124 PassOwnPtr<InspectorController> InspectorController::create(Page* page, Inspecto rClient* client)
156 { 125 {
157 return adoptPtr(new InspectorController(page, client)); 126 return adoptPtr(new InspectorController(page, client));
158 } 127 }
159 128
129 void InspectorController::initializeDeferredAgents()
130 {
131 if (!m_initializeDeferredAgents)
132 return;
133 m_initializeDeferredAgents = false;
134
135 InjectedScriptManager* injectedScriptManager = m_injectedScriptManager.get() ;
136 InspectorOverlay* overlay = m_overlay.get();
137
138 OwnPtr<InspectorResourceAgent> resourceAgentPtr(InspectorResourceAgent::crea te(m_pageAgent, m_inspectorClient));
139 InspectorResourceAgent* resourceAgent = resourceAgentPtr.get();
140 m_agents.append(resourceAgentPtr.release());
141
142 m_agents.append(InspectorCSSAgent::create(m_domAgent, m_pageAgent, resourceA gent));
143
144 m_agents.append(InspectorIndexedDBAgent::create(injectedScriptManager, m_pag eAgent));
145
146 m_agents.append(InspectorFileSystemAgent::create(m_pageAgent));
147
148 m_agents.append(InspectorDOMStorageAgent::create(m_pageAgent));
149
150 m_agents.append(InspectorMemoryAgent::create());
151
152 m_agents.append(InspectorApplicationCacheAgent::create(m_pageAgent));
153
154 PageScriptDebugServer* pageScriptDebugServer = &PageScriptDebugServer::share d();
155
156 OwnPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgent::create(pa geScriptDebugServer, m_pageAgent, injectedScriptManager, overlay));
157 InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get();
158 m_agents.append(debuggerAgentPtr.release());
159
160 m_agents.append(InspectorDOMDebuggerAgent::create(m_domAgent, debuggerAgent) );
161
162 m_agents.append(InspectorProfilerAgent::create(injectedScriptManager, overla y));
163
164 m_agents.append(InspectorHeapProfilerAgent::create(injectedScriptManager));
165
166 m_agents.append(InspectorCanvasAgent::create(m_pageAgent, injectedScriptMana ger));
167
168 m_agents.append(InspectorInputAgent::create(m_page, m_inspectorClient));
169
170 m_agents.append(InspectorLayerTreeAgent::create(m_domAgent, m_page));
171 }
172
160 void InspectorController::inspectedPageDestroyed() 173 void InspectorController::inspectedPageDestroyed()
161 { 174 {
162 disconnectFrontend(); 175 disconnectFrontend();
163 m_injectedScriptManager->disconnect(); 176 m_injectedScriptManager->disconnect();
164 m_inspectorClient = 0; 177 m_inspectorClient = 0;
165 m_page = 0; 178 m_page = 0;
166 } 179 }
167 180
168 void InspectorController::registerModuleAgent(PassOwnPtr<InspectorAgent> agent) 181 void InspectorController::registerModuleAgent(PassOwnPtr<InspectorAgent> agent)
169 { 182 {
(...skipping 13 matching lines...) Expand all
183 // If the page is supposed to serve as InspectorFrontend notify inspector fr ontend 196 // If the page is supposed to serve as InspectorFrontend notify inspector fr ontend
184 // client that it's cleared so that the client can expose inspector bindings . 197 // client that it's cleared so that the client can expose inspector bindings .
185 if (m_inspectorFrontendClient && frame == m_page->mainFrame()) 198 if (m_inspectorFrontendClient && frame == m_page->mainFrame())
186 m_inspectorFrontendClient->windowObjectCleared(); 199 m_inspectorFrontendClient->windowObjectCleared();
187 } 200 }
188 201
189 void InspectorController::connectFrontend(InspectorFrontendChannel* frontendChan nel) 202 void InspectorController::connectFrontend(InspectorFrontendChannel* frontendChan nel)
190 { 203 {
191 ASSERT(frontendChannel); 204 ASSERT(frontendChannel);
192 205
206 initializeDeferredAgents();
207
193 m_inspectorFrontend = adoptPtr(new InspectorFrontend(frontendChannel)); 208 m_inspectorFrontend = adoptPtr(new InspectorFrontend(frontendChannel));
194 // We can reconnect to existing front-end -> unmute state. 209 // We can reconnect to existing front-end -> unmute state.
195 m_state->unmute(); 210 m_state->unmute();
196 211
197 m_agents.setFrontend(m_inspectorFrontend.get()); 212 m_agents.setFrontend(m_inspectorFrontend.get());
198 213
199 InspectorInstrumentation::registerInstrumentingAgents(m_instrumentingAgents. get()); 214 InspectorInstrumentation::registerInstrumentingAgents(m_instrumentingAgents. get());
200 InspectorInstrumentation::frontendCreated(); 215 InspectorInstrumentation::frontendCreated();
201 216
202 ASSERT(m_inspectorClient); 217 ASSERT(m_inspectorClient);
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 timelineAgent->didComposite(); 450 timelineAgent->didComposite();
436 } 451 }
437 452
438 void InspectorController::processGPUEvent(double timestamp, int phase, bool fore ign, size_t usedGPUMemoryBytes) 453 void InspectorController::processGPUEvent(double timestamp, int phase, bool fore ign, size_t usedGPUMemoryBytes)
439 { 454 {
440 if (InspectorTimelineAgent* timelineAgent = m_instrumentingAgents->inspector TimelineAgent()) 455 if (InspectorTimelineAgent* timelineAgent = m_instrumentingAgents->inspector TimelineAgent())
441 timelineAgent->processGPUEvent(InspectorTimelineAgent::GPUEvent(timestam p, phase, foreign, usedGPUMemoryBytes)); 456 timelineAgent->processGPUEvent(InspectorTimelineAgent::GPUEvent(timestam p, phase, foreign, usedGPUMemoryBytes));
442 } 457 }
443 458
444 } // namespace WebCore 459 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorController.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698