Changeset 80239 in webkit
- Timestamp:
- Mar 3, 2011 7:52:10 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r80235 r80239 1 2011-03-03 Yury Semikhatsky <yurys@chromium.org> 2 3 Reviewed by Pavel Feldman. 4 5 Web Inspector: Resource agent should have same lifetime as Inspector agent 6 https://bugs.webkit.org/show_bug.cgi?id=55461 7 8 * inspector/Inspector.idl: 9 * inspector/InspectorAgent.cpp: 10 (WebCore::InspectorAgent::InspectorAgent): 11 (WebCore::InspectorAgent::inspectedPageDestroyed): disconnectFrontend is called before the agent is destroyed 12 to clear frontend reference in all agents. 13 (WebCore::InspectorAgent::restoreInspectorStateFromCookie): 14 (WebCore::InspectorAgent::setFrontend): 15 (WebCore::InspectorAgent::disconnectFrontend): 16 (WebCore::InspectorAgent::releaseFrontendLifetimeAgents): 17 (WebCore::InspectorAgent::didCommitLoad): 18 * inspector/InspectorAgent.h: 19 (WebCore::InspectorAgent::resourceAgent): 20 * inspector/InspectorBrowserDebuggerAgent.cpp: 21 (WebCore::InspectorBrowserDebuggerAgent::~InspectorBrowserDebuggerAgent): 22 * inspector/InspectorDebuggerAgent.cpp: 23 (WebCore::InspectorDebuggerAgent::~InspectorDebuggerAgent): 24 * inspector/InspectorInstrumentation.cpp: 25 (WebCore::InspectorInstrumentation::didCreateWebSocketImpl): 26 (WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl): 27 (WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl): 28 (WebCore::InspectorInstrumentation::didCloseWebSocketImpl): 29 (WebCore::InspectorInstrumentation::retrieveResourceAgent): 30 * inspector/InspectorResourceAgent.cpp: 31 (WebCore::InspectorResourceAgent::setFrontend): 32 (WebCore::InspectorResourceAgent::clearFrontend): 33 (WebCore::InspectorResourceAgent::restore): 34 (WebCore::InspectorResourceAgent::~InspectorResourceAgent): 35 (WebCore::InspectorResourceAgent::enable): 36 (WebCore::InspectorResourceAgent::disable): 37 (WebCore::InspectorResourceAgent::InspectorResourceAgent): 38 * inspector/InspectorResourceAgent.h: 39 (WebCore::InspectorResourceAgent::create): 40 * inspector/InspectorTimelineAgent.cpp: 41 (WebCore::InspectorTimelineAgent::restore): 42 * inspector/InspectorTimelineAgent.h: 43 * inspector/front-end/NetworkManager.js: 44 (WebInspector.NetworkManager): 45 (WebInspector.NetworkManager.prototype.frontendReused): 46 * inspector/front-end/inspector.js: 47 (WebInspector.frontendReused): 48 1 49 2011-03-03 Andras Becsi <abecsi@webkit.org> 2 50 -
trunk/Source/WebCore/inspector/Inspector.idl
r80204 r80239 93 93 94 94 interface [Conditional=INSPECTOR] Network { 95 void cachedResources(out Object resources); 95 void enable(out Object resources); 96 void disable(); 96 97 void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out boolean success, out String content); 97 98 void setExtraHeaders(in Object headers); -
trunk/Source/WebCore/inspector/InspectorAgent.cpp
r80204 r80239 149 149 , m_state(new InspectorState(client)) 150 150 , m_timelineAgent(InspectorTimelineAgent::create(m_instrumentingAgents.get(), m_state.get())) 151 , m_resourceAgent(InspectorResourceAgent::create(m_instrumentingAgents.get(), page, m_state.get())) 151 152 , m_consoleAgent(new InspectorConsoleAgent(m_instrumentingAgents.get(), this, m_state.get(), m_injectedScriptHost.get(), m_domAgent.get())) 152 153 #if ENABLE(JAVASCRIPT_DEBUGGER) … … 171 172 void InspectorAgent::inspectedPageDestroyed() 172 173 { 173 if (m_frontend) 174 if (m_frontend) { 174 175 m_frontend->inspector()->disconnectFromBackend(); 176 disconnectFrontend(); 177 } 175 178 176 179 ErrorString error; … … 206 209 pushDataCollectedOffline(); 207 210 208 m_resourceAgent = InspectorResourceAgent::restore(m_inspectedPage, m_state.get(), m_frontend);209 m_timelineAgent->restore( m_state.get(), m_frontend);211 m_resourceAgent->restore(); 212 m_timelineAgent->restore(); 210 213 211 214 #if ENABLE(JAVASCRIPT_DEBUGGER) … … 366 369 m_consoleAgent->setFrontend(m_frontend); 367 370 m_timelineAgent->setFrontend(m_frontend); 371 m_resourceAgent->setFrontend(m_frontend); 368 372 #if ENABLE(JAVASCRIPT_DEBUGGER) 369 373 m_debuggerAgent->setFrontend(m_frontend); … … 408 412 m_domAgent->clearFrontend(); 409 413 m_timelineAgent->clearFrontend(); 414 m_resourceAgent->clearFrontend(); 410 415 #if ENABLE(DATABASE) 411 416 m_databaseAgent->clearFrontend(); … … 419 424 } 420 425 421 InspectorResourceAgent* InspectorAgent::resourceAgent()422 {423 if (!m_resourceAgent && m_frontend)424 m_resourceAgent = InspectorResourceAgent::create(m_inspectedPage, m_state.get(), m_frontend);425 return m_resourceAgent.get();426 }427 428 426 void InspectorAgent::createFrontendLifetimeAgents() 429 427 { … … 437 435 void InspectorAgent::releaseFrontendLifetimeAgents() 438 436 { 439 m_resourceAgent.clear();440 437 m_runtimeAgent.clear(); 441 438 #if ENABLE(OFFLINE_WEB_APPLICATIONS) … … 508 505 return; 509 506 510 if ( m_resourceAgent)511 m_resourceAgent->didCommitLoad(loader);507 if (InspectorResourceAgent* resourceAgent = m_instrumentingAgents->inspectorResourceAgent()) 508 resourceAgent->didCommitLoad(loader); 512 509 513 510 ASSERT(m_inspectedPage); … … 760 757 } 761 758 762 #if ENABLE(WEB_SOCKETS)763 void InspectorAgent::didCreateWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL)764 {765 if (!enabled())766 return;767 ASSERT(m_inspectedPage);768 769 if (m_resourceAgent)770 m_resourceAgent->didCreateWebSocket(identifier, requestURL);771 UNUSED_PARAM(documentURL);772 }773 774 void InspectorAgent::willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest& request)775 {776 if (m_resourceAgent)777 m_resourceAgent->willSendWebSocketHandshakeRequest(identifier, request);778 }779 780 void InspectorAgent::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse& response)781 {782 if (m_resourceAgent)783 m_resourceAgent->didReceiveWebSocketHandshakeResponse(identifier, response);784 }785 786 void InspectorAgent::didCloseWebSocket(unsigned long identifier)787 {788 if (m_resourceAgent)789 m_resourceAgent->didCloseWebSocket(identifier);790 }791 #endif // ENABLE(WEB_SOCKETS)792 793 759 #if ENABLE(JAVASCRIPT_DEBUGGER) 794 760 bool InspectorAgent::isRecordingUserInitiatedProfile() const -
trunk/Source/WebCore/inspector/InspectorAgent.h
r79858 r80239 95 95 #endif 96 96 97 #if ENABLE(WEB_SOCKETS)98 class WebSocketHandshakeRequest;99 class WebSocketHandshakeResponse;100 #endif101 102 97 typedef String ErrorString; 103 98 … … 137 132 void disconnectFrontend(); 138 133 139 InspectorResourceAgent* resourceAgent();140 141 134 InstrumentingAgents* instrumentingAgents() const { return m_instrumentingAgents.get(); } 142 135 … … 147 140 InspectorRuntimeAgent* runtimeAgent() { return m_runtimeAgent.get(); } 148 141 InspectorTimelineAgent* timelineAgent() { return m_timelineAgent.get(); } 142 InspectorResourceAgent* resourceAgent() { return m_resourceAgent.get(); } 149 143 #if ENABLE(DATABASE) 150 144 InspectorDatabaseAgent* databaseAgent() { return m_databaseAgent.get(); } … … 182 176 void didCreateWorker(intptr_t, const String& url, bool isSharedWorker); 183 177 void didDestroyWorker(intptr_t); 184 #endif185 186 #if ENABLE(WEB_SOCKETS)187 void didCreateWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL);188 void willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest&);189 void didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse&);190 void didCloseWebSocket(unsigned long identifier);191 178 #endif 192 179 -
trunk/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
r79878 r80239 86 86 { 87 87 m_debuggerAgent->setListener(0); 88 clearFrontend();88 ASSERT(!m_instrumentingAgents->inspectorBrowserDebuggerAgent()); 89 89 } 90 90 -
trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
r80204 r80239 69 69 InspectorDebuggerAgent::~InspectorDebuggerAgent() 70 70 { 71 ScriptDebugServer::shared().removeListener(this, m_inspectedPage); 72 m_pausedScriptState = 0; 71 ASSERT(!m_instrumentingAgents->inspectorDebuggerAgent()); 73 72 } 74 73 -
trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp
r79858 r80239 625 625 626 626 #if ENABLE(WEB_SOCKETS) 627 void InspectorInstrumentation::didCreateWebSocketImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const KURL& requestURL, const KURL& documentURL) 628 { 629 inspectorAgent->didCreateWebSocket(identifier, requestURL, documentURL); 627 void InspectorInstrumentation::didCreateWebSocketImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const KURL& requestURL, const KURL&) 628 { 629 if (!inspectorAgent->enabled()) 630 return; 631 if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent)) 632 resourceAgent->didCreateWebSocket(identifier, requestURL); 630 633 } 631 634 632 635 void InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const WebSocketHandshakeRequest& request) 633 636 { 634 inspectorAgent->willSendWebSocketHandshakeRequest(identifier, request); 637 if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent)) 638 resourceAgent->willSendWebSocketHandshakeRequest(identifier, request); 635 639 } 636 640 637 641 void InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const WebSocketHandshakeResponse& response) 638 642 { 639 inspectorAgent->didReceiveWebSocketHandshakeResponse(identifier, response); 643 if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent)) 644 resourceAgent->didReceiveWebSocketHandshakeResponse(identifier, response); 640 645 } 641 646 642 647 void InspectorInstrumentation::didCloseWebSocketImpl(InspectorAgent* inspectorAgent, unsigned long identifier) 643 648 { 644 inspectorAgent->didCloseWebSocket(identifier); 649 if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent)) 650 resourceAgent->didCloseWebSocket(identifier); 645 651 } 646 652 #endif … … 696 702 InspectorResourceAgent* InspectorInstrumentation::retrieveResourceAgent(InspectorAgent* inspectorAgent) 697 703 { 698 return inspectorAgent-> resourceAgent();704 return inspectorAgent->instrumentingAgents()->inspectorResourceAgent(); 699 705 } 700 706 -
trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp
r80204 r80239 48 48 #include "InspectorState.h" 49 49 #include "InspectorValues.h" 50 #include "InstrumentingAgents.h" 50 51 #include "KURL.h" 51 52 #include "Page.h" … … 73 74 } 74 75 75 PassRefPtr<InspectorResourceAgent> InspectorResourceAgent::restore(Page* page, InspectorState* state, InspectorFrontend* frontend) 76 { 77 if (state->getBoolean(ResourceAgentState::resourceAgentEnabled)) 78 return create(page, state, frontend); 79 return 0; 76 void InspectorResourceAgent::setFrontend(InspectorFrontend* frontend) 77 { 78 m_frontend = frontend->network(); 79 } 80 81 void InspectorResourceAgent::clearFrontend() 82 { 83 m_frontend = 0; 84 disable(0); 85 } 86 87 void InspectorResourceAgent::restore() 88 { 89 if (m_state->getBoolean(ResourceAgentState::resourceAgentEnabled)) 90 enable(); 80 91 } 81 92 … … 297 308 InspectorResourceAgent::~InspectorResourceAgent() 298 309 { 299 m_state->setBoolean(ResourceAgentState::resourceAgentEnabled, false);310 ASSERT(!m_instrumentingAgents->inspectorResourceAgent()); 300 311 } 301 312 … … 499 510 } 500 511 501 void InspectorResourceAgent::cachedResources(ErrorString*, RefPtr<InspectorObject>* object) 502 { 512 void InspectorResourceAgent::enable(ErrorString*, RefPtr<InspectorObject>* object) 513 { 514 enable(); 503 515 *object = buildObjectForFrameTree(m_page->mainFrame(), true); 516 } 517 518 void InspectorResourceAgent::enable() 519 { 520 if (!m_frontend) 521 return; 522 m_state->setBoolean(ResourceAgentState::resourceAgentEnabled, true); 523 m_instrumentingAgents->setInspectorResourceAgent(this); 524 } 525 526 void InspectorResourceAgent::disable(ErrorString*) 527 { 528 m_state->setBoolean(ResourceAgentState::resourceAgentEnabled, false); 529 m_instrumentingAgents->setInspectorResourceAgent(0); 504 530 } 505 531 … … 517 543 } 518 544 519 InspectorResourceAgent::InspectorResourceAgent(Page* page, InspectorState* state, InspectorFrontend* frontend) 520 : m_page(page) 545 InspectorResourceAgent::InspectorResourceAgent(InstrumentingAgents* instrumentingAgents, Page* page, InspectorState* state) 546 : m_instrumentingAgents(instrumentingAgents) 547 , m_page(page) 521 548 , m_state(state) 522 , m_frontend(frontend->network()) 523 { 524 m_state->setBoolean(ResourceAgentState::resourceAgentEnabled, true); 549 , m_frontend(0) 550 { 525 551 } 526 552 -
trunk/Source/WebCore/inspector/InspectorResourceAgent.h
r80204 r80239 54 54 class InspectorObject; 55 55 class InspectorState; 56 class InstrumentingAgents; 56 57 class KURL; 57 58 class Page; … … 70 71 class InspectorResourceAgent : public RefCounted<InspectorResourceAgent> { 71 72 public: 72 static PassRefPtr<InspectorResourceAgent> create( Page* page, InspectorState* state, InspectorFrontend* frontend)73 static PassRefPtr<InspectorResourceAgent> create(InstrumentingAgents* instrumentingAgents, Page* page, InspectorState* state) 73 74 { 74 return adoptRef(new InspectorResourceAgent( page, state, frontend));75 return adoptRef(new InspectorResourceAgent(instrumentingAgents, page, state)); 75 76 } 77 78 void setFrontend(InspectorFrontend*); 79 void clearFrontend(); 80 void restore(); 76 81 77 82 static PassRefPtr<InspectorResourceAgent> restore(Page*, InspectorState*, InspectorFrontend*); … … 106 111 107 112 // Called from frontend 108 void cachedResources(ErrorString*, RefPtr<InspectorObject>*); 113 void enable(ErrorString*, RefPtr<InspectorObject>*); 114 void disable(ErrorString*); 109 115 void resourceContent(ErrorString*, unsigned long frameId, const String& url, bool base64Encode, bool* resourceFound, String* content); 110 116 void setExtraHeaders(ErrorString*, PassRefPtr<InspectorObject>); 111 117 112 118 private: 113 InspectorResourceAgent( Page* page, InspectorState*, InspectorFrontend* frontend);119 InspectorResourceAgent(InstrumentingAgents*, Page*, InspectorState*); 114 120 121 void enable(); 122 123 InstrumentingAgents* m_instrumentingAgents; 115 124 Page* m_page; 116 125 InspectorState* m_state; -
trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp
r80204 r80239 88 88 } 89 89 90 void InspectorTimelineAgent::restore(InspectorState* state, InspectorFrontend* frontend) 91 { 92 setFrontend(frontend); 93 if (state->getBoolean(TimelineAgentState::timelineAgentEnabled)) { 90 void InspectorTimelineAgent::restore() 91 { 92 if (m_state->getBoolean(TimelineAgentState::timelineAgentEnabled)) { 94 93 ErrorString error; 95 94 start(&error); -
trunk/Source/WebCore/inspector/InspectorTimelineAgent.h
r80204 r80239 89 89 void setFrontend(InspectorFrontend*); 90 90 void clearFrontend(); 91 92 void restore(InspectorState*, InspectorFrontend*); 91 void restore(); 93 92 94 93 void start(ErrorString* error); -
trunk/Source/WebCore/inspector/front-end/NetworkManager.js
r78717 r80239 34 34 this._resourceTreeModel = resourceTreeModel; 35 35 this._dispatcher = new WebInspector.NetworkDispatcher(resourceTreeModel, this); 36 NetworkAgent. cachedResources(this._processCachedResources.bind(this));36 NetworkAgent.enable(this._processCachedResources.bind(this)); 37 37 } 38 38 … … 45 45 46 46 WebInspector.NetworkManager.prototype = { 47 reset: function()47 frontendReused: function() 48 48 { 49 49 WebInspector.panels.network.clear(); 50 50 this._resourceTreeModel.reset(); 51 NetworkAgent. cachedResources(this._processCachedResources.bind(this));51 NetworkAgent.enable(this._processCachedResources.bind(this)); 52 52 }, 53 53 -
trunk/Source/WebCore/inspector/front-end/inspector.js
r80204 r80239 1407 1407 WebInspector.frontendReused = function() 1408 1408 { 1409 this.networkManager. reset();1409 this.networkManager.frontendReused(); 1410 1410 this.reset(); 1411 1411 }
Note: See TracChangeset
for help on using the changeset viewer.