| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 23 matching lines...) Expand all Loading... |
| 34 // FIXME: Some fields are not yet supported due to back-end limitations. | 34 // FIXME: Some fields are not yet supported due to back-end limitations. |
| 35 // See https://bugs.webkit.org/show_bug.cgi?id=58127 for details. | 35 // See https://bugs.webkit.org/show_bug.cgi?id=58127 for details. |
| 36 | 36 |
| 37 /** | 37 /** |
| 38 * @constructor | 38 * @constructor |
| 39 * @param {!WebInspector.NetworkRequest} request | 39 * @param {!WebInspector.NetworkRequest} request |
| 40 */ | 40 */ |
| 41 WebInspector.HAREntry = function(request) | 41 WebInspector.HAREntry = function(request) |
| 42 { | 42 { |
| 43 this._request = request; | 43 this._request = request; |
| 44 } | 44 }; |
| 45 | 45 |
| 46 WebInspector.HAREntry.prototype = { | 46 WebInspector.HAREntry.prototype = { |
| 47 /** | 47 /** |
| 48 * @return {!Object} | 48 * @return {!Object} |
| 49 */ | 49 */ |
| 50 build: function() | 50 build: function() |
| 51 { | 51 { |
| 52 var ipAddress = this._request.remoteAddress(); | 52 var ipAddress = this._request.remoteAddress(); |
| 53 var portPositionInString = ipAddress.lastIndexOf(":"); | 53 var portPositionInString = ipAddress.lastIndexOf(":"); |
| 54 if (portPositionInString !== -1) | 54 if (portPositionInString !== -1) |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 * @return {number|undefined} | 258 * @return {number|undefined} |
| 259 */ | 259 */ |
| 260 get responseCompression() | 260 get responseCompression() |
| 261 { | 261 { |
| 262 if (this._request.cached() || this._request.statusCode === 304 || this._
request.statusCode === 206) | 262 if (this._request.cached() || this._request.statusCode === 304 || this._
request.statusCode === 206) |
| 263 return; | 263 return; |
| 264 if (!this._request.responseHeadersText) | 264 if (!this._request.responseHeadersText) |
| 265 return; | 265 return; |
| 266 return this._request.resourceSize - this.responseBodySize; | 266 return this._request.resourceSize - this.responseBodySize; |
| 267 } | 267 } |
| 268 } | 268 }; |
| 269 | 269 |
| 270 /** | 270 /** |
| 271 * @param {number} time | 271 * @param {number} time |
| 272 * @return {number} | 272 * @return {number} |
| 273 */ | 273 */ |
| 274 WebInspector.HAREntry._toMilliseconds = function(time) | 274 WebInspector.HAREntry._toMilliseconds = function(time) |
| 275 { | 275 { |
| 276 return time === -1 ? -1 : time * 1000; | 276 return time === -1 ? -1 : time * 1000; |
| 277 } | 277 }; |
| 278 | 278 |
| 279 /** | 279 /** |
| 280 * @constructor | 280 * @constructor |
| 281 * @param {!Array.<!WebInspector.NetworkRequest>} requests | 281 * @param {!Array.<!WebInspector.NetworkRequest>} requests |
| 282 */ | 282 */ |
| 283 WebInspector.HARLog = function(requests) | 283 WebInspector.HARLog = function(requests) |
| 284 { | 284 { |
| 285 this._requests = requests; | 285 this._requests = requests; |
| 286 } | 286 }; |
| 287 | 287 |
| 288 /** | 288 /** |
| 289 * @param {!WebInspector.NetworkRequest} request | 289 * @param {!WebInspector.NetworkRequest} request |
| 290 * @param {number} monotonicTime | 290 * @param {number} monotonicTime |
| 291 * @return {!Date} | 291 * @return {!Date} |
| 292 */ | 292 */ |
| 293 WebInspector.HARLog.pseudoWallTime = function(request, monotonicTime) | 293 WebInspector.HARLog.pseudoWallTime = function(request, monotonicTime) |
| 294 { | 294 { |
| 295 return new Date(request.pseudoWallTime(monotonicTime) * 1000); | 295 return new Date(request.pseudoWallTime(monotonicTime) * 1000); |
| 296 } | 296 }; |
| 297 | 297 |
| 298 WebInspector.HARLog.prototype = { | 298 WebInspector.HARLog.prototype = { |
| 299 /** | 299 /** |
| 300 * @return {!Object} | 300 * @return {!Object} |
| 301 */ | 301 */ |
| 302 build: function() | 302 build: function() |
| 303 { | 303 { |
| 304 return { | 304 return { |
| 305 version: "1.2", | 305 version: "1.2", |
| 306 creator: this._creator(), | 306 creator: this._creator(), |
| 307 pages: this._buildPages(), | 307 pages: this._buildPages(), |
| 308 entries: this._requests.map(this._convertResource.bind(this)) | 308 entries: this._requests.map(this._convertResource.bind(this)) |
| 309 } | 309 }; |
| 310 }, | 310 }, |
| 311 | 311 |
| 312 _creator: function() | 312 _creator: function() |
| 313 { | 313 { |
| 314 var webKitVersion = /AppleWebKit\/([^ ]+)/.exec(window.navigator.userAge
nt); | 314 var webKitVersion = /AppleWebKit\/([^ ]+)/.exec(window.navigator.userAge
nt); |
| 315 | 315 |
| 316 return { | 316 return { |
| 317 name: "WebInspector", | 317 name: "WebInspector", |
| 318 version: webKitVersion ? webKitVersion[1] : "n/a" | 318 version: webKitVersion ? webKitVersion[1] : "n/a" |
| 319 }; | 319 }; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 345 _convertPage: function(page, request) | 345 _convertPage: function(page, request) |
| 346 { | 346 { |
| 347 return { | 347 return { |
| 348 startedDateTime: WebInspector.HARLog.pseudoWallTime(request, page.st
artTime), | 348 startedDateTime: WebInspector.HARLog.pseudoWallTime(request, page.st
artTime), |
| 349 id: "page_" + page.id, | 349 id: "page_" + page.id, |
| 350 title: page.url, // We don't have actual page title here. URL is pro
bably better than nothing. | 350 title: page.url, // We don't have actual page title here. URL is pro
bably better than nothing. |
| 351 pageTimings: { | 351 pageTimings: { |
| 352 onContentLoad: this._pageEventTime(page, page.contentLoadTime), | 352 onContentLoad: this._pageEventTime(page, page.contentLoadTime), |
| 353 onLoad: this._pageEventTime(page, page.loadTime) | 353 onLoad: this._pageEventTime(page, page.loadTime) |
| 354 } | 354 } |
| 355 } | 355 }; |
| 356 }, | 356 }, |
| 357 | 357 |
| 358 /** | 358 /** |
| 359 * @param {!WebInspector.NetworkRequest} request | 359 * @param {!WebInspector.NetworkRequest} request |
| 360 * @return {!Object} | 360 * @return {!Object} |
| 361 */ | 361 */ |
| 362 _convertResource: function(request) | 362 _convertResource: function(request) |
| 363 { | 363 { |
| 364 return (new WebInspector.HAREntry(request)).build(); | 364 return (new WebInspector.HAREntry(request)).build(); |
| 365 }, | 365 }, |
| 366 | 366 |
| 367 /** | 367 /** |
| 368 * @param {!WebInspector.PageLoad} page | 368 * @param {!WebInspector.PageLoad} page |
| 369 * @param {number} time | 369 * @param {number} time |
| 370 * @return {number} | 370 * @return {number} |
| 371 */ | 371 */ |
| 372 _pageEventTime: function(page, time) | 372 _pageEventTime: function(page, time) |
| 373 { | 373 { |
| 374 var startTime = page.startTime; | 374 var startTime = page.startTime; |
| 375 if (time === -1 || startTime === -1) | 375 if (time === -1 || startTime === -1) |
| 376 return -1; | 376 return -1; |
| 377 return WebInspector.HAREntry._toMilliseconds(time - startTime); | 377 return WebInspector.HAREntry._toMilliseconds(time - startTime); |
| 378 } | 378 } |
| 379 } | 379 }; |
| OLD | NEW |