Chromium Code Reviews| 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 11 matching lines...) Expand all Loading... | |
| 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 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 /** | 31 /** |
| 32 * @unrestricted | 32 * @implements {SDK.SDKModelObserver<!SDK.NetworkManager>} |
| 33 */ | 33 */ |
| 34 SDK.NetworkLog = class { | 34 SDK.NetworkLog = class { |
| 35 /** | 35 constructor() { |
| 36 * @param {!SDK.Target} target | |
| 37 * @param {!SDK.ResourceTreeModel} resourceTreeModel | |
| 38 * @param {!SDK.NetworkManager} networkManager | |
| 39 */ | |
| 40 constructor(target, resourceTreeModel, networkManager) { | |
| 41 this._target = target; | |
| 42 target[SDK.NetworkLog._logSymbol] = this; | |
| 43 /** @type {!Array<!SDK.NetworkRequest>} */ | 36 /** @type {!Array<!SDK.NetworkRequest>} */ |
| 44 this._requests = []; | 37 this._requests = []; |
| 45 /** @type {!Object<string, !SDK.NetworkRequest>} */ | 38 /** @type {!Map<!SDK.Target, !Map<string, !SDK.NetworkRequest>>} */ |
| 46 this._requestForId = {}; | 39 this._requestsByTargetAndId = new Map(); |
| 47 networkManager.addEventListener(SDK.NetworkManager.Events.RequestStarted, th is._onRequestStarted, this); | 40 /** @type {!Map<!SDK.Target, !SDK.PageLoad>} */ |
| 48 resourceTreeModel.addEventListener( | 41 this._currentPageLoad = new Map(); |
| 49 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._onMainFrameNaviga ted, this); | 42 SDK.targetManager.observeModels(SDK.NetworkManager, this); |
| 50 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Load, this._ onLoad, this); | |
| 51 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.DOMContentLo aded, this._onDOMContentLoaded, this); | |
| 52 networkManager.on(SDK.NetworkManager.RequestRedirectEvent, this._onRequestRe direct, this); | |
| 53 } | 43 } |
| 54 | 44 |
| 55 /** | 45 /** |
| 56 * @return {!SDK.Target} | 46 * @override |
| 47 * @param {!SDK.NetworkManager} networkManager | |
| 57 */ | 48 */ |
| 58 target() { | 49 modelAdded(networkManager) { |
| 59 return this._target; | 50 var eventListeners = []; |
| 51 eventListeners.push( | |
| 52 networkManager.addEventListener(SDK.NetworkManager.Events.RequestStarted , this._onRequestStarted, this)); | |
| 53 eventListeners.push(networkManager.on(SDK.NetworkManager.RequestRedirectEven t, this._onRequestRedirect, this)); | |
| 54 | |
| 55 var resourceTreeModel = networkManager.target().model(SDK.ResourceTreeModel) ; | |
| 56 if (resourceTreeModel) { | |
| 57 eventListeners.push(resourceTreeModel.addEventListener( | |
| 58 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._onMainFrameNavi gated, this)); | |
| 59 eventListeners.push(resourceTreeModel.addEventListener( | |
| 60 SDK.ResourceTreeModel.Events.Load, this._onLoad.bind(this, resourceTre eModel))); | |
| 61 eventListeners.push(resourceTreeModel.addEventListener( | |
| 62 SDK.ResourceTreeModel.Events.DOMContentLoaded, this._onDOMContentLoade d.bind(this, resourceTreeModel))); | |
| 63 } | |
| 64 | |
| 65 networkManager[SDK.NetworkLog._events] = eventListeners; | |
| 66 this._requestsByTargetAndId.set(networkManager.target(), new Map()); | |
| 60 } | 67 } |
| 61 | 68 |
| 62 /** | 69 /** |
| 63 * @param {!SDK.Target} target | 70 * @override |
| 64 * @return {?SDK.NetworkLog} | 71 * @param {!SDK.NetworkManager} networkManager |
| 65 */ | 72 */ |
| 66 static fromTarget(target) { | 73 modelRemoved(networkManager) { |
| 67 return target[SDK.NetworkLog._logSymbol] || null; | 74 this._requestsByTargetAndId.delete(networkManager.target()); |
| 75 Common.EventTarget.removeEventListeners(networkManager[SDK.NetworkLog._event s]); | |
| 68 } | 76 } |
| 69 | 77 |
| 70 /** | 78 /** |
| 71 * @param {string} url | 79 * @param {string} url |
| 72 * @return {?SDK.NetworkRequest} | 80 * @return {?SDK.NetworkRequest} |
| 73 */ | 81 */ |
| 74 static requestForURL(url) { | 82 requestForURL(url) { |
| 75 for (var target of SDK.targetManager.targets()) { | 83 for (var i = 0; i < this._requests.length; ++i) { |
|
caseq
2017/03/16 20:27:47
return this._requests.find(request => request.url(
dgozman
2017/03/16 20:51:20
Done.
| |
| 76 var networkLog = SDK.NetworkLog.fromTarget(target); | 84 if (this._requests[i].url() === url) |
| 77 var result = networkLog && networkLog.requestForURL(url); | 85 return this._requests[i]; |
| 78 if (result) | |
| 79 return result; | |
| 80 } | 86 } |
| 81 return null; | 87 return null; |
| 82 } | 88 } |
| 83 | 89 |
| 84 /** | 90 /** |
| 85 * @return {!Array.<!SDK.NetworkRequest>} | 91 * @return {!Array<!SDK.NetworkRequest>} |
| 86 */ | 92 */ |
| 87 static requests() { | 93 requests() { |
| 88 var result = []; | 94 return this._requests; |
| 89 for (var target of SDK.targetManager.targets()) { | |
| 90 var networkLog = SDK.NetworkLog.fromTarget(target); | |
| 91 if (networkLog) | |
| 92 result = result.concat(networkLog.requests()); | |
| 93 } | |
| 94 return result; | |
| 95 } | 95 } |
| 96 | 96 |
| 97 /** | 97 /** |
| 98 * @param {!SDK.NetworkRequest} request | 98 * @param {!SDK.Target} target |
| 99 * @return {?SDK.NetworkLog} | 99 * @return {!Array<!SDK.NetworkRequest>} |
| 100 */ | 100 */ |
| 101 static fromRequest(request) { | 101 requestsForTarget(target) { |
| 102 return SDK.NetworkLog.fromTarget(request.target()); | 102 return this._requests.filter(request => request.target() === target); |
|
caseq
2017/03/16 20:27:47
return Array.from(this._requestsByTargetAndId.get(
dgozman
2017/03/16 20:51:20
Done.
| |
| 103 } | |
| 104 | |
| 105 /** | |
| 106 * @param {string} url | |
| 107 * @param {!SDK.Target} target | |
| 108 * @return {?SDK.NetworkRequest} | |
| 109 */ | |
| 110 _requestForURLInTarget(url, target) { | |
| 111 for (var i = 0; i < this._requests.length; ++i) { | |
| 112 if (this._requests[i].target() === target && this._requests[i].url() === u rl) | |
|
caseq
2017/03/16 20:27:47
Iterate over this._requestsByTargetAndId.get(targe
dgozman
2017/03/16 20:51:20
Done.
| |
| 113 return this._requests[i]; | |
| 114 } | |
| 115 return null; | |
| 103 } | 116 } |
| 104 | 117 |
| 105 /** | 118 /** |
| 106 * @param {!SDK.NetworkRequest} request | 119 * @param {!SDK.NetworkRequest} request |
| 107 */ | 120 */ |
| 108 static _initializeInitiatorSymbolIfNeeded(request) { | 121 _initializeInitiatorSymbolIfNeeded(request) { |
| 109 if (!request[SDK.NetworkLog._initiatorDataSymbol]) { | 122 if (!request[SDK.NetworkLog._initiatorDataSymbol]) { |
| 110 /** @type {!{info: ?SDK.NetworkLog._InitiatorInfo, chain: !Set<!SDK.Networ kRequest>, request: (?SDK.NetworkRequest|undefined)}} */ | 123 /** @type {!{info: ?SDK.NetworkLog._InitiatorInfo, chain: !Set<!SDK.Networ kRequest>, request: (?SDK.NetworkRequest|undefined)}} */ |
| 111 request[SDK.NetworkLog._initiatorDataSymbol] = { | 124 request[SDK.NetworkLog._initiatorDataSymbol] = { |
| 112 info: null, | 125 info: null, |
| 113 chain: null, | 126 chain: null, |
| 114 request: undefined, | 127 request: undefined, |
| 115 }; | 128 }; |
| 116 } | 129 } |
| 117 } | 130 } |
| 118 | 131 |
| 119 /** | 132 /** |
| 120 * @param {!SDK.NetworkRequest} request | 133 * @param {!SDK.NetworkRequest} request |
| 121 * @return {!SDK.NetworkLog._InitiatorInfo} | 134 * @return {!SDK.NetworkLog._InitiatorInfo} |
| 122 */ | 135 */ |
| 123 static initiatorInfoForRequest(request) { | 136 initiatorInfoForRequest(request) { |
| 124 SDK.NetworkLog._initializeInitiatorSymbolIfNeeded(request); | 137 this._initializeInitiatorSymbolIfNeeded(request); |
| 125 if (request[SDK.NetworkLog._initiatorDataSymbol].info) | 138 if (request[SDK.NetworkLog._initiatorDataSymbol].info) |
| 126 return request[SDK.NetworkLog._initiatorDataSymbol].info; | 139 return request[SDK.NetworkLog._initiatorDataSymbol].info; |
| 127 | 140 |
| 128 var type = SDK.NetworkRequest.InitiatorType.Other; | 141 var type = SDK.NetworkRequest.InitiatorType.Other; |
| 129 var url = ''; | 142 var url = ''; |
| 130 var lineNumber = -Infinity; | 143 var lineNumber = -Infinity; |
| 131 var columnNumber = -Infinity; | 144 var columnNumber = -Infinity; |
| 132 var scriptId = null; | 145 var scriptId = null; |
| 133 var initiator = request.initiator(); | 146 var initiator = request.initiator(); |
| 134 | 147 |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 159 | 172 |
| 160 request[SDK.NetworkLog._initiatorDataSymbol].info = | 173 request[SDK.NetworkLog._initiatorDataSymbol].info = |
| 161 {type: type, url: url, lineNumber: lineNumber, columnNumber: columnNumbe r, scriptId: scriptId}; | 174 {type: type, url: url, lineNumber: lineNumber, columnNumber: columnNumbe r, scriptId: scriptId}; |
| 162 return request[SDK.NetworkLog._initiatorDataSymbol].info; | 175 return request[SDK.NetworkLog._initiatorDataSymbol].info; |
| 163 } | 176 } |
| 164 | 177 |
| 165 /** | 178 /** |
| 166 * @param {!SDK.NetworkRequest} request | 179 * @param {!SDK.NetworkRequest} request |
| 167 * @return {!SDK.NetworkLog.InitiatorGraph} | 180 * @return {!SDK.NetworkLog.InitiatorGraph} |
| 168 */ | 181 */ |
| 169 static initiatorGraphForRequest(request) { | 182 initiatorGraphForRequest(request) { |
| 170 /** @type {!Set<!SDK.NetworkRequest>} */ | 183 /** @type {!Set<!SDK.NetworkRequest>} */ |
| 171 var initiated = new Set(); | 184 var initiated = new Set(); |
| 172 var networkLog = SDK.NetworkLog.fromRequest(request); | 185 for (var logRequest of this._requests) { |
| 173 if (!networkLog) | 186 if (logRequest.target() !== request.target()) |
|
caseq
2017/03/16 20:27:47
ditto
dgozman
2017/03/16 20:51:20
Done.
| |
| 174 return {initiators: new Set(), initiated: new Set()}; | 187 continue; |
| 175 | 188 var localInitiators = this._initiatorChain(logRequest); |
| 176 var requests = networkLog.requests(); | |
| 177 for (var logRequest of requests) { | |
| 178 var localInitiators = initiatorChain(logRequest); | |
| 179 if (localInitiators.has(request)) | 189 if (localInitiators.has(request)) |
| 180 initiated.add(logRequest); | 190 initiated.add(logRequest); |
| 181 } | 191 } |
| 182 return {initiators: initiatorChain(request), initiated: initiated}; | 192 return {initiators: this._initiatorChain(request), initiated: initiated}; |
| 193 } | |
| 183 | 194 |
| 184 /** | 195 /** |
| 185 * @param {!SDK.NetworkRequest} request | 196 * @param {!SDK.NetworkRequest} request |
| 186 * @return {!Set<!SDK.NetworkRequest>} | 197 * @return {!Set<!SDK.NetworkRequest>} |
| 187 */ | 198 */ |
| 188 function initiatorChain(request) { | 199 _initiatorChain(request) { |
| 189 SDK.NetworkLog._initializeInitiatorSymbolIfNeeded(request); | 200 this._initializeInitiatorSymbolIfNeeded(request); |
| 190 var initiatorChainCache = | 201 var initiatorChainCache = |
| 191 /** @type {?Set<!SDK.NetworkRequest>} */ (request[SDK.NetworkLog._init iatorDataSymbol].chain); | 202 /** @type {?Set<!SDK.NetworkRequest>} */ (request[SDK.NetworkLog._initia torDataSymbol].chain); |
| 192 if (initiatorChainCache) | 203 if (initiatorChainCache) |
| 193 return initiatorChainCache; | 204 return initiatorChainCache; |
| 194 | 205 |
| 195 initiatorChainCache = new Set(); | 206 initiatorChainCache = new Set(); |
| 196 | 207 |
| 197 var checkRequest = request; | 208 var checkRequest = request; |
| 198 while (checkRequest) { | 209 while (checkRequest) { |
| 199 initiatorChainCache.add(checkRequest); | 210 initiatorChainCache.add(checkRequest); |
| 200 checkRequest = initiatorRequest(checkRequest); | 211 checkRequest = this._initiatorRequest(checkRequest); |
| 201 } | |
| 202 request[SDK.NetworkLog._initiatorDataSymbol].chain = initiatorChainCache; | |
| 203 return initiatorChainCache; | |
| 204 } | 212 } |
| 213 request[SDK.NetworkLog._initiatorDataSymbol].chain = initiatorChainCache; | |
| 214 return initiatorChainCache; | |
| 215 } | |
| 205 | 216 |
| 206 /** | 217 /** |
| 207 * @param {!SDK.NetworkRequest} request | 218 * @param {!SDK.NetworkRequest} request |
| 208 * @return {?SDK.NetworkRequest} | 219 * @return {?SDK.NetworkRequest} |
| 209 */ | 220 */ |
| 210 function initiatorRequest(request) { | 221 _initiatorRequest(request) { |
| 211 SDK.NetworkLog._initializeInitiatorSymbolIfNeeded(request); | 222 this._initializeInitiatorSymbolIfNeeded(request); |
| 212 if (request[SDK.NetworkLog._initiatorDataSymbol].request !== undefined) | 223 if (request[SDK.NetworkLog._initiatorDataSymbol].request !== undefined) |
| 213 return request[SDK.NetworkLog._initiatorDataSymbol].request; | |
| 214 var networkLog = SDK.NetworkLog.fromRequest(request); | |
| 215 var url = SDK.NetworkLog.initiatorInfoForRequest(request).url; | |
| 216 request[SDK.NetworkLog._initiatorDataSymbol].request = networkLog.requestF orURL(url); | |
| 217 return request[SDK.NetworkLog._initiatorDataSymbol].request; | 224 return request[SDK.NetworkLog._initiatorDataSymbol].request; |
| 218 } | 225 var url = this.initiatorInfoForRequest(request).url; |
| 226 request[SDK.NetworkLog._initiatorDataSymbol].request = this._requestForURLIn Target(url, request.target()); | |
| 227 return request[SDK.NetworkLog._initiatorDataSymbol].request; | |
| 219 } | 228 } |
| 220 | 229 |
| 221 /** | 230 /** |
| 222 * @param {!SDK.NetworkRequest} request | 231 * @param {!SDK.NetworkRequest} request |
| 223 * @return {?SDK.PageLoad} | 232 * @return {?SDK.PageLoad} |
| 224 */ | 233 */ |
| 225 static pageLoadForRequest(request) { | 234 pageLoadForRequest(request) { |
| 226 return request[SDK.NetworkLog._pageLoadForRequestSymbol]; | 235 return request[SDK.NetworkLog._pageLoadForRequestSymbol]; |
| 227 } | 236 } |
| 228 | 237 |
| 229 /** | 238 /** |
| 230 * @return {!Array.<!SDK.NetworkRequest>} | |
| 231 */ | |
| 232 requests() { | |
| 233 return this._requests; | |
| 234 } | |
| 235 | |
| 236 /** | |
| 237 * @param {string} url | |
| 238 * @return {?SDK.NetworkRequest} | |
| 239 */ | |
| 240 requestForURL(url) { | |
| 241 for (var i = 0; i < this._requests.length; ++i) { | |
| 242 if (this._requests[i].url() === url) | |
| 243 return this._requests[i]; | |
| 244 } | |
| 245 return null; | |
| 246 } | |
| 247 | |
| 248 /** | |
| 249 * @param {!Common.Event} event | 239 * @param {!Common.Event} event |
| 250 */ | 240 */ |
| 251 _onMainFrameNavigated(event) { | 241 _onMainFrameNavigated(event) { |
| 252 var mainFrame = /** type {SDK.ResourceTreeFrame} */ event.data; | 242 var mainFrame = /** type {!SDK.ResourceTreeFrame} */ (event.data); |
| 243 var target = mainFrame.target(); | |
| 244 this._currentPageLoad.delete(target); | |
| 245 var oldRequests = this.requestsForTarget(target); | |
| 246 this._requests = this._requests.filter(request => request.target() !== targe t); | |
| 247 this._requestsByTargetAndId.set(target, new Map()); | |
| 248 | |
| 253 // Preserve requests from the new session. | 249 // Preserve requests from the new session. |
| 254 this._currentPageLoad = null; | 250 var currentPageLoad = null; |
| 255 var oldRequests = this._requests.splice(0, this._requests.length); | |
| 256 this._requestForId = {}; | |
| 257 for (var i = 0; i < oldRequests.length; ++i) { | 251 for (var i = 0; i < oldRequests.length; ++i) { |
| 258 var request = oldRequests[i]; | 252 var request = oldRequests[i]; |
| 259 if (request.loaderId === mainFrame.loaderId) { | 253 if (request.loaderId === mainFrame.loaderId) { |
| 260 if (!this._currentPageLoad) | 254 if (!currentPageLoad) |
| 261 this._currentPageLoad = new SDK.PageLoad(request); | 255 currentPageLoad = new SDK.PageLoad(request); |
| 262 this._requests.push(request); | 256 this._requests.push(request); |
| 263 this._requestForId[request.requestId()] = request; | 257 this._requestsByTargetAndId.get(target).set(request.requestId(), request ); |
| 264 request[SDK.NetworkLog._pageLoadForRequestSymbol] = this._currentPageLoa d; | 258 request[SDK.NetworkLog._pageLoadForRequestSymbol] = currentPageLoad; |
| 265 } | 259 } |
| 266 } | 260 } |
| 261 if (currentPageLoad) | |
| 262 this._currentPageLoad.set(target, currentPageLoad); | |
|
caseq
2017/03/16 20:27:47
Why can we have more than one?
dgozman
2017/03/16 20:51:20
One per target in case of multiple targets?
| |
| 267 } | 263 } |
| 268 | 264 |
| 269 /** | 265 /** |
| 270 * @param {!Common.Event} event | 266 * @param {!Common.Event} event |
| 271 */ | 267 */ |
| 272 _onRequestStarted(event) { | 268 _onRequestStarted(event) { |
| 273 var request = /** @type {!SDK.NetworkRequest} */ (event.data); | 269 var request = /** @type {!SDK.NetworkRequest} */ (event.data); |
| 274 this._requests.push(request); | 270 this._requests.push(request); |
| 275 this._requestForId[request.requestId()] = request; | 271 this._requestsByTargetAndId.get(request.target()).set(request.requestId(), r equest); |
| 276 request[SDK.NetworkLog._pageLoadForRequestSymbol] = this._currentPageLoad; | 272 request[SDK.NetworkLog._pageLoadForRequestSymbol] = this._currentPageLoad.ge t(request.target()); |
| 277 } | 273 } |
| 278 | 274 |
| 279 /** | 275 /** |
| 280 * @param {!SDK.NetworkManager.RequestRedirectEvent} event | 276 * @param {!SDK.NetworkManager.RequestRedirectEvent} event |
| 281 */ | 277 */ |
| 282 _onRequestRedirect(event) { | 278 _onRequestRedirect(event) { |
| 283 var request = event.request; | 279 var request = event.request; |
| 284 delete request[SDK.NetworkLog._initiatorDataSymbol]; | 280 delete request[SDK.NetworkLog._initiatorDataSymbol]; |
| 285 } | 281 } |
| 286 | 282 |
| 287 /** | 283 /** |
| 284 * @param {!SDK.ResourceTreeModel} resourceTreeModel | |
| 288 * @param {!Common.Event} event | 285 * @param {!Common.Event} event |
| 289 */ | 286 */ |
| 290 _onDOMContentLoaded(event) { | 287 _onDOMContentLoaded(resourceTreeModel, event) { |
| 291 if (this._currentPageLoad) | 288 var pageLoad = this._currentPageLoad.get(resourceTreeModel.target()); |
| 292 this._currentPageLoad.contentLoadTime = event.data; | 289 if (pageLoad) |
| 290 pageLoad.contentLoadTime = event.data; | |
| 293 } | 291 } |
| 294 | 292 |
| 295 /** | 293 /** |
| 294 * @param {!SDK.ResourceTreeModel} resourceTreeModel | |
| 296 * @param {!Common.Event} event | 295 * @param {!Common.Event} event |
| 297 */ | 296 */ |
| 298 _onLoad(event) { | 297 _onLoad(resourceTreeModel, event) { |
| 299 if (this._currentPageLoad) | 298 var pageLoad = this._currentPageLoad.get(resourceTreeModel.target()); |
| 300 this._currentPageLoad.loadTime = event.data; | 299 if (pageLoad) |
| 300 pageLoad.loadTime = event.data; | |
| 301 } | 301 } |
| 302 | 302 |
| 303 /** | 303 /** |
| 304 * @param {!SDK.Target} target | |
| 304 * @param {!Protocol.Network.RequestId} requestId | 305 * @param {!Protocol.Network.RequestId} requestId |
| 305 * @return {?SDK.NetworkRequest} | 306 * @return {?SDK.NetworkRequest} |
| 306 */ | 307 */ |
| 307 requestForId(requestId) { | 308 requestForId(target, requestId) { |
| 308 return this._requestForId[requestId]; | 309 var map = this._requestsByTargetAndId.get(target); |
| 310 return map ? (map.get(requestId) || null) : null; | |
| 309 } | 311 } |
| 310 }; | 312 }; |
| 311 | 313 |
| 312 /** | 314 /** |
| 313 * @unrestricted | 315 * @unrestricted |
| 314 */ | 316 */ |
| 315 SDK.PageLoad = class { | 317 SDK.PageLoad = class { |
| 316 /** | 318 /** |
| 317 * @param {!SDK.NetworkRequest} mainRequest | 319 * @param {!SDK.NetworkRequest} mainRequest |
| 318 */ | 320 */ |
| 319 constructor(mainRequest) { | 321 constructor(mainRequest) { |
| 320 this.id = ++SDK.PageLoad._lastIdentifier; | 322 this.id = ++SDK.PageLoad._lastIdentifier; |
| 321 this.url = mainRequest.url(); | 323 this.url = mainRequest.url(); |
| 322 this.startTime = mainRequest.startTime; | 324 this.startTime = mainRequest.startTime; |
| 323 } | 325 } |
| 324 }; | 326 }; |
| 325 | 327 |
| 326 SDK.PageLoad._lastIdentifier = 0; | 328 SDK.PageLoad._lastIdentifier = 0; |
| 327 | 329 |
| 328 /** @typedef {!{initiators: !Set<!SDK.NetworkRequest>, initiated: !Set<!SDK.Netw orkRequest>}} */ | 330 /** @typedef {!{initiators: !Set<!SDK.NetworkRequest>, initiated: !Set<!SDK.Netw orkRequest>}} */ |
| 329 SDK.NetworkLog.InitiatorGraph; | 331 SDK.NetworkLog.InitiatorGraph; |
| 330 | 332 |
| 331 /** @typedef {!{type: !SDK.NetworkRequest.InitiatorType, url: string, lineNumber : number, columnNumber: number, scriptId: ?string}} */ | 333 /** @typedef {!{type: !SDK.NetworkRequest.InitiatorType, url: string, lineNumber : number, columnNumber: number, scriptId: ?string}} */ |
| 332 SDK.NetworkLog._InitiatorInfo; | 334 SDK.NetworkLog._InitiatorInfo; |
| 333 | 335 |
| 334 SDK.NetworkLog._initiatorDataSymbol = Symbol('InitiatorData'); | 336 SDK.NetworkLog._initiatorDataSymbol = Symbol('InitiatorData'); |
| 335 SDK.NetworkLog._pageLoadForRequestSymbol = Symbol('PageLoadForRequest'); | 337 SDK.NetworkLog._pageLoadForRequestSymbol = Symbol('PageLoadForRequest'); |
| 336 SDK.NetworkLog._logSymbol = Symbol('NetworkLog'); | 338 SDK.NetworkLog._events = Symbol('SDK.NetworkLog.events'); |
| 339 | |
| 340 /** @type {!SDK.NetworkLog} */ | |
| 341 SDK.networkLog; | |
| OLD | NEW |