Changeset 81971 in webkit
- Timestamp:
- Mar 25, 2011 10:55:03 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r81970 r81971 1 2011-03-25 Pavel Feldman <pfeldman@chromium.org> 2 3 Reviewed by Yury Semikhatsky. 4 5 Web Inspector: refactor Network domain's frame tree API 6 https://bugs.webkit.org/show_bug.cgi?id=57103 7 8 * inspector/Inspector.json: 9 * inspector/InspectorResourceAgent.cpp: 10 (WebCore::buildObjectForFrameResource): 11 (WebCore::buildObjectForCachedResource): 12 (WebCore::InspectorResourceAgent::willSendRequest): 13 (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache): 14 (WebCore::buildObjectForFrame): 15 (WebCore::buildObjectForFrameTree): 16 (WebCore::InspectorResourceAgent::didCommitLoad): 17 (WebCore::InspectorResourceAgent::enable): 18 * inspector/front-end/NetworkManager.js: 19 (WebInspector.NetworkManager.prototype.requestContent): 20 (WebInspector.NetworkDispatcher): 21 (WebInspector.NetworkDispatcher.prototype.willSendRequest): 22 (WebInspector.NetworkDispatcher.prototype.didReceiveResponse): 23 (WebInspector.NetworkDispatcher.prototype.didLoadResourceFromMemoryCache): 24 (WebInspector.NetworkDispatcher.prototype.frameDetachedFromParent): 25 (WebInspector.NetworkDispatcher.prototype.didCommitLoadForFrame): 26 (WebInspector.NetworkDispatcher.prototype.didCreateWebSocket): 27 (WebInspector.NetworkDispatcher.prototype._appendRedirect): 28 (WebInspector.NetworkDispatcher.prototype._addFramesRecursively): 29 (WebInspector.NetworkDispatcher.prototype._createResource): 30 * inspector/front-end/ResourceTreeModel.js: 31 (WebInspector.ResourceTreeModel.prototype.addOrUpdateFrame): 32 (WebInspector.ResourceTreeModel.prototype.didCommitLoadForFrame): 33 (WebInspector.ResourceTreeModel.prototype._clearChildFramesAndResources): 34 (WebInspector.ResourceTreeModel.prototype._clearResources): 35 * inspector/front-end/ResourcesPanel.js: 36 (WebInspector.ResourcesPanel.prototype.addOrUpdateFrame): 37 (WebInspector.ResourcesPanel.prototype.addResourceToFrame): 38 1 39 2011-03-25 Dave Hyatt <hyatt@apple.com> 2 40 -
trunk/Source/WebCore/inspector/Inspector.json
r81957 r81971 268 268 "response": { "$ref": "ResourceResponse" }, 269 269 "bodySize": { "type": "number" }, 270 "loader": { "$ref": "DocumentLoader" }271 270 } 272 271 }, 273 272 { 274 "id": " DocumentLoader",273 "id": "Frame", 275 274 "type": "object", 276 275 "properties": { 277 "frameId": { "type": "string" }, 276 "id": { "type": "string" }, 277 "parentId": { "type": "string" }, 278 278 "loaderId": { "type": "string" }, 279 "name": { "type": "string", "optional": true }, 279 280 "url": { "type": "string" } 281 } 282 }, 283 { 284 "id": "FrameResourceTree", 285 "type": "object", 286 "properties": { 287 "frame": { "$ref": "Frame" }, 288 "childFrames": { "type": "array", "optional": true, "items": { "$ref": "FrameResourceTree" } }, 289 "mainResource": { "$ref": "FrameResource" }, 290 "subresources": { "type": "array", "items": { "$ref": "CachedResource" } } 280 291 } 281 292 }, … … 285 296 "properties": { 286 297 "url": { "type": "string" }, 287 "loader": { "$ref": "DocumentLoader" },288 298 "request": { "$ref": "ResourceRequest" }, 289 299 "response": { "$ref": "ResourceResponse" } … … 316 326 "name": "setExtraHeaders", 317 327 "parameters": [ 318 { "name": "headers", " $ref": "NetworkHeaders" }328 { "name": "headers", "type": "object" } 319 329 ] 320 330 } … … 331 341 "parameters": [ 332 342 { "name": "identifier", "type": "integer" }, 333 { "name": "loader", "$ref": "NetworkLoader" }, 343 { "name": "frameId", "type": "string" }, 344 { "name": "loaderId", "type": "string" }, 345 { "name": "documentURL", "type": "string" }, 334 346 { "name": "request", "$ref": "ResourceRequest" }, 335 347 { "name": "redirectResponse", "$ref": "ResourceResponse" }, … … 374 386 { "name": "identifier", "type": "integer" }, 375 387 { "name": "time", "type": "number" }, 376 { "name": " localizedDescription", "type": "string" }388 { "name": "errorText", "type": "string" } 377 389 ] 378 390 }, … … 380 392 "name": "didLoadResourceFromMemoryCache", 381 393 "parameters": [ 394 { "name": "frameId", "type": "string" }, 395 { "name": "loaderId", "type": "string" }, 396 { "name": "documentURL", "type": "string" }, 382 397 { "name": "time", "type": "number" }, 383 { "name": "resource", "$ref": " NetworkCachedResource" }398 { "name": "resource", "$ref": "CachedResource" } 384 399 ] 385 400 }, … … 396 411 "parameters": [ 397 412 { "name": "frame", "$ref": "Frame" }, 398 { "name": "loader ", "$ref": "NetworkLoader" }413 { "name": "loaderId", "type": "string" } 399 414 ] 400 415 }, … … 411 426 { "name": "identifier", "type": "integer" }, 412 427 { "name": "time", "type": "number" }, 413 { "name": "request", "$ref": " NetworkWebSocketRequest" }428 { "name": "request", "$ref": "WebSocketRequest" } 414 429 ] 415 430 }, … … 419 434 { "name": "identifier", "type": "integer" }, 420 435 { "name": "time", "type": "number" }, 421 { "name": "response", "$ref": " NetworkWebSocketResponse" }436 { "name": "response", "$ref": "WebSocketResponse" } 422 437 ] 423 438 }, -
trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp
r81943 r81971 232 232 } 233 233 234 static PassRefPtr<InspectorObject> buildObjectForDocumentLoader(DocumentLoader* loader)235 {236 RefPtr<InspectorObject> documentLoaderObject = InspectorObject::create();237 documentLoaderObject->setString("frameId", pointerAsId(loader->frame()));238 documentLoaderObject->setString("loaderId", pointerAsId(loader));239 documentLoaderObject->setString("url", loader->requestURL().string());240 return documentLoaderObject;241 }242 243 234 static PassRefPtr<InspectorObject> buildObjectForFrameResource(Frame* frame) 244 235 { … … 248 239 RefPtr<InspectorObject> resourceObject = InspectorObject::create(); 249 240 resourceObject->setString("url", loader->url().string()); 250 resourceObject->setObject("loader", buildObjectForDocumentLoader(loader));251 241 resourceObject->setObject("request", buildObjectForResourceRequest(loader->request())); 252 242 resourceObject->setObject("response", buildObjectForResourceResponse(loader->response())); … … 275 265 } 276 266 277 static PassRefPtr<InspectorObject> buildObjectForCachedResource( DocumentLoader* loader,const CachedResource& cachedResource)267 static PassRefPtr<InspectorObject> buildObjectForCachedResource(const CachedResource& cachedResource) 278 268 { 279 269 RefPtr<InspectorObject> resourceObject = InspectorObject::create(); … … 282 272 resourceObject->setNumber("bodySize", cachedResource.encodedSize()); 283 273 resourceObject->setObject("response", buildObjectForResourceResponse(cachedResource.response())); 284 resourceObject->setObject("loader", buildObjectForDocumentLoader(loader));285 274 return resourceObject; 286 }287 288 static void populateObjectWithFrameResources(Frame* frame, PassRefPtr<InspectorObject> frameResources)289 {290 frameResources->setObject("resource", buildObjectForFrameResource(frame));291 RefPtr<InspectorArray> subresources = InspectorArray::create();292 frameResources->setArray("subresources", subresources);293 294 const CachedResourceLoader::DocumentResourceMap& allResources = frame->document()->cachedResourceLoader()->allCachedResources();295 CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end();296 for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) {297 CachedResource* cachedResource = it->second.get();298 RefPtr<InspectorObject> cachedResourceObject = buildObjectForCachedResource(frame->loader()->documentLoader(), *cachedResource);299 subresources->pushValue(cachedResourceObject);300 }301 275 } 302 276 … … 322 296 request.setReportRawHeaders(true); 323 297 324 RefPtr<InspectorObject> loaderObject = buildObjectForDocumentLoader(loader);325 298 RefPtr<ScriptCallStack> callStack = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture, true); 326 299 RefPtr<InspectorArray> callStackValue; … … 329 302 else 330 303 callStackValue = InspectorArray::create(); 331 332 m_frontend->willSendRequest(static_cast<int>(identifier), loaderObject, buildObjectForResourceRequest(request), buildObjectForResourceResponse(redirectResponse), currentTime(), callStackValue); 304 m_frontend->willSendRequest(static_cast<int>(identifier), pointerAsId(loader->frame()), pointerAsId(loader), loader->url().string(), buildObjectForResourceRequest(request), buildObjectForResourceResponse(redirectResponse), currentTime(), callStackValue); 333 305 } 334 306 … … 385 357 void InspectorResourceAgent::didLoadResourceFromMemoryCache(DocumentLoader* loader, const CachedResource* resource) 386 358 { 387 m_frontend->didLoadResourceFromMemoryCache( currentTime(), buildObjectForCachedResource(loader,*resource));359 m_frontend->didLoadResourceFromMemoryCache(pointerAsId(loader->frame()), pointerAsId(loader), loader->url().string(), currentTime(), buildObjectForCachedResource(*resource)); 388 360 } 389 361 … … 405 377 } 406 378 frameObject->setString("url", frame->document()->url().string()); 379 frameObject->setString("loaderId", pointerAsId(frame->loader()->documentLoader())); 380 407 381 return frameObject; 408 382 } 409 383 410 static PassRefPtr<InspectorObject> buildObjectForFrameTree(Frame* frame, bool dumpResources) 411 { 384 static PassRefPtr<InspectorObject> buildObjectForFrameTree(Frame* frame) 385 { 386 RefPtr<InspectorObject> result = InspectorObject::create(); 412 387 RefPtr<InspectorObject> frameObject = buildObjectForFrame(frame); 413 414 if (dumpResources) 415 populateObjectWithFrameResources(frame, frameObject); 388 result->setObject("frame", frameObject); 389 390 result->setObject("mainResource", buildObjectForFrameResource(frame)); 391 RefPtr<InspectorArray> subresources = InspectorArray::create(); 392 result->setArray("subresources", subresources); 393 394 const CachedResourceLoader::DocumentResourceMap& allResources = frame->document()->cachedResourceLoader()->allCachedResources(); 395 CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end(); 396 for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) { 397 CachedResource* cachedResource = it->second.get(); 398 RefPtr<InspectorObject> cachedResourceObject = buildObjectForCachedResource(*cachedResource); 399 subresources->pushValue(cachedResourceObject); 400 } 401 416 402 RefPtr<InspectorArray> childrenArray; 417 403 for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) { 418 404 if (!childrenArray) { 419 405 childrenArray = InspectorArray::create(); 420 frameObject->setArray("children", childrenArray);406 result->setArray("childFrames", childrenArray); 421 407 } 422 childrenArray->pushObject(buildObjectForFrameTree(child , dumpResources));423 } 424 return frameObject;408 childrenArray->pushObject(buildObjectForFrameTree(child)); 409 } 410 return result; 425 411 } 426 412 427 413 void InspectorResourceAgent::didCommitLoad(DocumentLoader* loader) 428 414 { 429 m_frontend->didCommitLoadForFrame(buildObjectForFrame(loader->frame()), buildObjectForDocumentLoader(loader));415 m_frontend->didCommitLoadForFrame(buildObjectForFrame(loader->frame()), pointerAsId(loader)); 430 416 } 431 417 … … 494 480 { 495 481 enable(); 496 *object = buildObjectForFrameTree(m_page->mainFrame() , true);482 *object = buildObjectForFrameTree(m_page->mainFrame()); 497 483 } 498 484 -
trunk/Source/WebCore/inspector/front-end/NetworkManager.js
r81861 r81971 58 58 callback((!error && success) ? content : null); 59 59 } 60 NetworkAgent.resourceContent(resource. loader.frameId, resource.url, base64Encode, callbackWrapper);60 NetworkAgent.resourceContent(resource.frameId, resource.url, base64Encode, callbackWrapper); 61 61 }, 62 62 … … 125 125 }, 126 126 127 willSendRequest: function(identifier, loader, request, redirectResponse, time, callStack)127 willSendRequest: function(identifier, frameId, loaderId, documentURL, request, redirectResponse, time, callStack) 128 128 { 129 129 var resource = this._inflightResourcesById[identifier]; … … 132 132 resource = this._appendRedirect(identifier, time, request.url); 133 133 } else 134 resource = this._createResource(identifier, request.url, loader, callStack); 135 134 resource = this._createResource(identifier, frameId, loaderId, request.url, documentURL, callStack); 136 135 this._updateResourceWithRequest(resource, request); 137 136 resource.startTime = time; … … 162 161 163 162 this._updateResource(resource); 164 this._resourceTreeModel.addResourceToFrame(resource. loader.frameId, resource);163 this._resourceTreeModel.addResourceToFrame(resource.frameId, resource); 165 164 }, 166 165 … … 199 198 }, 200 199 201 didLoadResourceFromMemoryCache: function( time, cachedResource)202 { 203 var resource = this._createResource("cached:" + ++this._lastIdentifierForCachedResource, cachedResource.url, cachedResource.loader);200 didLoadResourceFromMemoryCache: function(frameId, loaderId, documentURL, time, cachedResource) 201 { 202 var resource = this._createResource("cached:" + ++this._lastIdentifierForCachedResource, frameId, loaderId, cachedResource.url, documentURL); 204 203 this._updateResourceWithCachedResource(resource, cachedResource); 205 204 resource.cached = true; … … 208 207 resource.startTime = resource.responseReceivedTime = time; 209 208 this._finishResource(resource, time); 210 this._resourceTreeModel.addResourceToFrame(resource. loader.frameId, resource);209 this._resourceTreeModel.addResourceToFrame(resource.frameId, resource); 211 210 }, 212 211 … … 227 226 }, 228 227 229 didCommitLoadForFrame: function(frame, loader )230 { 231 this._resourceTreeModel.didCommitLoadForFrame(frame, loader );228 didCommitLoadForFrame: function(frame, loaderId) 229 { 230 this._resourceTreeModel.didCommitLoadForFrame(frame, loaderId); 232 231 if (!frame.parentId) { 233 232 var mainResource = this._resourceTreeModel.resourceForURL(frame.url); … … 235 234 WebInspector.mainResource = mainResource; 236 235 mainResource.isMainResource = true; 236 mainResource.documentURL = frame.url; 237 237 this._dispatchEventToListeners(WebInspector.NetworkManager.EventTypes.MainResourceCommitLoad, mainResource); 238 238 } … … 242 242 didCreateWebSocket: function(identifier, requestURL) 243 243 { 244 var resource = this._createResource(identifier, requestURL);244 var resource = this._createResource(identifier, null, null, requestURL); 245 245 resource.type = WebInspector.Resource.Type.WebSocket; 246 246 this._startResource(resource); … … 291 291 delete originalResource.redirects; 292 292 this._finishResource(originalResource, time); 293 var newResource = this._createResource(identifier, redirectURL, originalResource.loader, originalResource.stackTrace); 293 var newResource = this._createResource(identifier, originalResource.frameId, originalResource.loaderId, 294 redirectURL, originalResource.documentURL, originalResource.stackTrace); 294 295 newResource.redirects = previousRedirects.concat(originalResource); 295 296 return newResource; … … 317 318 }, 318 319 319 _addFramesRecursively: function(framePayload) 320 { 321 var frameResource = this._createResource(null, framePayload.resource.url, framePayload.resource.loader); 322 this._updateResourceWithRequest(frameResource, framePayload.resource.request); 323 this._updateResourceWithResponse(frameResource, framePayload.resource.response); 320 _addFramesRecursively: function(frameTreePayload) 321 { 322 var framePayload = frameTreePayload.frame; 323 var mainResource = frameTreePayload.mainResource; 324 325 var frameResource = this._createResource(null, framePayload.id, framePayload.loaderId, mainResource.url, framePayload.url); 326 this._updateResourceWithRequest(frameResource, mainResource.request); 327 this._updateResourceWithResponse(frameResource, mainResource.response); 324 328 frameResource.type = WebInspector.Resource.Type["Document"]; 325 329 frameResource.finished = true; … … 328 332 this._resourceTreeModel.addResourceToFrame(framePayload.id, frameResource); 329 333 330 for (var i = 0; frame Payload.children && i < framePayload.children.length; ++i)331 this._addFramesRecursively(frame Payload.children[i]);332 333 if (!frame Payload.subresources)334 return; 335 336 for (var i = 0; i < frame Payload.subresources.length; ++i) {337 var cachedResource = frame Payload.subresources[i];338 var resource = this._createResource(null, cachedResource.url, cachedResource.loader);334 for (var i = 0; frameTreePayload.childFrames && i < frameTreePayload.childFrames.length; ++i) 335 this._addFramesRecursively(frameTreePayload.childFrames[i]); 336 337 if (!frameTreePayload.subresources) 338 return; 339 340 for (var i = 0; i < frameTreePayload.subresources.length; ++i) { 341 var cachedResource = frameTreePayload.subresources[i]; 342 var resource = this._createResource(null, framePayload.id, framePayload.loaderId, cachedResource.url, framePayload.url); 339 343 this._updateResourceWithCachedResource(resource, cachedResource); 340 344 resource.finished = true; … … 349 353 }, 350 354 351 _createResource: function(identifier, url, loader, stackTrace)355 _createResource: function(identifier, frameId, loaderId, url, documentURL, stackTrace) 352 356 { 353 357 var resource = new WebInspector.Resource(identifier, url); 354 resource. loader = loader;355 if (loader)356 resource.documentURL = loader.url;358 resource.documentURL = documentURL; 359 resource.frameId = frameId; 360 resource.loaderId = loaderId; 357 361 resource.stackTrace = stackTrace; 358 362 return resource; -
trunk/Source/WebCore/inspector/front-end/ResourceTreeModel.js
r76587 r81971 47 47 addOrUpdateFrame: function(frame) 48 48 { 49 var tmpResource = new WebInspector.Resource(null, frame.url); 50 WebInspector.panels.resources.addOrUpdateFrame(frame.parentId, frame.id, frame.name, tmpResource.displayName); 49 WebInspector.panels.resources.addOrUpdateFrame(frame); 51 50 var subframes = this._subframes[frame.parentId]; 52 51 if (!subframes) { … … 57 56 }, 58 57 59 didCommitLoadForFrame: function(frame, loader )58 didCommitLoadForFrame: function(frame, loaderId) 60 59 { 61 60 // frame.parentId === 0 is when main frame navigation happens. 62 this._clearChildFramesAndResources(frame.parentId ? frame.id : 0, loader .loaderId);61 this._clearChildFramesAndResources(frame.parentId ? frame.id : 0, loaderId); 63 62 64 63 this.addOrUpdateFrame(frame); … … 142 141 }, 143 142 144 _clearChildFramesAndResources: function(frameId, loader Id)143 _clearChildFramesAndResources: function(frameId, loaderToPreserveId) 145 144 { 146 145 WebInspector.panels.resources.removeResourcesFromFrame(frameId); 147 146 148 this._clearResources(frameId, loader Id);147 this._clearResources(frameId, loaderToPreserveId); 149 148 var subframes = this._subframes[frameId]; 150 149 if (!subframes) … … 153 152 for (var childFrameId in subframes) { 154 153 WebInspector.panels.resources.removeFrame(childFrameId); 155 this._clearChildFramesAndResources(childFrameId, loader Id);154 this._clearChildFramesAndResources(childFrameId, loaderToPreserveId); 156 155 } 157 156 delete this._subframes[frameId]; … … 167 166 for (var i = 0; i < resourcesForFrame.length; ++i) { 168 167 var resource = resourcesForFrame[i]; 169 if (resource.loader .loaderId === loaderToPreserveId) {168 if (resource.loaderId === loaderToPreserveId) { 170 169 preservedResourcesForFrame.push(resource); 171 170 continue; … … 175 174 176 175 delete this._resourcesByFrameId[frameId]; 177 if (preservedResourcesForFrame.length) 176 if (preservedResourcesForFrame.length) { 178 177 this._resourcesByFrameId[frameId] = preservedResourcesForFrame; 178 } 179 179 }, 180 180 -
trunk/Source/WebCore/inspector/front-end/ResourcesPanel.js
r81771 r81971 176 176 }, 177 177 178 addOrUpdateFrame: function(parentFrameId, frameId, title, subtitle) 179 { 178 addOrUpdateFrame: function(frame) 179 { 180 var frameId = frame.id; 181 var parentFrameId = frame.parentId; 182 var title = frame.name; 183 var subtitle = new WebInspector.Resource(null, frame.url).displayName; 184 this.addDocumentURL(frame.url); 185 180 186 var frameTreeElement = this._treeElementForFrameId[frameId]; 181 187 if (frameTreeElement) { … … 221 227 addResourceToFrame: function(frameId, resource) 222 228 { 223 this.addDocumentURL(resource.documentURL);224 225 229 if (resource.statusCode >= 301 && resource.statusCode <= 303) 226 230 return;
Note: See TracChangeset
for help on using the changeset viewer.