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 |