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

Side by Side Diff: Source/devtools/front_end/network/RequestTimingView.js

Issue 471163005: DevTools: Resource Timing: expand table in detailed view. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 83 }
84 84
85 85
86 /** 86 /**
87 * @param {!WebInspector.NetworkRequest} request 87 * @param {!WebInspector.NetworkRequest} request
88 * @return {!Element} 88 * @return {!Element}
89 */ 89 */
90 WebInspector.RequestTimingView.createTimingTable = function(request) 90 WebInspector.RequestTimingView.createTimingTable = function(request)
91 { 91 {
92 var tableElement = document.createElementWithClass("table", "network-timing- table"); 92 var tableElement = document.createElementWithClass("table", "network-timing- table");
93 tableElement.createChild("colgroup").createChild("col", "labels");
93 94
94 /** 95 /**
95 * @param {string} title 96 * @param {string} title
96 * @param {string} className 97 * @param {string} className
97 * @param {number} start 98 * @param {number} start
98 * @param {number} end 99 * @param {number} end
99 */ 100 */
100 function addRow(title, className, start, end) 101 function addRow(title, className, start, end)
101 { 102 {
103 if ((start === -1) || (start >= end))
104 return;
102 var tr = tableElement.createChild("tr"); 105 var tr = tableElement.createChild("tr");
103 tr.createChild("td").createTextChild(title); 106 tr.createChild("td").createTextChild(title);
104 var td = tr.createChild("td"); 107 var row = tr.createChild("td").createChild("div", "network-timing-row");
105 td.width = chartWidth + "px";
106 var row = td.createChild("div", "network-timing-row");
107 108
108 var bar = row.createChild("span", "network-timing-bar " + className); 109 var bar = row.createChild("span", "network-timing-bar " + className);
109 bar.style.left = Math.floor(scale * start) + "px"; 110 bar.style.left = (scale * start) + "%";
110 bar.style.right = Math.floor(scale * (total - end)) + "px"; 111 bar.style.right = (scale * (total - end)) + "%";
111 bar.textContent = "\u200B"; // Important for 0-time items to have 0 widt h. 112 bar.textContent = "\u200B"; // Important for 0-time items to have 0 widt h.
112 113
113 var label = row.createChild("span", "network-timing-bar-title"); 114 var label = row.createChild("span", "network-timing-bar-title");
114 if (total - end < start) 115 if (total - end < start)
115 label.style.right = (scale * (total - end)) + "px"; 116 label.style.right = (scale * (total - end)) + "%";
116 else 117 else
117 label.style.left = (scale * start) + "px"; 118 label.style.left = (scale * start) + "%";
118 label.textContent = Number.secondsToString((end - start) / 1000, true); 119 label.textContent = Number.secondsToString((end - start) / 1000, true);
119 } 120 }
120 121
121 /** 122 /**
122 * @param {!Array.<number>} numbers 123 * @param {!Array.<number>} numbers
123 * @return {number|undefined} 124 * @return {number|undefined}
124 */ 125 */
125 function firstPositive(numbers) 126 function firstPositive(numbers)
126 { 127 {
127 for (var i = 0; i < numbers.length; ++i) { 128 for (var i = 0; i < numbers.length; ++i) {
128 if (numbers[i] > 0) 129 if (numbers[i] > 0)
129 return numbers[i]; 130 return numbers[i];
130 } 131 }
131 return undefined; 132 return undefined;
132 } 133 }
133 134
134 function createCommunicationTimingTable() 135 function createCommunicationTimingTable()
135 { 136 {
136 if (blocking > 0) 137 addRow(WebInspector.UIString("Stalled"), "blocking", 0, blocking || 0);
137 addRow(WebInspector.UIString("Stalled"), "blocking", 0, blocking); 138 addRow(WebInspector.UIString("Proxy negotiation"), "proxy", timing.proxy Start, timing.proxyEnd);
138 139 addRow(WebInspector.UIString("DNS Lookup"), "dns", timing.dnsStart, timi ng.dnsEnd);
139 if (timing.proxyStart !== -1) 140 addRow(WebInspector.UIString("Initial connection"), "connecting", timing .connectStart, timing.connectEnd);
140 addRow(WebInspector.UIString("Proxy negotiation"), "proxy", timing.p roxyStart, timing.proxyEnd); 141 addRow(WebInspector.UIString("SSL"), "ssl", timing.sslStart, timing.sslE nd);
141
142 if (timing.dnsStart !== -1)
143 addRow(WebInspector.UIString("DNS Lookup"), "dns", timing.dnsStart, timing.dnsEnd);
144
145 if (timing.connectStart !== -1)
146 addRow(WebInspector.UIString("Initial connection"), "connecting", ti ming.connectStart, timing.connectEnd);
147
148 if (timing.sslStart !== -1)
149 addRow(WebInspector.UIString("SSL"), "ssl", timing.sslStart, timing. sslEnd);
150
151 addRow(WebInspector.UIString("Request sent"), "sending", timing.sendStar t, timing.sendEnd); 142 addRow(WebInspector.UIString("Request sent"), "sending", timing.sendStar t, timing.sendEnd);
152 addRow(WebInspector.UIString("Waiting (TTFB)"), "waiting", timing.sendEn d, timing.receiveHeadersEnd); 143 addRow(WebInspector.UIString("Waiting (TTFB)"), "waiting", timing.sendEn d, timing.receiveHeadersEnd);
153
154 if (request.endTime !== -1)
155 addRow(WebInspector.UIString("Content Download"), "receiving", (requ est.responseReceivedTime - timing.requestTime) * 1000, total);
156 } 144 }
157 145
158 function createServiceWorkerTimingTable() 146 function createServiceWorkerTimingTable()
159 { 147 {
160 addRow(WebInspector.UIString("Stalled"), "blocking", 0, timing.serviceWo rkerFetchStart); 148 addRow(WebInspector.UIString("Stalled"), "blocking", 0, timing.serviceWo rkerFetchStart);
161
162 addRow(WebInspector.UIString("Request to ServiceWorker"), "serviceworker ", timing.serviceWorkerFetchStart, timing.serviceWorkerFetchEnd); 149 addRow(WebInspector.UIString("Request to ServiceWorker"), "serviceworker ", timing.serviceWorkerFetchStart, timing.serviceWorkerFetchEnd);
163 addRow(WebInspector.UIString("ServiceWorker Preparation"), "serviceworke r", timing.serviceWorkerFetchStart, timing.serviceWorkerFetchReady); 150 addRow(WebInspector.UIString("ServiceWorker Preparation"), "serviceworke r", timing.serviceWorkerFetchStart, timing.serviceWorkerFetchReady);
164 addRow(WebInspector.UIString("Waiting (TTFB)"), "waiting", timing.servic eWorkerFetchEnd, timing.receiveHeadersEnd); 151 addRow(WebInspector.UIString("Waiting (TTFB)"), "waiting", timing.servic eWorkerFetchEnd, timing.receiveHeadersEnd);
165
166 if (request.endTime !== -1)
167 addRow(WebInspector.UIString("Content Download"), "receiving", (requ est.responseReceivedTime - timing.requestTime) * 1000, total);
168 } 152 }
169 153
170 var timing = request.timing; 154 var timing = request.timing;
171 var blocking = firstPositive([timing.dnsStart, timing.connectStart, timing.s endStart]); 155 var blocking = firstPositive([timing.dnsStart, timing.connectStart, timing.s endStart]);
172 var endTime = firstPositive([request.endTime, request.responseReceivedTime, timing.requestTime]); 156 var endTime = firstPositive([request.endTime, request.responseReceivedTime, timing.requestTime]);
173 var total = (endTime - timing.requestTime) * 1000; 157 var total = (endTime - timing.requestTime) * 1000;
174 const chartWidth = 200; 158 var scale = 100 / total;
175 var scale = chartWidth / total;
176 159
160 addRow(WebInspector.UIString("Total"), "total", 0, total);
177 if (request.fetchedViaServiceWorker) 161 if (request.fetchedViaServiceWorker)
178 createServiceWorkerTimingTable(); 162 createServiceWorkerTimingTable();
179 else 163 else
180 createCommunicationTimingTable(); 164 createCommunicationTimingTable();
165 if (request.endTime !== -1)
166 addRow(WebInspector.UIString("Content Download"), "receiving", (request. responseReceivedTime - timing.requestTime) * 1000, total);
181 167
182 if (!request.finished) { 168 if (!request.finished) {
183 var cell = tableElement.createChild("tr").createChild("td", "caution"); 169 var cell = tableElement.createChild("tr").createChild("td", "caution");
184 cell.colSpan = 2; 170 cell.colSpan = 2;
185 cell.createTextChild(WebInspector.UIString("CAUTION: request is not fini shed yet!")); 171 cell.createTextChild(WebInspector.UIString("CAUTION: request is not fini shed yet!"));
186 } 172 }
187 173
188 return tableElement; 174 return tableElement;
189 } 175 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/network/NetworkPanel.js ('k') | Source/devtools/front_end/networkPanel.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698