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

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

Issue 267393003: DevTools: Load document (html) content from disk cache in page agent enabling. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
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 16 matching lines...) Expand all
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "core/inspector/InspectorController.h" 32 #include "core/inspector/InspectorController.h"
33 33
34 #include "InspectorBackendDispatcher.h" 34 #include "InspectorBackendDispatcher.h"
35 #include "InspectorFrontend.h" 35 #include "InspectorFrontend.h"
36 #include "bindings/v8/DOMWrapperWorld.h" 36 #include "bindings/v8/DOMWrapperWorld.h"
37 #include "core/html/VoidCallback.h"
37 #include "core/inspector/IdentifiersFactory.h" 38 #include "core/inspector/IdentifiersFactory.h"
38 #include "core/inspector/InjectedScriptHost.h" 39 #include "core/inspector/InjectedScriptHost.h"
39 #include "core/inspector/InjectedScriptManager.h" 40 #include "core/inspector/InjectedScriptManager.h"
40 #include "core/inspector/InspectorApplicationCacheAgent.h" 41 #include "core/inspector/InspectorApplicationCacheAgent.h"
41 #include "core/inspector/InspectorCSSAgent.h" 42 #include "core/inspector/InspectorCSSAgent.h"
42 #include "core/inspector/InspectorCanvasAgent.h" 43 #include "core/inspector/InspectorCanvasAgent.h"
43 #include "core/inspector/InspectorClient.h" 44 #include "core/inspector/InspectorClient.h"
44 #include "core/inspector/InspectorDOMAgent.h" 45 #include "core/inspector/InspectorDOMAgent.h"
45 #include "core/inspector/InspectorDOMDebuggerAgent.h" 46 #include "core/inspector/InspectorDOMDebuggerAgent.h"
46 #include "core/inspector/InspectorDOMStorageAgent.h" 47 #include "core/inspector/InspectorDOMStorageAgent.h"
47 #include "core/inspector/InspectorDebuggerAgent.h" 48 #include "core/inspector/InspectorDebuggerAgent.h"
48 #include "core/inspector/InspectorFrontendClient.h" 49 #include "core/inspector/InspectorFrontendClient.h"
49 #include "core/inspector/InspectorHeapProfilerAgent.h" 50 #include "core/inspector/InspectorHeapProfilerAgent.h"
50 #include "core/inspector/InspectorInputAgent.h" 51 #include "core/inspector/InspectorInputAgent.h"
51 #include "core/inspector/InspectorInspectorAgent.h" 52 #include "core/inspector/InspectorInspectorAgent.h"
52 #include "core/inspector/InspectorInstrumentation.h" 53 #include "core/inspector/InspectorInstrumentation.h"
53 #include "core/inspector/InspectorLayerTreeAgent.h" 54 #include "core/inspector/InspectorLayerTreeAgent.h"
54 #include "core/inspector/InspectorMemoryAgent.h" 55 #include "core/inspector/InspectorMemoryAgent.h"
55 #include "core/inspector/InspectorOverlay.h" 56 #include "core/inspector/InspectorOverlay.h"
56 #include "core/inspector/InspectorPageAgent.h" 57 #include "core/inspector/InspectorPageAgent.h"
57 #include "core/inspector/InspectorProfilerAgent.h" 58 #include "core/inspector/InspectorProfilerAgent.h"
58 #include "core/inspector/InspectorResourceAgent.h" 59 #include "core/inspector/InspectorResourceAgent.h"
60 #include "core/inspector/InspectorResourceContentLoader.h"
59 #include "core/inspector/InspectorState.h" 61 #include "core/inspector/InspectorState.h"
60 #include "core/inspector/InspectorTimelineAgent.h" 62 #include "core/inspector/InspectorTimelineAgent.h"
61 #include "core/inspector/InspectorTracingAgent.h" 63 #include "core/inspector/InspectorTracingAgent.h"
62 #include "core/inspector/InspectorWorkerAgent.h" 64 #include "core/inspector/InspectorWorkerAgent.h"
63 #include "core/inspector/InstrumentingAgents.h" 65 #include "core/inspector/InstrumentingAgents.h"
64 #include "core/inspector/PageConsoleAgent.h" 66 #include "core/inspector/PageConsoleAgent.h"
65 #include "core/inspector/PageDebuggerAgent.h" 67 #include "core/inspector/PageDebuggerAgent.h"
66 #include "core/inspector/PageRuntimeAgent.h" 68 #include "core/inspector/PageRuntimeAgent.h"
67 #include "core/page/Page.h" 69 #include "core/page/Page.h"
68 #include "core/rendering/RenderLayer.h" 70 #include "core/rendering/RenderLayer.h"
69 #include "platform/PlatformMouseEvent.h" 71 #include "platform/PlatformMouseEvent.h"
70 72
71 namespace WebCore { 73 namespace WebCore {
72 74
75 class InspectorController::InspectorResourceContentLoaderCallback FINAL : public VoidCallback {
76 public:
77 InspectorResourceContentLoaderCallback(InspectorController*);
78 virtual void handleEvent() OVERRIDE;
79
80 private:
81 InspectorController* m_inspectorController;
82 };
83
84 InspectorController::InspectorResourceContentLoaderCallback::InspectorResourceCo ntentLoaderCallback(InspectorController* inspectorController)
85 : m_inspectorController(inspectorController)
86 {
87 }
88
89 void InspectorController::InspectorResourceContentLoaderCallback::handleEvent()
90 {
91 m_inspectorController->resourcesContentLoaded();
92 }
93
73 InspectorController::InspectorController(Page* page, InspectorClient* inspectorC lient) 94 InspectorController::InspectorController(Page* page, InspectorClient* inspectorC lient)
74 : m_instrumentingAgents(InstrumentingAgents::create()) 95 : m_instrumentingAgents(InstrumentingAgents::create())
75 , m_injectedScriptManager(InjectedScriptManager::createForPage()) 96 , m_injectedScriptManager(InjectedScriptManager::createForPage())
76 , m_state(adoptPtr(new InspectorCompositeState(inspectorClient))) 97 , m_state(adoptPtr(new InspectorCompositeState(inspectorClient)))
77 , m_overlay(InspectorOverlay::create(page, inspectorClient)) 98 , m_overlay(InspectorOverlay::create(page, inspectorClient))
78 , m_layerTreeAgent(0) 99 , m_layerTreeAgent(0)
79 , m_page(page) 100 , m_page(page)
80 , m_inspectorClient(inspectorClient) 101 , m_inspectorClient(inspectorClient)
81 , m_agents(m_instrumentingAgents.get(), m_state.get()) 102 , m_agents(m_instrumentingAgents.get(), m_state.get())
82 , m_isUnderTest(false) 103 , m_isUnderTest(false)
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 163
143 void InspectorController::initializeDeferredAgents() 164 void InspectorController::initializeDeferredAgents()
144 { 165 {
145 if (m_deferredAgentsInitialized) 166 if (m_deferredAgentsInitialized)
146 return; 167 return;
147 m_deferredAgentsInitialized = true; 168 m_deferredAgentsInitialized = true;
148 169
149 InjectedScriptManager* injectedScriptManager = m_injectedScriptManager.get() ; 170 InjectedScriptManager* injectedScriptManager = m_injectedScriptManager.get() ;
150 InspectorOverlay* overlay = m_overlay.get(); 171 InspectorOverlay* overlay = m_overlay.get();
151 172
152 OwnPtr<InspectorResourceAgent> resourceAgentPtr(InspectorResourceAgent::crea te(m_pageAgent)); 173 m_agents.append(InspectorCSSAgent::create(m_domAgent, m_pageAgent));
153 InspectorResourceAgent* resourceAgent = resourceAgentPtr.get();
154 m_agents.append(resourceAgentPtr.release());
155
156 m_agents.append(InspectorCSSAgent::create(m_domAgent, m_pageAgent, resourceA gent));
157 174
158 m_agents.append(InspectorDOMStorageAgent::create(m_pageAgent)); 175 m_agents.append(InspectorDOMStorageAgent::create(m_pageAgent));
159 176
160 m_agents.append(InspectorMemoryAgent::create()); 177 m_agents.append(InspectorMemoryAgent::create());
161 178
162 m_agents.append(InspectorApplicationCacheAgent::create(m_pageAgent)); 179 m_agents.append(InspectorApplicationCacheAgent::create(m_pageAgent));
163 180
181 m_agents.append(InspectorResourceAgent::create(m_pageAgent));
182
164 PageScriptDebugServer* pageScriptDebugServer = &PageScriptDebugServer::share d(); 183 PageScriptDebugServer* pageScriptDebugServer = &PageScriptDebugServer::share d();
165 184
166 OwnPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgent::create(pa geScriptDebugServer, m_pageAgent, injectedScriptManager, overlay)); 185 OwnPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgent::create(pa geScriptDebugServer, m_pageAgent, injectedScriptManager, overlay));
167 InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get(); 186 InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get();
168 m_agents.append(debuggerAgentPtr.release()); 187 m_agents.append(debuggerAgentPtr.release());
169 188
170 m_agents.append(InspectorDOMDebuggerAgent::create(m_domAgent, debuggerAgent) ); 189 m_agents.append(InspectorDOMDebuggerAgent::create(m_domAgent, debuggerAgent) );
171 190
172 m_agents.append(InspectorProfilerAgent::create(injectedScriptManager, overla y)); 191 m_agents.append(InspectorProfilerAgent::create(injectedScriptManager, overla y));
173 192
(...skipping 26 matching lines...) Expand all
200 } 219 }
201 220
202 void InspectorController::didClearDocumentOfWindowObject(LocalFrame* frame) 221 void InspectorController::didClearDocumentOfWindowObject(LocalFrame* frame)
203 { 222 {
204 // If the page is supposed to serve as InspectorFrontend notify inspector fr ontend 223 // If the page is supposed to serve as InspectorFrontend notify inspector fr ontend
205 // client that it's cleared so that the client can expose inspector bindings . 224 // client that it's cleared so that the client can expose inspector bindings .
206 if (m_inspectorFrontendClient && frame == m_page->mainFrame()) 225 if (m_inspectorFrontendClient && frame == m_page->mainFrame())
207 m_inspectorFrontendClient->windowObjectCleared(); 226 m_inspectorFrontendClient->windowObjectCleared();
208 } 227 }
209 228
210 void InspectorController::connectFrontend(InspectorFrontendChannel* frontendChan nel) 229 void InspectorController::connectFrontend(InspectorFrontendChannel* frontendChan nel, bool isReusing)
211 { 230 {
212 ASSERT(frontendChannel); 231 ASSERT(frontendChannel);
213 232
214 initializeDeferredAgents(); 233 initializeDeferredAgents();
215 234
216 m_inspectorFrontend = adoptPtr(new InspectorFrontend(frontendChannel)); 235 m_inspectorFrontend = adoptPtr(new InspectorFrontend(frontendChannel));
217 // We can reconnect to existing front-end -> unmute state. 236 // We can reconnect to existing front-end -> unmute state.
218 m_state->unmute(); 237 m_state->unmute();
219 238
220 m_agents.setFrontend(m_inspectorFrontend.get()); 239 m_agents.setFrontend(m_inspectorFrontend.get());
221 240
222 InspectorInstrumentation::registerInstrumentingAgents(m_instrumentingAgents. get()); 241 InspectorInstrumentation::registerInstrumentingAgents(m_instrumentingAgents. get());
223 InspectorInstrumentation::frontendCreated(); 242 InspectorInstrumentation::frontendCreated();
224 243
225 ASSERT(m_inspectorClient); 244 ASSERT(m_inspectorClient);
226 m_inspectorBackendDispatcher = InspectorBackendDispatcher::create(frontendCh annel); 245 m_inspectorBackendDispatcher = InspectorBackendDispatcher::create(frontendCh annel);
227 246
228 m_agents.registerInDispatcher(m_inspectorBackendDispatcher.get()); 247 m_agents.registerInDispatcher(m_inspectorBackendDispatcher.get());
248
249 if (!isReusing)
250 m_inspectorResourceContentLoader = adoptPtr(new InspectorResourceContent Loader(m_page, adoptPtr(new InspectorResourceContentLoaderCallback(this))));
251 }
252
253 void InspectorController::resourcesContentLoaded()
254 {
255 for (Vector<String>::const_iterator it = m_messages.begin(); it != m_message s.end(); ++it)
pfeldman 2014/05/20 19:50:49 You want to iterate a copy just in case.
256 dispatchMessageFromFrontend(*it);
257 m_messages.clear();
229 } 258 }
230 259
231 void InspectorController::disconnectFrontend() 260 void InspectorController::disconnectFrontend()
232 { 261 {
233 if (!m_inspectorFrontend) 262 if (!m_inspectorFrontend)
234 return; 263 return;
264 m_inspectorResourceContentLoader.clear();
235 m_inspectorBackendDispatcher->clearFrontend(); 265 m_inspectorBackendDispatcher->clearFrontend();
236 m_inspectorBackendDispatcher.clear(); 266 m_inspectorBackendDispatcher.clear();
237 267
238 // Destroying agents would change the state, but we don't want that. 268 // Destroying agents would change the state, but we don't want that.
239 // Pre-disconnect state will be used to restore inspector agents. 269 // Pre-disconnect state will be used to restore inspector agents.
240 m_state->mute(); 270 m_state->mute();
241 271
242 m_agents.clearFrontend(); 272 m_agents.clearFrontend();
243 273
244 m_inspectorFrontend.clear(); 274 m_inspectorFrontend.clear();
245 275
246 // relese overlay page resources 276 // relese overlay page resources
247 m_overlay->freePage(); 277 m_overlay->freePage();
248 InspectorInstrumentation::frontendDeleted(); 278 InspectorInstrumentation::frontendDeleted();
249 InspectorInstrumentation::unregisterInstrumentingAgents(m_instrumentingAgent s.get()); 279 InspectorInstrumentation::unregisterInstrumentingAgents(m_instrumentingAgent s.get());
250 } 280 }
251 281
252 void InspectorController::reconnectFrontend() 282 void InspectorController::reconnectFrontend()
253 { 283 {
254 if (!m_inspectorFrontend) 284 if (!m_inspectorFrontend)
255 return; 285 return;
256 InspectorFrontendChannel* frontendChannel = m_inspectorFrontend->channel(); 286 InspectorFrontendChannel* frontendChannel = m_inspectorFrontend->channel();
257 disconnectFrontend(); 287 disconnectFrontend();
258 connectFrontend(frontendChannel); 288 connectFrontend(frontendChannel);
259 } 289 }
260 290
261 void InspectorController::reuseFrontend(InspectorFrontendChannel* frontendChanne l, const String& inspectorStateCookie) 291 void InspectorController::reuseFrontend(InspectorFrontendChannel* frontendChanne l, const String& inspectorStateCookie)
262 { 292 {
263 ASSERT(!m_inspectorFrontend); 293 ASSERT(!m_inspectorFrontend);
264 connectFrontend(frontendChannel); 294 connectFrontend(frontendChannel, true);
265 m_state->loadFromCookie(inspectorStateCookie); 295 m_state->loadFromCookie(inspectorStateCookie);
266 m_agents.restore(); 296 m_agents.restore();
267 } 297 }
268 298
269 void InspectorController::setProcessId(long processId) 299 void InspectorController::setProcessId(long processId)
270 { 300 {
271 IdentifiersFactory::setProcessId(processId); 301 IdentifiersFactory::setProcessId(processId);
272 } 302 }
273 303
274 void InspectorController::setLayerTreeId(int id) 304 void InspectorController::setLayerTreeId(int id)
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 } 351 }
322 352
323 void InspectorController::setInjectedScriptForOrigin(const String& origin, const String& source) 353 void InspectorController::setInjectedScriptForOrigin(const String& origin, const String& source)
324 { 354 {
325 if (InspectorInspectorAgent* inspectorAgent = m_instrumentingAgents->inspect orInspectorAgent()) 355 if (InspectorInspectorAgent* inspectorAgent = m_instrumentingAgents->inspect orInspectorAgent())
326 inspectorAgent->setInjectedScriptForOrigin(origin, source); 356 inspectorAgent->setInjectedScriptForOrigin(origin, source);
327 } 357 }
328 358
329 void InspectorController::dispatchMessageFromFrontend(const String& message) 359 void InspectorController::dispatchMessageFromFrontend(const String& message)
330 { 360 {
361 if (m_inspectorResourceContentLoader && !m_inspectorResourceContentLoader->h asFinished()) {
362 m_messages.append(message);
363 return;
364 }
365
331 if (m_inspectorBackendDispatcher) 366 if (m_inspectorBackendDispatcher)
332 m_inspectorBackendDispatcher->dispatch(message); 367 m_inspectorBackendDispatcher->dispatch(message);
333 } 368 }
334 369
335 bool InspectorController::handleGestureEvent(LocalFrame* frame, const PlatformGe stureEvent& event) 370 bool InspectorController::handleGestureEvent(LocalFrame* frame, const PlatformGe stureEvent& event)
336 { 371 {
337 // Overlay should not consume events. 372 // Overlay should not consume events.
338 m_overlay->handleGestureEvent(event); 373 m_overlay->handleGestureEvent(event);
339 if (InspectorDOMAgent* domAgent = m_instrumentingAgents->inspectorDOMAgent() ) 374 if (InspectorDOMAgent* domAgent = m_instrumentingAgents->inspectorDOMAgent() )
340 return domAgent->handleGestureEvent(frame, event); 375 return domAgent->handleGestureEvent(frame, event);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 domDebuggerAgent->didProcessTask(); 453 domDebuggerAgent->didProcessTask();
419 } 454 }
420 455
421 void InspectorController::flushPendingFrontendMessages() 456 void InspectorController::flushPendingFrontendMessages()
422 { 457 {
423 m_agents.flushPendingFrontendMessages(); 458 m_agents.flushPendingFrontendMessages();
424 } 459 }
425 460
426 void InspectorController::didCommitLoadForMainFrame() 461 void InspectorController::didCommitLoadForMainFrame()
427 { 462 {
463 m_inspectorResourceContentLoader.clear();
428 Vector<InspectorAgent*> agents = m_moduleAgents; 464 Vector<InspectorAgent*> agents = m_moduleAgents;
429 for (size_t i = 0; i < agents.size(); i++) 465 for (size_t i = 0; i < agents.size(); i++)
430 agents[i]->didCommitLoadForMainFrame(); 466 agents[i]->didCommitLoadForMainFrame();
431 } 467 }
432 468
433 void InspectorController::didBeginFrame(int frameId) 469 void InspectorController::didBeginFrame(int frameId)
434 { 470 {
435 if (InspectorTimelineAgent* timelineAgent = m_instrumentingAgents->inspector TimelineAgent()) 471 if (InspectorTimelineAgent* timelineAgent = m_instrumentingAgents->inspector TimelineAgent())
436 timelineAgent->didBeginFrame(frameId); 472 timelineAgent->didBeginFrame(frameId);
437 if (InspectorCanvasAgent* canvasAgent = m_instrumentingAgents->inspectorCanv asAgent()) 473 if (InspectorCanvasAgent* canvasAgent = m_instrumentingAgents->inspectorCanv asAgent())
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 m_layerTreeAgent->willAddPageOverlay(layer); 510 m_layerTreeAgent->willAddPageOverlay(layer);
475 } 511 }
476 512
477 void InspectorController::didRemovePageOverlay(const GraphicsLayer* layer) 513 void InspectorController::didRemovePageOverlay(const GraphicsLayer* layer)
478 { 514 {
479 if (m_layerTreeAgent) 515 if (m_layerTreeAgent)
480 m_layerTreeAgent->didRemovePageOverlay(layer); 516 m_layerTreeAgent->didRemovePageOverlay(layer);
481 } 517 }
482 518
483 } // namespace WebCore 519 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698