Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(738)

Unified Diff: third_party/WebKit/Source/devtools/front_end/network/RequestTimingView.js

Issue 1828203005: Expose SPDY pushes in DevTools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed tests Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/network/RequestTimingView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/network/RequestTimingView.js b/third_party/WebKit/Source/devtools/front_end/network/RequestTimingView.js
index c074f32939bb4f7e4369d31a953e49b8c5817b48..5cda0448706dfde3c273e649cd3f6615c1a1df6c 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/RequestTimingView.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/RequestTimingView.js
@@ -73,12 +73,14 @@ WebInspector.RequestTimingView.prototype = {
/** @enum {string} */
WebInspector.RequestTimeRangeNames = {
+ Push: "push",
Queueing: "queueing",
Blocking: "blocking",
Connecting: "connecting",
DNS: "dns",
Proxy: "proxy",
Receiving: "receiving",
+ ReceivingPush: "receiving-push",
Sending: "sending",
ServiceWorker: "serviceworker",
ServiceWorkerPreparation: "serviceworker-preparation",
@@ -106,11 +108,13 @@ WebInspector.RequestTimeRange;
WebInspector.RequestTimingView._timeRangeTitle = function(name)
{
switch (name) {
+ case WebInspector.RequestTimeRangeNames.Push: return WebInspector.UIString("Receiving Push");
case WebInspector.RequestTimeRangeNames.Queueing: return WebInspector.UIString("Queueing");
case WebInspector.RequestTimeRangeNames.Blocking: return WebInspector.UIString("Stalled");
case WebInspector.RequestTimeRangeNames.Connecting: return WebInspector.UIString("Initial connection");
case WebInspector.RequestTimeRangeNames.DNS: return WebInspector.UIString("DNS Lookup");
case WebInspector.RequestTimeRangeNames.Proxy: return WebInspector.UIString("Proxy negotiation");
+ case WebInspector.RequestTimeRangeNames.ReceivingPush: return WebInspector.UIString("Reading Push");
case WebInspector.RequestTimeRangeNames.Receiving: return WebInspector.UIString("Content Download");
case WebInspector.RequestTimeRangeNames.Sending: return WebInspector.UIString("Request sent");
case WebInspector.RequestTimeRangeNames.ServiceWorker: return WebInspector.UIString("Request to ServiceWorker");
@@ -124,9 +128,10 @@ WebInspector.RequestTimingView._timeRangeTitle = function(name)
/**
* @param {!WebInspector.NetworkRequest} request
+ * @param {number} navigationStart
* @return {!Array.<!WebInspector.RequestTimeRange>}
*/
-WebInspector.RequestTimingView.calculateRequestTimeRanges = function(request)
+WebInspector.RequestTimingView.calculateRequestTimeRanges = function(request, navigationStart)
{
var result = [];
/**
@@ -180,6 +185,13 @@ WebInspector.RequestTimingView.calculateRequestTimeRanges = function(request)
var endTime = firstPositive([request.endTime, request.responseReceivedTime]) || startTime;
addRange(WebInspector.RequestTimeRangeNames.Total, issueTime < startTime ? issueTime : startTime, endTime);
+ if (timing.pushStart) {
+ var pushEnd = timing.pushEnd || endTime;
+ // Only show the part of push that happened after the navigation/reload.
+ // Pushes that happened on the same connection before we started main request will not be shown.
+ if (pushEnd > navigationStart)
+ addRange(WebInspector.RequestTimeRangeNames.Push, Math.max(timing.pushStart, navigationStart), pushEnd);
+ }
if (issueTime < startTime)
addRange(WebInspector.RequestTimeRangeNames.Queueing, issueTime, startTime);
@@ -188,7 +200,7 @@ WebInspector.RequestTimingView.calculateRequestTimeRanges = function(request)
addOffsetRange(WebInspector.RequestTimeRangeNames.ServiceWorkerPreparation, timing.workerStart, timing.workerReady);
addOffsetRange(WebInspector.RequestTimeRangeNames.ServiceWorker, timing.workerReady, timing.sendEnd);
addOffsetRange(WebInspector.RequestTimeRangeNames.Waiting, timing.sendEnd, timing.receiveHeadersEnd);
- } else {
+ } else if (!timing.pushStart) {
var blocking = firstPositive([timing.dnsStart, timing.connectStart, timing.sendStart]) || 0;
addOffsetRange(WebInspector.RequestTimeRangeNames.Blocking, 0, blocking);
addOffsetRange(WebInspector.RequestTimeRangeNames.Proxy, timing.proxyStart, timing.proxyEnd);
@@ -200,7 +212,7 @@ WebInspector.RequestTimingView.calculateRequestTimeRanges = function(request)
}
if (request.endTime !== -1)
- addRange(WebInspector.RequestTimeRangeNames.Receiving, request.responseReceivedTime, endTime);
+ addRange(timing.pushStart ? WebInspector.RequestTimeRangeNames.ReceivingPush : WebInspector.RequestTimeRangeNames.Receiving, request.responseReceivedTime, endTime);
return result;
}
@@ -218,9 +230,9 @@ WebInspector.RequestTimingView.createTimingTable = function(request, navigationS
colgroup.createChild("col", "bars");
colgroup.createChild("col", "duration");
- var timeRanges = WebInspector.RequestTimingView.calculateRequestTimeRanges(request);
- var startTime = timeRanges[0].start;
- var endTime = timeRanges[0].end;
+ var timeRanges = WebInspector.RequestTimingView.calculateRequestTimeRanges(request, navigationStart);
+ var startTime = timeRanges.map(r => r.start).reduce((a, b) => Math.min(a, b));
+ var endTime = timeRanges.map(r => r.end).reduce((a, b) => Math.max(a, b));
var scale = 100 / (endTime - startTime);
var connectionHeader;
@@ -234,20 +246,14 @@ WebInspector.RequestTimingView.createTimingTable = function(request, navigationS
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(WebInspector.UIString("Connection Setup"));
- connectionHeader.createChild("td").createTextChild("");
- connectionHeader.createChild("td").createTextChild(WebInspector.UIString("TIME"));
- }
+ if (rangeName === WebInspector.RequestTimeRangeNames.Push) {
+ createHeader(WebInspector.UIString("Server Push"));
+ } else if (WebInspector.RequestTimingView.ConnectionSetupRangeNames[rangeName]) {
+ if (!connectionHeader)
+ connectionHeader = createHeader(WebInspector.UIString("Connection Setup"));
} else {
- if (!dataHeader) {
- dataHeader = tableElement.createChild("tr", "network-timing-table-header");
- dataHeader.createChild("td").createTextChild(WebInspector.UIString("Request/Response"));
- dataHeader.createChild("td").createTextChild("");
- dataHeader.createChild("td").createTextChild(WebInspector.UIString("TIME"));
- }
+ if (!dataHeader)
+ dataHeader = createHeader(WebInspector.UIString("Request/Response"));
}
var left = (scale * (range.start - startTime));
@@ -279,4 +285,16 @@ WebInspector.RequestTimingView.createTimingTable = function(request, navigationS
footer.createChild("td").createTextChild(Number.secondsToString(totalDuration, true));
return tableElement;
+
+ /**
+ * param {string} title
+ */
+ function createHeader(title)
+ {
+ var dataHeader = tableElement.createChild("tr", "network-timing-table-header");
+ dataHeader.createChild("td").createTextChild(title);
+ dataHeader.createChild("td").createTextChild("");
+ dataHeader.createChild("td").createTextChild(WebInspector.UIString("TIME"));
+ return dataHeader;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698