| 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 48d39837cc466496b53dfde58a6f9d0940d59ff3..12769d95f5244673e0fc7d4a23aaacfaa8c0bc00 100644
|
| --- a/Source/devtools/front_end/network/RequestTimingView.js
|
| +++ b/Source/devtools/front_end/network/RequestTimingView.js
|
| @@ -90,6 +90,7 @@ WebInspector.RequestTimingView.prototype = {
|
| WebInspector.RequestTimingView.createTimingTable = function(request)
|
| {
|
| var tableElement = document.createElementWithClass("table", "network-timing-table");
|
| + tableElement.createChild("colgroup").createChild("col", "labels");
|
|
|
| /**
|
| * @param {string} title
|
| @@ -99,22 +100,22 @@ WebInspector.RequestTimingView.createTimingTable = function(request)
|
| */
|
| function addRow(title, className, start, end)
|
| {
|
| + if ((start === -1) || (start >= end))
|
| + return;
|
| var tr = tableElement.createChild("tr");
|
| tr.createChild("td").createTextChild(title);
|
| - var td = tr.createChild("td");
|
| - td.width = chartWidth + "px";
|
| - var row = td.createChild("div", "network-timing-row");
|
| + var row = tr.createChild("td").createChild("div", "network-timing-row");
|
|
|
| var bar = row.createChild("span", "network-timing-bar " + className);
|
| - bar.style.left = Math.floor(scale * start) + "px";
|
| - bar.style.right = Math.floor(scale * (total - end)) + "px";
|
| + bar.style.left = (scale * start) + "%";
|
| + bar.style.right = (scale * (total - end)) + "%";
|
| bar.textContent = "\u200B"; // Important for 0-time items to have 0 width.
|
|
|
| var label = row.createChild("span", "network-timing-bar-title");
|
| if (total - end < start)
|
| - label.style.right = (scale * (total - end)) + "px";
|
| + label.style.right = (scale * (total - end)) + "%";
|
| else
|
| - label.style.left = (scale * start) + "px";
|
| + label.style.left = (scale * start) + "%";
|
| label.textContent = Number.secondsToString((end - start) / 1000, true);
|
| }
|
|
|
| @@ -133,51 +134,36 @@ WebInspector.RequestTimingView.createTimingTable = function(request)
|
|
|
| function createCommunicationTimingTable()
|
| {
|
| - if (blocking > 0)
|
| - addRow(WebInspector.UIString("Stalled"), "blocking", 0, blocking);
|
| -
|
| - if (timing.proxyStart !== -1)
|
| - addRow(WebInspector.UIString("Proxy negotiation"), "proxy", timing.proxyStart, timing.proxyEnd);
|
| -
|
| - if (timing.dnsStart !== -1)
|
| - addRow(WebInspector.UIString("DNS Lookup"), "dns", timing.dnsStart, timing.dnsEnd);
|
| -
|
| - if (timing.connectStart !== -1)
|
| - addRow(WebInspector.UIString("Initial connection"), "connecting", timing.connectStart, timing.connectEnd);
|
| -
|
| - if (timing.sslStart !== -1)
|
| - addRow(WebInspector.UIString("SSL"), "ssl", timing.sslStart, timing.sslEnd);
|
| -
|
| + addRow(WebInspector.UIString("Stalled"), "blocking", 0, blocking || 0);
|
| + addRow(WebInspector.UIString("Proxy negotiation"), "proxy", timing.proxyStart, timing.proxyEnd);
|
| + addRow(WebInspector.UIString("DNS Lookup"), "dns", timing.dnsStart, timing.dnsEnd);
|
| + addRow(WebInspector.UIString("Initial connection"), "connecting", timing.connectStart, timing.connectEnd);
|
| + addRow(WebInspector.UIString("SSL"), "ssl", timing.sslStart, timing.sslEnd);
|
| addRow(WebInspector.UIString("Request sent"), "sending", timing.sendStart, timing.sendEnd);
|
| addRow(WebInspector.UIString("Waiting (TTFB)"), "waiting", timing.sendEnd, timing.receiveHeadersEnd);
|
| -
|
| - if (request.endTime !== -1)
|
| - addRow(WebInspector.UIString("Content Download"), "receiving", (request.responseReceivedTime - timing.requestTime) * 1000, total);
|
| }
|
|
|
| function createServiceWorkerTimingTable()
|
| {
|
| addRow(WebInspector.UIString("Stalled"), "blocking", 0, timing.serviceWorkerFetchStart);
|
| -
|
| addRow(WebInspector.UIString("Request to ServiceWorker"), "serviceworker", timing.serviceWorkerFetchStart, timing.serviceWorkerFetchEnd);
|
| addRow(WebInspector.UIString("ServiceWorker Preparation"), "serviceworker", timing.serviceWorkerFetchStart, timing.serviceWorkerFetchReady);
|
| addRow(WebInspector.UIString("Waiting (TTFB)"), "waiting", timing.serviceWorkerFetchEnd, timing.receiveHeadersEnd);
|
| -
|
| - if (request.endTime !== -1)
|
| - addRow(WebInspector.UIString("Content Download"), "receiving", (request.responseReceivedTime - timing.requestTime) * 1000, total);
|
| }
|
|
|
| var timing = request.timing;
|
| var blocking = firstPositive([timing.dnsStart, timing.connectStart, timing.sendStart]);
|
| var endTime = firstPositive([request.endTime, request.responseReceivedTime, timing.requestTime]);
|
| var total = (endTime - timing.requestTime) * 1000;
|
| - const chartWidth = 200;
|
| - var scale = chartWidth / total;
|
| + var scale = 100 / total;
|
|
|
| + addRow(WebInspector.UIString("Total"), "total", 0, total);
|
| if (request.fetchedViaServiceWorker)
|
| createServiceWorkerTimingTable();
|
| else
|
| createCommunicationTimingTable();
|
| + if (request.endTime !== -1)
|
| + addRow(WebInspector.UIString("Content Download"), "receiving", (request.responseReceivedTime - timing.requestTime) * 1000, total);
|
|
|
| if (!request.finished) {
|
| var cell = tableElement.createChild("tr").createChild("td", "caution");
|
|
|