OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 /** |
| 6 * @constructor |
| 7 * @param {!WebInspector.Target} target |
| 8 * @param {string} metric |
| 9 * @param {number} value |
| 10 * @param {string} description |
| 11 */ |
| 12 WebInspector.ServerTiming = function(target, metric, value, description) |
| 13 { |
| 14 this._target = target; |
| 15 this.metric = metric; |
| 16 this.value = value; |
| 17 this.description = description; |
| 18 } |
| 19 |
| 20 /** |
| 21 * @param {!WebInspector.Target} target |
| 22 * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers |
| 23 * @return {?Array.<!WebInspector.ServerTiming>} |
| 24 */ |
| 25 WebInspector.ServerTiming.parseHeaders = function(target, headers) |
| 26 { |
| 27 var rawServerTimingHeaders = headers.filter(item => item.name.toLowerCase()
=== 'server-timing'); |
| 28 if (rawServerTimingHeaders.length === 0) |
| 29 return null; |
| 30 |
| 31 function createFromHeaderValue(valueString) |
| 32 { |
| 33 if (!valueString) |
| 34 return null; |
| 35 var metricMatch = /\s*(\w+)\s*=\s*(\d+(?:\.\d+)?)\s*(?:;\s*(?:"(.*)"|(.*
)))\s*/.exec(valueString); |
| 36 if (!metricMatch) |
| 37 return null; |
| 38 return new WebInspector.ServerTiming(target, metricMatch[1], parseFloat(
metricMatch[2]), metricMatch[3] || metricMatch[4]); |
| 39 } |
| 40 |
| 41 var serverTimings = rawServerTimingHeaders.reduce((memo, header) => { |
| 42 var timing = createFromHeaderValue(header.value); |
| 43 if (timing) |
| 44 memo.push(timing); |
| 45 return memo; |
| 46 }, []); |
| 47 serverTimings.sort((a, b) => a.metric.toLowerCase().compareTo(b.metric.toLow
erCase())); |
| 48 return serverTimings; |
| 49 } |
OLD | NEW |