OLD | NEW |
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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 } | 82 } |
83 | 83 |
84 | 84 |
85 /** | 85 /** |
86 * @return {!Array.<!WebInspector.ResourceTreeFrame>} | 86 * @return {!Array.<!WebInspector.ResourceTreeFrame>} |
87 */ | 87 */ |
88 WebInspector.ResourceTreeModel.frames = function() | 88 WebInspector.ResourceTreeModel.frames = function() |
89 { | 89 { |
90 var result = []; | 90 var result = []; |
91 for (var target of WebInspector.targetManager.targets()) | 91 for (var target of WebInspector.targetManager.targets()) |
92 result = result.concat(Object.values(target.resourceTreeModel._frames)); | 92 result = result.concat(target.resourceTreeModel._frames.valuesArray()); |
93 return result; | 93 return result; |
94 } | 94 } |
95 | 95 |
96 /** | 96 /** |
97 * @param {string} url | 97 * @param {string} url |
98 * @return {?WebInspector.Resource} | 98 * @return {?WebInspector.Resource} |
99 */ | 99 */ |
100 WebInspector.ResourceTreeModel.resourceForURL = function(url) | 100 WebInspector.ResourceTreeModel.resourceForURL = function(url) |
101 { | 101 { |
102 for (var target of WebInspector.targetManager.targets()) { | 102 for (var target of WebInspector.targetManager.targets()) { |
103 var mainFrame = target.resourceTreeModel.mainFrame; | 103 var mainFrame = target.resourceTreeModel.mainFrame; |
104 var result = mainFrame ? mainFrame.resourceForURL(url) : null; | 104 var result = mainFrame ? mainFrame.resourceForURL(url) : null; |
105 if (result) | 105 if (result) |
106 return result; | 106 return result; |
107 } | 107 } |
108 return null; | 108 return null; |
109 } | 109 } |
110 | 110 |
111 WebInspector.ResourceTreeModel.prototype = { | 111 WebInspector.ResourceTreeModel.prototype = { |
112 _fetchResourceTree: function() | 112 _fetchResourceTree: function() |
113 { | 113 { |
114 /** @type {!Object.<string, !WebInspector.ResourceTreeFrame>} */ | 114 /** @type {!Map<string, !WebInspector.ResourceTreeFrame>} */ |
115 this._frames = {}; | 115 this._frames = new Map(); |
116 this._cachedResourcesProcessed = false; | 116 this._cachedResourcesProcessed = false; |
117 this._agent.getResourceTree(this._processCachedResources.bind(this)); | 117 this._agent.getResourceTree(this._processCachedResources.bind(this)); |
118 }, | 118 }, |
119 | 119 |
120 _processCachedResources: function(error, mainFramePayload) | 120 _processCachedResources: function(error, mainFramePayload) |
121 { | 121 { |
122 if (error) { | 122 if (error) { |
123 this._cachedResourcesProcessed = true; | 123 this._cachedResourcesProcessed = true; |
124 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTy
pes.CachedResourcesLoaded); | 124 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTy
pes.CachedResourcesLoaded); |
125 return; | 125 return; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 InspectorFrontendHost.inspectedURLChanged(this._inspectedPageURL); | 169 InspectorFrontendHost.inspectedURLChanged(this._inspectedPageURL); |
170 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.
InspectedURLChanged, this._inspectedPageURL); | 170 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.
InspectedURLChanged, this._inspectedPageURL); |
171 }, | 171 }, |
172 | 172 |
173 /** | 173 /** |
174 * @param {!WebInspector.ResourceTreeFrame} frame | 174 * @param {!WebInspector.ResourceTreeFrame} frame |
175 * @param {boolean=} aboutToNavigate | 175 * @param {boolean=} aboutToNavigate |
176 */ | 176 */ |
177 _addFrame: function(frame, aboutToNavigate) | 177 _addFrame: function(frame, aboutToNavigate) |
178 { | 178 { |
179 this._frames[frame.id] = frame; | 179 this._frames.set(frame.id, frame); |
180 if (frame.isMainFrame()) | 180 if (frame.isMainFrame()) |
181 this.mainFrame = frame; | 181 this.mainFrame = frame; |
182 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.
FrameAdded, frame); | 182 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.
FrameAdded, frame); |
183 if (!aboutToNavigate) | 183 if (!aboutToNavigate) |
184 this._addSecurityOrigin(frame.securityOrigin); | 184 this._addSecurityOrigin(frame.securityOrigin); |
185 }, | 185 }, |
186 | 186 |
187 /** | 187 /** |
188 * @param {string} securityOrigin | 188 * @param {string} securityOrigin |
189 */ | 189 */ |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 /** | 242 /** |
243 * @param {!PageAgent.FrameId} frameId | 243 * @param {!PageAgent.FrameId} frameId |
244 * @param {?PageAgent.FrameId} parentFrameId | 244 * @param {?PageAgent.FrameId} parentFrameId |
245 * @return {?WebInspector.ResourceTreeFrame} | 245 * @return {?WebInspector.ResourceTreeFrame} |
246 */ | 246 */ |
247 _frameAttached: function(frameId, parentFrameId) | 247 _frameAttached: function(frameId, parentFrameId) |
248 { | 248 { |
249 // Do nothing unless cached resource tree is processed - it will overwri
te everything. | 249 // Do nothing unless cached resource tree is processed - it will overwri
te everything. |
250 if (!this._cachedResourcesProcessed && parentFrameId) | 250 if (!this._cachedResourcesProcessed && parentFrameId) |
251 return null; | 251 return null; |
252 if (this._frames[frameId]) | 252 if (this._frames.has(frameId)) |
253 return null; | 253 return null; |
254 | 254 |
255 var parentFrame = parentFrameId ? this._frames[parentFrameId] : null; | 255 var parentFrame = parentFrameId ? (this._frames.get(parentFrameId) || nu
ll) : null; |
256 var frame = new WebInspector.ResourceTreeFrame(this, parentFrame, frameI
d); | 256 var frame = new WebInspector.ResourceTreeFrame(this, parentFrame, frameI
d); |
257 if (frame.isMainFrame() && this.mainFrame) { | 257 if (frame.isMainFrame() && this.mainFrame) { |
258 this._handleMainFrameDetached(this.mainFrame); | 258 this._handleMainFrameDetached(this.mainFrame); |
259 // Navigation to the new backend process. | 259 // Navigation to the new backend process. |
260 this._frameDetached(this.mainFrame.id); | 260 this._frameDetached(this.mainFrame.id); |
261 } | 261 } |
262 this._addFrame(frame, true); | 262 this._addFrame(frame, true); |
263 return frame; | 263 return frame; |
264 }, | 264 }, |
265 | 265 |
266 /** | 266 /** |
267 * @param {!PageAgent.Frame} framePayload | 267 * @param {!PageAgent.Frame} framePayload |
268 */ | 268 */ |
269 _frameNavigated: function(framePayload) | 269 _frameNavigated: function(framePayload) |
270 { | 270 { |
271 // Do nothing unless cached resource tree is processed - it will overwri
te everything. | 271 // Do nothing unless cached resource tree is processed - it will overwri
te everything. |
272 if (!this._cachedResourcesProcessed && framePayload.parentId) | 272 if (!this._cachedResourcesProcessed && framePayload.parentId) |
273 return; | 273 return; |
274 var frame = this._frames[framePayload.id]; | 274 var frame = this._frames.get(framePayload.id); |
275 if (!frame) { | 275 if (!frame) { |
276 // Simulate missed "frameAttached" for a main frame navigation to th
e new backend process. | 276 // Simulate missed "frameAttached" for a main frame navigation to th
e new backend process. |
277 console.assert(!framePayload.parentId, "Main frame shouldn't have pa
rent frame id."); | 277 console.assert(!framePayload.parentId, "Main frame shouldn't have pa
rent frame id."); |
278 frame = this._frameAttached(framePayload.id, framePayload.parentId |
| ""); | 278 frame = this._frameAttached(framePayload.id, framePayload.parentId |
| ""); |
279 console.assert(frame); | 279 console.assert(frame); |
280 } | 280 } |
281 | 281 |
282 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.
FrameWillNavigate, frame); | 282 this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.
FrameWillNavigate, frame); |
283 | 283 |
284 this._removeSecurityOrigin(frame.securityOrigin); | 284 this._removeSecurityOrigin(frame.securityOrigin); |
(...skipping 25 matching lines...) Expand all Loading... |
310 | 310 |
311 /** | 311 /** |
312 * @param {!PageAgent.FrameId} frameId | 312 * @param {!PageAgent.FrameId} frameId |
313 */ | 313 */ |
314 _frameDetached: function(frameId) | 314 _frameDetached: function(frameId) |
315 { | 315 { |
316 // Do nothing unless cached resource tree is processed - it will overwri
te everything. | 316 // Do nothing unless cached resource tree is processed - it will overwri
te everything. |
317 if (!this._cachedResourcesProcessed) | 317 if (!this._cachedResourcesProcessed) |
318 return; | 318 return; |
319 | 319 |
320 var frame = this._frames[frameId]; | 320 var frame = this._frames.get(frameId); |
321 if (!frame) | 321 if (!frame) |
322 return; | 322 return; |
323 | 323 |
324 this._removeSecurityOrigin(frame.securityOrigin); | 324 this._removeSecurityOrigin(frame.securityOrigin); |
325 if (frame.parentFrame) | 325 if (frame.parentFrame) |
326 frame.parentFrame._removeChildFrame(frame); | 326 frame.parentFrame._removeChildFrame(frame); |
327 else | 327 else |
328 frame._remove(); | 328 frame._remove(); |
329 }, | 329 }, |
330 | 330 |
331 /** | 331 /** |
332 * @param {!WebInspector.Event} event | 332 * @param {!WebInspector.Event} event |
333 */ | 333 */ |
334 _onRequestFinished: function(event) | 334 _onRequestFinished: function(event) |
335 { | 335 { |
336 if (!this._cachedResourcesProcessed) | 336 if (!this._cachedResourcesProcessed) |
337 return; | 337 return; |
338 | 338 |
339 var request = /** @type {!WebInspector.NetworkRequest} */ (event.data); | 339 var request = /** @type {!WebInspector.NetworkRequest} */ (event.data); |
340 if (request.failed || request.resourceType() === WebInspector.resourceTy
pes.XHR) | 340 if (request.failed || request.resourceType() === WebInspector.resourceTy
pes.XHR) |
341 return; | 341 return; |
342 | 342 |
343 var frame = this._frames[request.frameId]; | 343 var frame = this._frames.get(request.frameId); |
344 if (frame) | 344 if (frame) |
345 frame._addRequest(request); | 345 frame._addRequest(request); |
346 }, | 346 }, |
347 | 347 |
348 /** | 348 /** |
349 * @param {!WebInspector.Event} event | 349 * @param {!WebInspector.Event} event |
350 */ | 350 */ |
351 _onRequestUpdateDropped: function(event) | 351 _onRequestUpdateDropped: function(event) |
352 { | 352 { |
353 if (!this._cachedResourcesProcessed) | 353 if (!this._cachedResourcesProcessed) |
354 return; | 354 return; |
355 | 355 |
356 var frameId = event.data.frameId; | 356 var frameId = event.data.frameId; |
357 var frame = this._frames[frameId]; | 357 var frame = this._frames.get(frameId); |
358 if (!frame) | 358 if (!frame) |
359 return; | 359 return; |
360 | 360 |
361 var url = event.data.url; | 361 var url = event.data.url; |
362 if (frame._resourcesMap[url]) | 362 if (frame._resourcesMap[url]) |
363 return; | 363 return; |
364 | 364 |
365 var resource = new WebInspector.Resource(this.target(), null, url, frame
.url, frameId, event.data.loaderId, WebInspector.resourceTypes[event.data.resour
ceType], event.data.mimeType); | 365 var resource = new WebInspector.Resource(this.target(), null, url, frame
.url, frameId, event.data.loaderId, WebInspector.resourceTypes[event.data.resour
ceType], event.data.mimeType); |
366 frame.addResource(resource); | 366 frame.addResource(resource); |
367 }, | 367 }, |
368 | 368 |
369 /** | 369 /** |
370 * @param {!PageAgent.FrameId} frameId | 370 * @param {!PageAgent.FrameId} frameId |
371 * @return {!WebInspector.ResourceTreeFrame} | 371 * @return {!WebInspector.ResourceTreeFrame} |
372 */ | 372 */ |
373 frameForId: function(frameId) | 373 frameForId: function(frameId) |
374 { | 374 { |
375 return this._frames[frameId]; | 375 return this._frames.get(frameId); |
376 }, | 376 }, |
377 | 377 |
378 /** | 378 /** |
379 * @param {function(!WebInspector.Resource)} callback | 379 * @param {function(!WebInspector.Resource)} callback |
380 * @return {boolean} | 380 * @return {boolean} |
381 */ | 381 */ |
382 forAllResources: function(callback) | 382 forAllResources: function(callback) |
383 { | 383 { |
384 if (this.mainFrame) | 384 if (this.mainFrame) |
385 return this.mainFrame._callForFrameResources(callback); | 385 return this.mainFrame._callForFrameResources(callback); |
386 return false; | 386 return false; |
387 }, | 387 }, |
388 | 388 |
389 /** | 389 /** |
390 * @return {!Array.<!WebInspector.ResourceTreeFrame>} | 390 * @return {!Array<!WebInspector.ResourceTreeFrame>} |
391 */ | 391 */ |
392 frames: function() | 392 frames: function() |
393 { | 393 { |
394 return Object.values(this._frames); | 394 return this._frames.valuesArray(); |
395 }, | 395 }, |
396 | 396 |
397 /** | 397 /** |
398 * @param {string} url | 398 * @param {string} url |
399 * @return {?WebInspector.Resource} | 399 * @return {?WebInspector.Resource} |
400 */ | 400 */ |
401 resourceForURL: function(url) | 401 resourceForURL: function(url) |
402 { | 402 { |
403 // Workers call into this with no frames available. | 403 // Workers call into this with no frames available. |
404 return this.mainFrame ? this.mainFrame.resourceForURL(url) : null; | 404 return this.mainFrame ? this.mainFrame.resourceForURL(url) : null; |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 { | 718 { |
719 var frames = this._childFrames; | 719 var frames = this._childFrames; |
720 this._childFrames = []; | 720 this._childFrames = []; |
721 for (var i = 0; i < frames.length; ++i) | 721 for (var i = 0; i < frames.length; ++i) |
722 frames[i]._remove(); | 722 frames[i]._remove(); |
723 }, | 723 }, |
724 | 724 |
725 _remove: function() | 725 _remove: function() |
726 { | 726 { |
727 this._removeChildFrames(); | 727 this._removeChildFrames(); |
728 delete this._model._frames[this.id]; | 728 this._model._frames.delete(this.id); |
729 this._model.dispatchEventToListeners(WebInspector.ResourceTreeModel.Even
tTypes.FrameDetached, this); | 729 this._model.dispatchEventToListeners(WebInspector.ResourceTreeModel.Even
tTypes.FrameDetached, this); |
730 }, | 730 }, |
731 | 731 |
732 /** | 732 /** |
733 * @param {!WebInspector.Resource} resource | 733 * @param {!WebInspector.Resource} resource |
734 */ | 734 */ |
735 addResource: function(resource) | 735 addResource: function(resource) |
736 { | 736 { |
737 if (this._resourcesMap[resource.url] === resource) { | 737 if (this._resourcesMap[resource.url] === resource) { |
738 // Already in the tree, we just got an extra update. | 738 // Already in the tree, we just got an extra update. |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
985 | 985 |
986 /** | 986 /** |
987 * @override | 987 * @override |
988 */ | 988 */ |
989 navigationRequested: function() | 989 navigationRequested: function() |
990 { | 990 { |
991 // Frontend is not interested in interstitials. | 991 // Frontend is not interested in interstitials. |
992 } | 992 } |
993 | 993 |
994 } | 994 } |
OLD | NEW |