| Index: Source/devtools/front_end/network/RequestTimingView.js
|
| diff --git a/Source/devtools/front_end/network/RequestTimingView.js b/Source/devtools/front_end/network/RequestTimingView.js
|
| index 7fb05cc701856887ad15e79b0cac3c4438e21968..ceab4c31e0f51b77e18ec585588ff1d4d211b5d9 100644
|
| --- a/Source/devtools/front_end/network/RequestTimingView.js
|
| +++ b/Source/devtools/front_end/network/RequestTimingView.js
|
| @@ -86,6 +86,14 @@ WebInspector.RequestTimeRangeNames = {
|
| Waiting: "waiting"
|
| };
|
|
|
| +WebInspector.RequestTimingView.ConnectionSetupRangeNames = [
|
| + WebInspector.RequestTimeRangeNames.Blocking,
|
| + WebInspector.RequestTimeRangeNames.Connecting,
|
| + WebInspector.RequestTimeRangeNames.DNS,
|
| + WebInspector.RequestTimeRangeNames.Proxy,
|
| + WebInspector.RequestTimeRangeNames.SSL
|
| +].keySet();
|
| +
|
| /** @typedef {{name: !WebInspector.RequestTimeRangeNames, start: number, end: number}} */
|
| WebInspector.RequestTimeRange;
|
|
|
| @@ -207,13 +215,33 @@ WebInspector.RequestTimingView.createTimingTable = function(request, navigationS
|
| var endTime = timeRanges[0].end;
|
| var scale = 100 / (endTime - startTime);
|
|
|
| - var globalTimeInfo = tableElement.createChild("tr").createChild("td");
|
| - globalTimeInfo.colSpan = 2;
|
| - globalTimeInfo.createTextChild("Started at " + Number.secondsToString(timeRanges[0].start - navigationStart));
|
| + var connectionHeader;
|
| + var dataHeader;
|
| + var totalDuration = 0;
|
|
|
| for (var i = 0; i < timeRanges.length; ++i) {
|
| var range = timeRanges[i];
|
| var rangeName = range.name;
|
| + if (rangeName === WebInspector.RequestTimeRangeNames.Total) {
|
| + totalDuration = range.end - range.start;
|
| + continue;
|
| + }
|
| + if (WebInspector.RequestTimingView.ConnectionSetupRangeNames[rangeName]) {
|
| + if (!connectionHeader) {
|
| + connectionHeader = tableElement.createChild("tr", "network-timing-table-header");
|
| + connectionHeader.createChild("td").createTextChild("Connection Setup");
|
| + connectionHeader.createChild("td").createTextChild("");
|
| + connectionHeader.createChild("td").createTextChild("TIME");
|
| + }
|
| + } else {
|
| + if (!dataHeader) {
|
| + dataHeader = tableElement.createChild("tr", "network-timing-table-header");
|
| + dataHeader.createChild("td").createTextChild("Request/Response");
|
| + dataHeader.createChild("td").createTextChild("");
|
| + dataHeader.createChild("td").createTextChild("TIME");
|
| + }
|
| + }
|
| +
|
| var left = (scale * (range.start - startTime));
|
| var right = (scale * (endTime - range.end));
|
| var duration = range.end - range.start;
|
| @@ -226,11 +254,7 @@ WebInspector.RequestTimingView.createTimingTable = function(request, navigationS
|
| bar.style.left = left + "%";
|
| bar.style.right = right + "%";
|
| bar.textContent = "\u200B"; // Important for 0-time items to have 0 width.
|
| - var label = row.createChild("span", "network-timing-bar-title");
|
| - if (right < left)
|
| - label.style.right = right + "%";
|
| - else
|
| - label.style.left = left + "%";
|
| + var label = tr.createChild("td").createChild("div", "network-timing-bar-title");
|
| label.textContent = Number.secondsToString(duration, true);
|
| }
|
|
|
| @@ -240,9 +264,11 @@ WebInspector.RequestTimingView.createTimingTable = function(request, navigationS
|
| cell.createTextChild(WebInspector.UIString("CAUTION: request is not finished yet!"));
|
| }
|
|
|
| - var note = tableElement.createChild("tr").createChild("td", "footnote");
|
| + var footer = tableElement.createChild("tr", "network-timing-footer");
|
| + var note = footer.createChild("td");
|
| note.colSpan = 2;
|
| - note.appendChild(WebInspector.createDocumentationAnchor("network#resource-network-timing", WebInspector.UIString("Explanation of resource timing")));
|
| + note.appendChild(WebInspector.createDocumentationAnchor("network#resource-network-timing", WebInspector.UIString("Explanation")));
|
| + footer.createChild("td").createTextChild(Number.secondsToString(totalDuration, true));
|
|
|
| return tableElement;
|
| }
|
|
|