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 return this._requests.find(request => request.url() === url) || null; |
76 var networkLog = SDK.NetworkLog.fromTarget(target); | 84 } |
77 var result = networkLog && networkLog.requestForURL(url); | 85 |
78 if (result) | 86 /** |
79 return result; | 87 * @return {!Array<!SDK.NetworkRequest>} |
| 88 */ |
| 89 requests() { |
| 90 return this._requests; |
| 91 } |
| 92 |
| 93 /** |
| 94 * @param {!SDK.Target} target |
| 95 * @return {!Array<!SDK.NetworkRequest>} |
| 96 */ |
| 97 requestsForTarget(target) { |
| 98 var map = this._requestsByTargetAndId.get(target); |
| 99 return map ? Array.from(map.values()) : []; |
| 100 } |
| 101 |
| 102 /** |
| 103 * @param {string} url |
| 104 * @param {!SDK.Target} target |
| 105 * @return {?SDK.NetworkRequest} |
| 106 */ |
| 107 _requestForURLInTarget(url, target) { |
| 108 var map = this._requestsByTargetAndId.get(target); |
| 109 if (!map) |
| 110 return null; |
| 111 for (var request of map.values()) { |
| 112 if (request.url() === url) |
| 113 return request; |
80 } | 114 } |
81 return null; | 115 return null; |
82 } | 116 } |
83 | 117 |
84 /** | 118 /** |
85 * @return {!Array.<!SDK.NetworkRequest>} | |
86 */ | |
87 static requests() { | |
88 var result = []; | |
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 } | |
96 | |
97 /** | |
98 * @param {!SDK.NetworkRequest} request | |
99 * @return {?SDK.NetworkLog} | |
100 */ | |
101 static fromRequest(request) { | |
102 return SDK.NetworkLog.fromTarget(request.target()); | |
103 } | |
104 | |
105 /** | |
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 var map = this._requestsByTargetAndId.get(request.target()); |
173 if (!networkLog) | 186 if (map) { |
174 return {initiators: new Set(), initiated: new Set()}; | 187 for (var otherRequest of map.values()) { |
| 188 if (this._initiatorChain(otherRequest).has(request)) |
| 189 initiated.add(otherRequest); |
| 190 } |
| 191 } |
| 192 return {initiators: this._initiatorChain(request), initiated: initiated}; |
| 193 } |
175 | 194 |
176 var requests = networkLog.requests(); | 195 /** |
177 for (var logRequest of requests) { | 196 * @param {!SDK.NetworkRequest} request |
178 var localInitiators = initiatorChain(logRequest); | 197 * @return {!Set<!SDK.NetworkRequest>} |
179 if (localInitiators.has(request)) | 198 */ |
180 initiated.add(logRequest); | 199 _initiatorChain(request) { |
181 } | 200 this._initializeInitiatorSymbolIfNeeded(request); |
182 return {initiators: initiatorChain(request), initiated: initiated}; | 201 var initiatorChainCache = |
| 202 /** @type {?Set<!SDK.NetworkRequest>} */ (request[SDK.NetworkLog._initia
torDataSymbol].chain); |
| 203 if (initiatorChainCache) |
| 204 return initiatorChainCache; |
183 | 205 |
184 /** | 206 initiatorChainCache = new Set(); |
185 * @param {!SDK.NetworkRequest} request | |
186 * @return {!Set<!SDK.NetworkRequest>} | |
187 */ | |
188 function initiatorChain(request) { | |
189 SDK.NetworkLog._initializeInitiatorSymbolIfNeeded(request); | |
190 var initiatorChainCache = | |
191 /** @type {?Set<!SDK.NetworkRequest>} */ (request[SDK.NetworkLog._init
iatorDataSymbol].chain); | |
192 if (initiatorChainCache) | |
193 return initiatorChainCache; | |
194 | 207 |
195 initiatorChainCache = new Set(); | 208 var checkRequest = request; |
| 209 do { |
| 210 initiatorChainCache.add(checkRequest); |
| 211 checkRequest = this._initiatorRequest(checkRequest); |
| 212 } while (checkRequest); |
| 213 request[SDK.NetworkLog._initiatorDataSymbol].chain = initiatorChainCache; |
| 214 return initiatorChainCache; |
| 215 } |
196 | 216 |
197 var checkRequest = request; | 217 /** |
198 while (checkRequest) { | 218 * @param {!SDK.NetworkRequest} request |
199 initiatorChainCache.add(checkRequest); | 219 * @return {?SDK.NetworkRequest} |
200 checkRequest = initiatorRequest(checkRequest); | 220 */ |
201 } | 221 _initiatorRequest(request) { |
202 request[SDK.NetworkLog._initiatorDataSymbol].chain = initiatorChainCache; | 222 this._initializeInitiatorSymbolIfNeeded(request); |
203 return initiatorChainCache; | 223 if (request[SDK.NetworkLog._initiatorDataSymbol].request !== undefined) |
204 } | |
205 | |
206 /** | |
207 * @param {!SDK.NetworkRequest} request | |
208 * @return {?SDK.NetworkRequest} | |
209 */ | |
210 function initiatorRequest(request) { | |
211 SDK.NetworkLog._initializeInitiatorSymbolIfNeeded(request); | |
212 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 var idMap = new Map(); |
| 248 this._requestsByTargetAndId.set(target, idMap); |
| 249 |
253 // Preserve requests from the new session. | 250 // Preserve requests from the new session. |
254 this._currentPageLoad = null; | 251 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) { | 252 for (var i = 0; i < oldRequests.length; ++i) { |
258 var request = oldRequests[i]; | 253 var request = oldRequests[i]; |
259 if (request.loaderId === mainFrame.loaderId) { | 254 if (request.loaderId === mainFrame.loaderId) { |
260 if (!this._currentPageLoad) | 255 if (!currentPageLoad) |
261 this._currentPageLoad = new SDK.PageLoad(request); | 256 currentPageLoad = new SDK.PageLoad(request); |
262 this._requests.push(request); | 257 this._requests.push(request); |
263 this._requestForId[request.requestId()] = request; | 258 idMap.set(request.requestId(), request); |
264 request[SDK.NetworkLog._pageLoadForRequestSymbol] = this._currentPageLoa
d; | 259 request[SDK.NetworkLog._pageLoadForRequestSymbol] = currentPageLoad; |
265 } | 260 } |
266 } | 261 } |
| 262 if (currentPageLoad) |
| 263 this._currentPageLoad.set(target, currentPageLoad); |
267 } | 264 } |
268 | 265 |
269 /** | 266 /** |
270 * @param {!Common.Event} event | 267 * @param {!Common.Event} event |
271 */ | 268 */ |
272 _onRequestStarted(event) { | 269 _onRequestStarted(event) { |
273 var request = /** @type {!SDK.NetworkRequest} */ (event.data); | 270 var request = /** @type {!SDK.NetworkRequest} */ (event.data); |
274 this._requests.push(request); | 271 this._requests.push(request); |
275 this._requestForId[request.requestId()] = request; | 272 this._requestsByTargetAndId.get(request.target()).set(request.requestId(), r
equest); |
276 request[SDK.NetworkLog._pageLoadForRequestSymbol] = this._currentPageLoad; | 273 request[SDK.NetworkLog._pageLoadForRequestSymbol] = this._currentPageLoad.ge
t(request.target()); |
277 } | 274 } |
278 | 275 |
279 /** | 276 /** |
280 * @param {!SDK.NetworkManager.RequestRedirectEvent} event | 277 * @param {!SDK.NetworkManager.RequestRedirectEvent} event |
281 */ | 278 */ |
282 _onRequestRedirect(event) { | 279 _onRequestRedirect(event) { |
283 var request = event.request; | 280 var request = event.request; |
284 delete request[SDK.NetworkLog._initiatorDataSymbol]; | 281 delete request[SDK.NetworkLog._initiatorDataSymbol]; |
285 } | 282 } |
286 | 283 |
287 /** | 284 /** |
| 285 * @param {!SDK.ResourceTreeModel} resourceTreeModel |
288 * @param {!Common.Event} event | 286 * @param {!Common.Event} event |
289 */ | 287 */ |
290 _onDOMContentLoaded(event) { | 288 _onDOMContentLoaded(resourceTreeModel, event) { |
291 if (this._currentPageLoad) | 289 var pageLoad = this._currentPageLoad.get(resourceTreeModel.target()); |
292 this._currentPageLoad.contentLoadTime = event.data; | 290 if (pageLoad) |
| 291 pageLoad.contentLoadTime = /** @type {number} */ (event.data); |
293 } | 292 } |
294 | 293 |
295 /** | 294 /** |
| 295 * @param {!SDK.ResourceTreeModel} resourceTreeModel |
296 * @param {!Common.Event} event | 296 * @param {!Common.Event} event |
297 */ | 297 */ |
298 _onLoad(event) { | 298 _onLoad(resourceTreeModel, event) { |
299 if (this._currentPageLoad) | 299 var pageLoad = this._currentPageLoad.get(resourceTreeModel.target()); |
300 this._currentPageLoad.loadTime = event.data; | 300 if (pageLoad) |
| 301 pageLoad.loadTime = /** @type {number} */ (event.data); |
301 } | 302 } |
302 | 303 |
303 /** | 304 /** |
| 305 * @param {!SDK.Target} target |
304 * @param {!Protocol.Network.RequestId} requestId | 306 * @param {!Protocol.Network.RequestId} requestId |
305 * @return {?SDK.NetworkRequest} | 307 * @return {?SDK.NetworkRequest} |
306 */ | 308 */ |
307 requestForId(requestId) { | 309 requestForId(target, requestId) { |
308 return this._requestForId[requestId]; | 310 var map = this._requestsByTargetAndId.get(target); |
| 311 return map ? (map.get(requestId) || null) : null; |
309 } | 312 } |
310 }; | 313 }; |
311 | 314 |
312 /** | |
313 * @unrestricted | |
314 */ | |
315 SDK.PageLoad = class { | 315 SDK.PageLoad = class { |
316 /** | 316 /** |
317 * @param {!SDK.NetworkRequest} mainRequest | 317 * @param {!SDK.NetworkRequest} mainRequest |
318 */ | 318 */ |
319 constructor(mainRequest) { | 319 constructor(mainRequest) { |
320 this.id = ++SDK.PageLoad._lastIdentifier; | 320 this.id = ++SDK.PageLoad._lastIdentifier; |
321 this.url = mainRequest.url(); | 321 this.url = mainRequest.url(); |
322 this.startTime = mainRequest.startTime; | 322 this.startTime = mainRequest.startTime; |
| 323 /** @type {number} */ |
| 324 this.loadTime; |
| 325 /** @type {number} */ |
| 326 this.contentLoadTime; |
323 } | 327 } |
324 }; | 328 }; |
325 | 329 |
326 SDK.PageLoad._lastIdentifier = 0; | 330 SDK.PageLoad._lastIdentifier = 0; |
327 | 331 |
328 /** @typedef {!{initiators: !Set<!SDK.NetworkRequest>, initiated: !Set<!SDK.Netw
orkRequest>}} */ | 332 /** @typedef {!{initiators: !Set<!SDK.NetworkRequest>, initiated: !Set<!SDK.Netw
orkRequest>}} */ |
329 SDK.NetworkLog.InitiatorGraph; | 333 SDK.NetworkLog.InitiatorGraph; |
330 | 334 |
331 /** @typedef {!{type: !SDK.NetworkRequest.InitiatorType, url: string, lineNumber
: number, columnNumber: number, scriptId: ?string}} */ | 335 /** @typedef {!{type: !SDK.NetworkRequest.InitiatorType, url: string, lineNumber
: number, columnNumber: number, scriptId: ?string}} */ |
332 SDK.NetworkLog._InitiatorInfo; | 336 SDK.NetworkLog._InitiatorInfo; |
333 | 337 |
334 SDK.NetworkLog._initiatorDataSymbol = Symbol('InitiatorData'); | 338 SDK.NetworkLog._initiatorDataSymbol = Symbol('InitiatorData'); |
335 SDK.NetworkLog._pageLoadForRequestSymbol = Symbol('PageLoadForRequest'); | 339 SDK.NetworkLog._pageLoadForRequestSymbol = Symbol('PageLoadForRequest'); |
336 SDK.NetworkLog._logSymbol = Symbol('NetworkLog'); | 340 SDK.NetworkLog._events = Symbol('SDK.NetworkLog.events'); |
| 341 |
| 342 /** @type {!SDK.NetworkLog} */ |
| 343 SDK.networkLog; |
OLD | NEW |