OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
3 * Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org> | 3 * Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org> |
4 * Copyright (C) 2011 Google Inc. All rights reserved. | 4 * Copyright (C) 2011 Google Inc. All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * | 9 * |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 { | 48 { |
49 return (this.minimum === other.minimum) && (this.maximum === other.maxim
um); | 49 return (this.minimum === other.minimum) && (this.maximum === other.maxim
um); |
50 } | 50 } |
51 } | 51 } |
52 | 52 |
53 /** | 53 /** |
54 * @constructor | 54 * @constructor |
55 * @extends {WebInspector.Object} | 55 * @extends {WebInspector.Object} |
56 * @implements {WebInspector.TimelineGrid.Calculator} | 56 * @implements {WebInspector.TimelineGrid.Calculator} |
57 */ | 57 */ |
58 WebInspector.NetworkTimeCalculator = function(startAtZero) | 58 WebInspector.NetworkTimeCalculator = function() |
59 { | 59 { |
60 this.startAtZero = startAtZero; | |
61 this._boundryChangedEventThrottler = new WebInspector.Throttler(0); | 60 this._boundryChangedEventThrottler = new WebInspector.Throttler(0); |
62 /** @type {?WebInspector.NetworkTimeBoundary} */ | 61 /** @type {?WebInspector.NetworkTimeBoundary} */ |
63 this._window = null; | 62 this._window = null; |
64 } | 63 } |
65 | 64 |
66 /** @enum {string} */ | 65 /** @enum {string} */ |
67 WebInspector.NetworkTimeCalculator.Events = { | 66 WebInspector.NetworkTimeCalculator.Events = { |
68 BoundariesChanged: "BoundariesChanged" | 67 BoundariesChanged: "BoundariesChanged" |
69 } | 68 } |
70 | 69 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 }, | 118 }, |
120 | 119 |
121 /** | 120 /** |
122 * @override | 121 * @override |
123 * @param {number} value | 122 * @param {number} value |
124 * @param {number=} precision | 123 * @param {number=} precision |
125 * @return {string} | 124 * @return {string} |
126 */ | 125 */ |
127 formatTime: function(value, precision) | 126 formatTime: function(value, precision) |
128 { | 127 { |
129 return Number.secondsToString(value); | 128 return Number.secondsToString(value - this.zeroTime()); |
130 }, | 129 }, |
131 | 130 |
132 /** | 131 /** |
133 * @override | 132 * @override |
134 * @return {number} | 133 * @return {number} |
135 */ | 134 */ |
136 minimumBoundary: function() | 135 minimumBoundary: function() |
137 { | 136 { |
138 return this._window ? this._window.minimum : this._minimumBoundary; | 137 return this._window ? this._window.minimum : this._minimumBoundary; |
139 }, | 138 }, |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 { | 194 { |
196 this._workingArea = clientWidth; | 195 this._workingArea = clientWidth; |
197 }, | 196 }, |
198 | 197 |
199 /** | 198 /** |
200 * @param {!WebInspector.NetworkRequest} request | 199 * @param {!WebInspector.NetworkRequest} request |
201 * @return {!{start: number, middle: number, end: number}} | 200 * @return {!{start: number, middle: number, end: number}} |
202 */ | 201 */ |
203 computeBarGraphPercentages: function(request) | 202 computeBarGraphPercentages: function(request) |
204 { | 203 { |
205 if (request.startTime !== -1) | 204 var start = (request.startTime === -1) ? 0 : ((request.startTime - this.
minimumBoundary()) / this.boundarySpan()) * 100; |
206 var start = ((request.startTime - this.minimumBoundary()) / this.bou
ndarySpan()) * 100; | 205 var middle = (request.responseReceivedTime === -1) ? 100 :((request.resp
onseReceivedTime - this.minimumBoundary()) / this.boundarySpan()) * 100; |
207 else | 206 var end = (request.endTime !== -1) ? 100 : ((request.endTime - this.min
imumBoundary()) / this.boundarySpan()) * 100; |
208 var start = 0; | |
209 | |
210 if (request.responseReceivedTime !== -1) | |
211 var middle = ((request.responseReceivedTime - this.minimumBoundary()
) / this.boundarySpan()) * 100; | |
212 else | |
213 var middle = (this.startAtZero ? start : 100); | |
214 | |
215 if (request.endTime !== -1) | |
216 var end = ((request.endTime - this.minimumBoundary()) / this.boundar
ySpan()) * 100; | |
217 else | |
218 var end = (this.startAtZero ? middle : 100); | |
219 | |
220 if (this.startAtZero) { | |
221 end -= start; | |
222 middle -= start; | |
223 start = 0; | |
224 } | |
225 | |
226 return {start: start, middle: middle, end: end}; | 207 return {start: start, middle: middle, end: end}; |
227 }, | 208 }, |
228 | 209 |
229 /** | 210 /** |
230 * @param {number} eventTime | 211 * @param {number} eventTime |
231 * @return {number} | 212 * @return {number} |
232 */ | 213 */ |
233 computePercentageFromEventTime: function(eventTime) | 214 computePercentageFromEventTime: function(eventTime) |
234 { | 215 { |
235 // This function computes a percentage in terms of the total loading tim
e | 216 return (eventTime === -1) ? 0 : ((eventTime - this.minimumBoundary()) /
this.boundarySpan()) * 100; |
236 // of a specific event. If startAtZero is set, then this is useless, and
we | |
237 // want to return 0. | |
238 if (eventTime !== -1 && !this.startAtZero) | |
239 return ((eventTime - this.minimumBoundary()) / this.boundarySpan())
* 100; | |
240 | |
241 return 0; | |
242 }, | 217 }, |
243 | 218 |
244 /** | 219 /** |
245 * @param {number} percentage | 220 * @param {number} percentage |
246 * @return {number} | 221 * @return {number} |
247 */ | 222 */ |
248 percentageToTime: function(percentage) | 223 percentageToTime: function(percentage) |
249 { | 224 { |
250 return percentage * this.boundarySpan() / 100 + this.minimumBoundary(); | 225 return percentage * this.boundarySpan() / 100 + this.minimumBoundary(); |
251 }, | 226 }, |
252 | 227 |
253 _boundaryChanged: function() | 228 _boundaryChanged: function() |
254 { | 229 { |
255 this._boundryChangedEventThrottler.schedule(this.dispatchEventToListener
s.bind(this, WebInspector.NetworkTimeCalculator.Events.BoundariesChanged)); | 230 this._boundryChangedEventThrottler.schedule(this.dispatchEventToListener
s.bind(this, WebInspector.NetworkTimeCalculator.Events.BoundariesChanged)); |
256 }, | 231 }, |
257 | 232 |
258 /** | 233 /** |
259 * @param {number} eventTime | 234 * @param {number} eventTime |
260 */ | 235 */ |
261 updateBoundariesForEventTime: function(eventTime) | 236 updateBoundariesForEventTime: function(eventTime) |
262 { | 237 { |
263 if (eventTime === -1 || this.startAtZero) | 238 if (eventTime === -1) |
264 return; | 239 return; |
265 | 240 |
266 if (this._maximumBoundary === undefined || eventTime > this._maximumBoun
dary) { | 241 if (this._maximumBoundary === undefined || eventTime > this._maximumBoun
dary) { |
267 this._maximumBoundary = eventTime; | 242 this._maximumBoundary = eventTime; |
268 this._boundaryChanged(); | 243 this._boundaryChanged(); |
269 } | 244 } |
270 }, | 245 }, |
271 | 246 |
272 /** | 247 /** |
273 * @param {!WebInspector.NetworkRequest} request | 248 * @param {!WebInspector.NetworkRequest} request |
(...skipping 28 matching lines...) Expand all Loading... |
302 else if (request.cached()) | 277 else if (request.cached()) |
303 tooltip = WebInspector.NetworkTimeCalculator._fromCacheFormat.format
(tooltip); | 278 tooltip = WebInspector.NetworkTimeCalculator._fromCacheFormat.format
(tooltip); |
304 return {left: leftLabel, right: rightLabel, tooltip: tooltip}; | 279 return {left: leftLabel, right: rightLabel, tooltip: tooltip}; |
305 }, | 280 }, |
306 | 281 |
307 /** | 282 /** |
308 * @param {!WebInspector.NetworkRequest} request | 283 * @param {!WebInspector.NetworkRequest} request |
309 */ | 284 */ |
310 updateBoundaries: function(request) | 285 updateBoundaries: function(request) |
311 { | 286 { |
312 var lowerBound; | 287 var lowerBound = this._lowerBound(request); |
313 if (this.startAtZero) | |
314 lowerBound = 0; | |
315 else | |
316 lowerBound = this._lowerBound(request); | |
317 | 288 |
318 if (lowerBound !== -1 && (typeof this._minimumBoundary === "undefined" |
| lowerBound < this._minimumBoundary)) { | 289 if (lowerBound !== -1 && (typeof this._minimumBoundary === "undefined" |
| lowerBound < this._minimumBoundary)) { |
319 this._minimumBoundary = lowerBound; | 290 this._minimumBoundary = lowerBound; |
320 this._boundaryChanged(); | 291 this._boundaryChanged(); |
321 } | 292 } |
322 | 293 |
323 var upperBound = this._upperBound(request); | 294 var upperBound = this._upperBound(request); |
324 if (upperBound !== -1 && (typeof this._maximumBoundary === "undefined" |
| upperBound > this._maximumBoundary)) { | 295 if (upperBound !== -1 && (typeof this._maximumBoundary === "undefined" |
| upperBound > this._maximumBoundary)) { |
325 this._maximumBoundary = upperBound; | 296 this._maximumBoundary = upperBound; |
326 this._boundaryChanged(); | 297 this._boundaryChanged(); |
327 } | 298 } |
328 }, | 299 }, |
329 | 300 |
330 /** | 301 /** |
331 * @param {!WebInspector.NetworkRequest} request | 302 * @param {!WebInspector.NetworkRequest} request |
332 * @return {number} | 303 * @return {number} |
333 */ | 304 */ |
334 _lowerBound: function(request) | 305 _lowerBound: function(request) |
335 { | 306 { |
336 return 0; | |
337 }, | |
338 | |
339 /** | |
340 * @param {!WebInspector.NetworkRequest} request | |
341 * @return {number} | |
342 */ | |
343 _upperBound: function(request) | |
344 { | |
345 return 0; | |
346 }, | |
347 | |
348 __proto__: WebInspector.Object.prototype | |
349 } | |
350 | |
351 /** | |
352 * @constructor | |
353 * @extends {WebInspector.NetworkTimeCalculator} | |
354 */ | |
355 WebInspector.NetworkTransferTimeCalculator = function() | |
356 { | |
357 WebInspector.NetworkTimeCalculator.call(this, false); | |
358 } | |
359 | |
360 WebInspector.NetworkTransferTimeCalculator.prototype = { | |
361 /** | |
362 * @override | |
363 * @param {number} value | |
364 * @param {number=} precision | |
365 * @return {string} | |
366 */ | |
367 formatTime: function(value, precision) | |
368 { | |
369 return Number.secondsToString(value - this.zeroTime()); | |
370 }, | |
371 | |
372 /** | |
373 * @override | |
374 * @param {!WebInspector.NetworkRequest} request | |
375 * @return {number} | |
376 */ | |
377 _lowerBound: function(request) | |
378 { | |
379 return request.startTime; | 307 return request.startTime; |
380 }, | 308 }, |
381 | 309 |
382 /** | 310 /** |
383 * @override | |
384 * @param {!WebInspector.NetworkRequest} request | 311 * @param {!WebInspector.NetworkRequest} request |
385 * @return {number} | 312 * @return {number} |
386 */ | 313 */ |
387 _upperBound: function(request) | 314 _upperBound: function(request) |
388 { | 315 { |
389 return request.endTime; | 316 return request.endTime; |
390 }, | 317 }, |
391 | 318 |
392 __proto__: WebInspector.NetworkTimeCalculator.prototype | 319 __proto__: WebInspector.Object.prototype |
393 } | 320 } |
394 | |
395 /** | |
396 * @constructor | |
397 * @extends {WebInspector.NetworkTimeCalculator} | |
398 */ | |
399 WebInspector.NetworkTransferDurationCalculator = function() | |
400 { | |
401 WebInspector.NetworkTimeCalculator.call(this, true); | |
402 } | |
403 | |
404 WebInspector.NetworkTransferDurationCalculator.prototype = { | |
405 /** | |
406 * @override | |
407 * @param {number} value | |
408 * @param {number=} precision | |
409 * @return {string} | |
410 */ | |
411 formatTime: function(value, precision) | |
412 { | |
413 return Number.secondsToString(value); | |
414 }, | |
415 | |
416 /** | |
417 * @override | |
418 * @param {!WebInspector.NetworkRequest} request | |
419 * @return {number} | |
420 */ | |
421 _upperBound: function(request) | |
422 { | |
423 return request.duration; | |
424 }, | |
425 | |
426 __proto__: WebInspector.NetworkTimeCalculator.prototype | |
427 } | |
OLD | NEW |