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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/network/NetworkTimelineColumn.js

Issue 2439453003: [Devtools] Removed dependency of networkLogView and dataGrid (Closed)
Patch Set: changes Created 4 years, 1 month 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
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.VBox} 7 * @extends {WebInspector.VBox}
8 * @param {!WebInspector.NetworkLogView} networkLogView 8 * @param {number} rowHeight
9 * @param {!WebInspector.SortableDataGrid} dataGrid 9 * @param {number} headerHeight
10 * @param {!WebInspector.NetworkTransferTimeCalculator} calculator
11 * @param {!Element} scrollContainer
10 */ 12 */
11 WebInspector.NetworkTimelineColumn = function(networkLogView, dataGrid) 13 WebInspector.NetworkTimelineColumn = function(rowHeight, headerHeight, calculato r, scrollContainer)
12 { 14 {
13 WebInspector.VBox.call(this, true); 15 WebInspector.VBox.call(this, true);
14 this.registerRequiredCSS("network/networkTimelineColumn.css"); 16 this.registerRequiredCSS("network/networkTimelineColumn.css");
15 17
16 this._canvas = this.contentElement.createChild("canvas"); 18 this._canvas = this.contentElement.createChild("canvas");
17 this._canvas.tabIndex = 1; 19 this._canvas.tabIndex = 1;
18 this.setDefaultFocusedElement(this._canvas); 20 this.setDefaultFocusedElement(this._canvas);
19 21
20 /** @const */ 22 /** @const */
21 this._leftPadding = 5; 23 this._leftPadding = 5;
22 /** @const */ 24 /** @const */
23 this._rightPadding = 5; 25 this._rightPadding = 5;
24 /** @const */ 26 /** @const */
25 this._fontSize = 10; 27 this._fontSize = 10;
26 28
27 this._dataGrid = dataGrid; 29 this._rowHeight = rowHeight;
28 this._networkLogView = networkLogView; 30 this._headerHeight = headerHeight;
31 this._calculator = calculator;
29 32
30 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._get PopoverAnchor.bind(this), this._showPopover.bind(this)); 33 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._get PopoverAnchor.bind(this), this._showPopover.bind(this));
31 this._popoverHelper.setTimeout(300, 300); 34 this._popoverHelper.setTimeout(300, 300);
32 35
33 this._vScrollElement = this.contentElement.createChild("div", "network-timel ine-v-scroll"); 36 this._vScrollElement = this.contentElement.createChild("div", "network-timel ine-v-scroll");
34 this._vScrollElement.addEventListener("scroll", this._onScroll.bind(this), { passive: true }); 37 this._vScrollElement.addEventListener("scroll", this._onScroll.bind(this), { passive: true });
35 this._vScrollElement.addEventListener("mousewheel", this._onMouseWheel.bind( this), { passive: true }); 38 this._vScrollElement.addEventListener("mousewheel", this._onMouseWheel.bind( this), { passive: true });
36 this._vScrollContent = this._vScrollElement.createChild("div"); 39 this._vScrollContent = this._vScrollElement.createChild("div");
37 40
38 this.element.addEventListener("mousewheel", this._onMouseWheel.bind(this), { passive: true }); 41 this.element.addEventListener("mousewheel", this._onMouseWheel.bind(this), { passive: true });
39 this.element.addEventListener("mousemove", this._onMouseMove.bind(this), tru e); 42 this.element.addEventListener("mousemove", this._onMouseMove.bind(this), tru e);
40 this.element.addEventListener("mouseleave", this.setHoveredRequest.bind(this , null), true); 43 this.element.addEventListener("mouseleave", this.setHoveredRequest.bind(this , null), true);
41 44
42 this._dataGridScrollContainer = this._dataGrid.scrollContainer; 45 this._boundScrollContainer = scrollContainer;
43 this._dataGridScrollContainer.addEventListener("mousewheel", event => { 46 this._boundScrollContainer.addEventListener("mousewheel", event => {
44 event.consume(true); 47 event.consume(true);
45 this._onMouseWheel(event); 48 this._onMouseWheel(event);
46 }, true); 49 }, true);
47 50
48 // TODO(allada) When timeline canvas moves out of experiment move this to st ylesheet. 51 // TODO(allada) When timeline canvas moves out of experiment move this to st ylesheet.
49 this._dataGridScrollContainer.style.overflow = "hidden"; 52 this._boundScrollContainer.style.overflow = "hidden";
50 this._dataGrid.setScrollContainer(this._vScrollElement);
51
52 this._dataGrid.addEventListener(WebInspector.ViewportDataGrid.Events.Viewpor tCalculated, this._update.bind(this));
53 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.PaddingChanged, this._updateHeight.bind(this));
54 53
55 /** @type {!Array<!WebInspector.NetworkRequest>} */ 54 /** @type {!Array<!WebInspector.NetworkRequest>} */
56 this._requestData = []; 55 this._requestData = [];
57 56
58 /** @type {?WebInspector.NetworkRequest} */ 57 /** @type {?WebInspector.NetworkRequest} */
59 this._hoveredRequest = null; 58 this._hoveredRequest = null;
60 59
61 this._rowStripeColor = WebInspector.themeSupport.patchColor("#f5f5f5", WebIn spector.ThemeSupport.ColorUsage.Background); 60 this._rowStripeColor = WebInspector.themeSupport.patchColor("#f5f5f5", WebIn spector.ThemeSupport.ColorUsage.Background);
62 this._rowHoverColor = WebInspector.themeSupport.patchColor("#ebf2fc", WebIns pector.ThemeSupport.ColorUsage.Background); 61 this._rowHoverColor = WebInspector.themeSupport.patchColor("#ebf2fc", WebIns pector.ThemeSupport.ColorUsage.Background);
63 62
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 /** 95 /**
97 * @param {!Element} element 96 * @param {!Element} element
98 * @param {!Event} event 97 * @param {!Event} event
99 * @return {!AnchorBox|undefined} 98 * @return {!AnchorBox|undefined}
100 */ 99 */
101 _getPopoverAnchor: function(element, event) 100 _getPopoverAnchor: function(element, event)
102 { 101 {
103 if (!this._hoveredRequest) 102 if (!this._hoveredRequest)
104 return; 103 return;
105 104
106 var rowHeight = this._networkLogView.rowHeight();
107 var range = WebInspector.RequestTimingView.calculateRequestTimeRanges(th is._hoveredRequest, 0).find(data => data.name === "total"); 105 var range = WebInspector.RequestTimingView.calculateRequestTimeRanges(th is._hoveredRequest, 0).find(data => data.name === "total");
108 var start = this._timeToPosition(range.start); 106 var start = this._timeToPosition(range.start);
109 var end = this._timeToPosition(range.end); 107 var end = this._timeToPosition(range.end);
110 108
111 if (event.offsetX < start || event.offsetX > end) 109 if (event.offsetX < start || event.offsetX > end)
112 return; 110 return;
113 111
114 var rowIndex = this._requestData.findIndex(request => this._hoveredReque st === request); 112 var rowIndex = this._requestData.findIndex(request => this._hoveredReque st === request);
115 var barHeight = this._getBarHeight(range.name); 113 var barHeight = this._getBarHeight(range.name);
116 var y = this._networkLogView.headerHeight() + (rowHeight * rowIndex - th is._vScrollElement.scrollTop) + ((rowHeight - barHeight) / 2); 114 var y = this._headerHeight + (this._rowHeight * rowIndex - this._vScroll Element.scrollTop) + ((this._rowHeight - barHeight) / 2);
117 115
118 if (event.offsetY < y || event.offsetY > y + barHeight) 116 if (event.offsetY < y || event.offsetY > y + barHeight)
119 return; 117 return;
120 118
121 var anchorBox = this.element.boxInWindow(); 119 var anchorBox = this.element.boxInWindow();
122 anchorBox.x += start; 120 anchorBox.x += start;
123 anchorBox.y += y; 121 anchorBox.y += y;
124 anchorBox.width = end - start; 122 anchorBox.width = end - start;
125 anchorBox.height = barHeight; 123 anchorBox.height = barHeight;
126 return anchorBox; 124 return anchorBox;
127 }, 125 },
128 126
129 /** 127 /**
130 * @param {!Element|!AnchorBox} anchor 128 * @param {!Element|!AnchorBox} anchor
131 * @param {!WebInspector.Popover} popover 129 * @param {!WebInspector.Popover} popover
132 */ 130 */
133 _showPopover: function(anchor, popover) 131 _showPopover: function(anchor, popover)
134 { 132 {
135 if (!this._hoveredRequest) 133 if (!this._hoveredRequest)
136 return; 134 return;
137 var content = WebInspector.RequestTimingView.createTimingTable(this._hov eredRequest, this._networkLogView.calculator().minimumBoundary()); 135 var content = WebInspector.RequestTimingView.createTimingTable(this._hov eredRequest, this._calculator.minimumBoundary());
138 popover.showForAnchor(content, anchor); 136 popover.showForAnchor(content, anchor);
139 }, 137 },
140 138
141 wasShown: function() 139 wasShown: function()
142 { 140 {
143 this.scheduleUpdate(); 141 this.scheduleDraw();
144 },
145
146 scheduleRefreshData: function()
147 {
148 this._needsRefreshData = true;
149 },
150
151 _refreshDataIfNeeded: function()
152 {
153 if (!this._needsRefreshData)
154 return;
155 this._needsRefreshData = false;
156 var currentNode = this._dataGrid.rootNode();
157 this._requestData = [];
158 while (currentNode = currentNode.traverseNextNode(true))
159 this._requestData.push(currentNode.request());
160 }, 142 },
161 143
162 /** 144 /**
145 * @return {!Element}
146 */
147 getScrollContainer: function()
148 {
149 return this._vScrollElement;
150 },
151
152 /**
163 * @param {?WebInspector.NetworkRequest} request 153 * @param {?WebInspector.NetworkRequest} request
164 */ 154 */
165 setHoveredRequest: function(request) 155 setHoveredRequest: function(request)
166 { 156 {
167 this._hoveredRequest = request; 157 this._hoveredRequest = request;
168 this.scheduleUpdate(); 158 this.scheduleDraw();
169 }, 159 },
170 160
171 /** 161 /**
162 * @param {number} height
163 */
164 setRowHeight: function(height)
165 {
166 this._rowHeight = height;
167 },
168
169 /**
170 * @param {number} height
171 */
172 setHeaderHeight: function(height)
173 {
174 this._headerHeight = height;
175 },
176
177 /**
178 * @param {!WebInspector.NetworkTimeCalculator} calculator
179 */
180 setCalculator: function(calculator)
181 {
182 this._calculator = calculator;
183 },
184
185 /**
172 * @param {!Event} event 186 * @param {!Event} event
173 */ 187 */
174 _onMouseMove: function(event) 188 _onMouseMove: function(event)
175 { 189 {
176 var request = this._getRequestFromPoint(event.offsetX, event.offsetY); 190 var request = this._getRequestFromPoint(event.offsetX, event.offsetY);
177 this.dispatchEventToListeners(WebInspector.NetworkTimelineColumn.Events. RequestHovered, request); 191 this.dispatchEventToListeners(WebInspector.NetworkTimelineColumn.Events. RequestHovered, request);
178 }, 192 },
179 193
180 /** 194 /**
181 * @param {!Event} event 195 * @param {!Event} event
182 */ 196 */
183 _onMouseWheel: function(event) 197 _onMouseWheel: function(event)
184 { 198 {
185 this._vScrollElement.scrollTop -= event.wheelDeltaY; 199 this._vScrollElement.scrollTop -= event.wheelDeltaY;
186 this._dataGridScrollContainer.scrollTop = this._vScrollElement.scrollTop ; 200 this._boundScrollContainer.scrollTop = this._vScrollElement.scrollTop;
187 this._popoverHelper.hidePopover(); 201 this._popoverHelper.hidePopover();
188 202
189 var request = this._getRequestFromPoint(event.offsetX, event.offsetY); 203 var request = this._getRequestFromPoint(event.offsetX, event.offsetY);
190 this.dispatchEventToListeners(WebInspector.NetworkTimelineColumn.Events. RequestHovered, request); 204 this.dispatchEventToListeners(WebInspector.NetworkTimelineColumn.Events. RequestHovered, request);
191 }, 205 },
192 206
193 /** 207 /**
194 * @param {!Event} event 208 * @param {!Event} event
195 */ 209 */
196 _onScroll: function(event) 210 _onScroll: function(event)
197 { 211 {
198 this._dataGridScrollContainer.scrollTop = this._vScrollElement.scrollTop ; 212 this._boundScrollContainer.scrollTop = this._vScrollElement.scrollTop;
199 this._popoverHelper.hidePopover(); 213 this._popoverHelper.hidePopover();
200 }, 214 },
201 215
202 /** 216 /**
203 * @param {number} x 217 * @param {number} x
204 * @param {number} y 218 * @param {number} y
205 * @return {?WebInspector.NetworkRequest} 219 * @return {?WebInspector.NetworkRequest}
206 */ 220 */
207 _getRequestFromPoint: function(x, y) 221 _getRequestFromPoint: function(x, y)
208 { 222 {
209 var rowHeight = this._networkLogView.rowHeight();
210 var scrollTop = this._vScrollElement.scrollTop; 223 var scrollTop = this._vScrollElement.scrollTop;
211 return this._requestData[Math.floor((scrollTop + y - this._networkLogVie w.headerHeight()) / rowHeight)] || null; 224 return this._requestData[Math.floor((scrollTop + y - this._headerHeight) / this._rowHeight)] || null;
212 }, 225 },
213 226
214 scheduleUpdate: function() 227 scheduleDraw: function()
215 { 228 {
216 if (this._updateRequestID) 229 if (this._updateRequestID)
217 return; 230 return;
218 this._updateRequestID = this.element.window().requestAnimationFrame(this ._update.bind(this)); 231 this._updateRequestID = this.element.window().requestAnimationFrame(this .update.bind(this, undefined));
219 }, 232 },
220 233
221 _update: function() 234 /**
235 * @param {!Array<!WebInspector.NetworkRequest>=} requests
236 */
237 update: function(requests)
222 { 238 {
239 if (requests)
240 this._requestData = requests;
223 this.element.window().cancelAnimationFrame(this._updateRequestID); 241 this.element.window().cancelAnimationFrame(this._updateRequestID);
224 this._updateRequestID = null; 242 this._updateRequestID = null;
225 243
226 this._refreshDataIfNeeded(); 244 this._startTime = this._calculator.minimumBoundary();
227 245 this._endTime = this._calculator.maximumBoundary();
228 this._startTime = this._networkLogView.calculator().minimumBoundary();
229 this._endTime = this._networkLogView.calculator().maximumBoundary();
230 this._resetCanvas(); 246 this._resetCanvas();
231 this._draw(); 247 this._draw();
232 }, 248 },
233 249
234 _updateHeight: function() 250 /**
251 * @param {number} height
252 */
253 setScrollHeight: function(height)
235 { 254 {
236 var totalHeight = this._dataGridScrollContainer.scrollHeight; 255 this._vScrollContent.style.height = height + "px";
237 this._vScrollContent.style.height = totalHeight + "px";
238 }, 256 },
239 257
240 _resetCanvas: function() 258 _resetCanvas: function()
241 { 259 {
242 var ratio = window.devicePixelRatio; 260 var ratio = window.devicePixelRatio;
243 this._canvas.width = this._offsetWidth * ratio; 261 this._canvas.width = this._offsetWidth * ratio;
244 this._canvas.height = this._offsetHeight * ratio; 262 this._canvas.height = this._offsetHeight * ratio;
245 this._canvas.style.width = this._offsetWidth + "px"; 263 this._canvas.style.width = this._offsetWidth + "px";
246 this._canvas.style.height = this._offsetHeight + "px"; 264 this._canvas.style.height = this._offsetHeight + "px";
247 }, 265 },
248 266
249 /** 267 /**
250 * @override 268 * @override
251 */ 269 */
252 onResize: function() 270 onResize: function()
253 { 271 {
254 WebInspector.VBox.prototype.onResize.call(this); 272 WebInspector.VBox.prototype.onResize.call(this);
255 this._offsetWidth = this.contentElement.offsetWidth; 273 this._offsetWidth = this.contentElement.offsetWidth;
256 this._offsetHeight = this.contentElement.offsetHeight; 274 this._offsetHeight = this.contentElement.offsetHeight;
257 this.scheduleUpdate(); 275 this.scheduleDraw();
258 }, 276 },
259 277
260 /** 278 /**
261 * @param {!WebInspector.RequestTimeRangeNames} type 279 * @param {!WebInspector.RequestTimeRangeNames} type
262 * @return {string} 280 * @return {string}
263 */ 281 */
264 _colorForType: function(type) 282 _colorForType: function(type)
265 { 283 {
266 var types = WebInspector.RequestTimeRangeNames; 284 var types = WebInspector.RequestTimeRangeNames;
267 switch (type) { 285 switch (type) {
(...skipping 29 matching lines...) Expand all
297 */ 315 */
298 _timeToPosition: function(time) 316 _timeToPosition: function(time)
299 { 317 {
300 var availableWidth = this._offsetWidth - this._leftPadding - this._right Padding; 318 var availableWidth = this._offsetWidth - this._leftPadding - this._right Padding;
301 var timeToPixel = availableWidth / (this._endTime - this._startTime); 319 var timeToPixel = availableWidth / (this._endTime - this._startTime);
302 return Math.floor(this._leftPadding + (time - this._startTime) * timeToP ixel); 320 return Math.floor(this._leftPadding + (time - this._startTime) * timeToP ixel);
303 }, 321 },
304 322
305 _draw: function() 323 _draw: function()
306 { 324 {
307 var useTimingBars = !WebInspector.moduleSetting("networkColorCodeResourc eTypes").get() && !this._networkLogView.calculator().startAtZero; 325 var useTimingBars = !WebInspector.moduleSetting("networkColorCodeResourc eTypes").get() && !this._calculator.startAtZero;
308 var requests = this._requestData; 326 var requests = this._requestData;
309 var context = this._canvas.getContext("2d"); 327 var context = this._canvas.getContext("2d");
310 context.save(); 328 context.save();
311 context.scale(window.devicePixelRatio, window.devicePixelRatio); 329 context.scale(window.devicePixelRatio, window.devicePixelRatio);
312 context.translate(0, this._networkLogView.headerHeight()); 330 context.translate(0, this._headerHeight);
313 context.rect(0, 0, this._offsetWidth, this._offsetHeight); 331 context.rect(0, 0, this._offsetWidth, this._offsetHeight);
314 context.clip(); 332 context.clip();
315 var rowHeight = this._networkLogView.rowHeight();
316 var scrollTop = this._vScrollElement.scrollTop; 333 var scrollTop = this._vScrollElement.scrollTop;
317 var firstRequestIndex = Math.floor(scrollTop / rowHeight); 334 var firstRequestIndex = Math.floor(scrollTop / this._rowHeight);
318 var lastRequestIndex = Math.min(requests.length, firstRequestIndex + Mat h.ceil(this._offsetHeight / rowHeight)); 335 var lastRequestIndex = Math.min(requests.length, firstRequestIndex + Mat h.ceil(this._offsetHeight / this._rowHeight));
319 for (var i = firstRequestIndex; i < lastRequestIndex; i++) { 336 for (var i = firstRequestIndex; i < lastRequestIndex; i++) {
320 var rowOffset = rowHeight * i; 337 var rowOffset = this._rowHeight * i;
321 var request = requests[i]; 338 var request = requests[i];
322 this._decorateRow(context, request, i, rowOffset - scrollTop, rowHei ght); 339 this._decorateRow(context, request, i, rowOffset - scrollTop);
323 if (useTimingBars) 340 if (useTimingBars)
324 this._drawTimingBars(context, request, rowOffset - scrollTop); 341 this._drawTimingBars(context, request, rowOffset - scrollTop);
325 else 342 else
326 this._drawSimplifiedBars(context, request, rowOffset - scrollTop ); 343 this._drawSimplifiedBars(context, request, rowOffset - scrollTop );
327 } 344 }
328 context.restore(); 345 context.restore();
329 this._drawDividers(context); 346 this._drawDividers(context);
330 }, 347 },
331 348
332 _drawDividers: function(context) 349 _drawDividers: function(context)
(...skipping 28 matching lines...) Expand all
361 for (var position = gridSliceTime * pixelsPerTime; position < drawableWi dth; position += gridSliceTime * pixelsPerTime) { 378 for (var position = gridSliceTime * pixelsPerTime; position < drawableWi dth; position += gridSliceTime * pixelsPerTime) {
362 // Added .5 because canvas drawing points are between pixels. 379 // Added .5 because canvas drawing points are between pixels.
363 var drawPosition = Math.floor(position) + this._leftPadding + .5; 380 var drawPosition = Math.floor(position) + this._leftPadding + .5;
364 context.beginPath(); 381 context.beginPath();
365 context.moveTo(drawPosition, 0); 382 context.moveTo(drawPosition, 0);
366 context.lineTo(drawPosition, this._offsetHeight); 383 context.lineTo(drawPosition, this._offsetHeight);
367 context.stroke(); 384 context.stroke();
368 if (position <= gridSliceTime * pixelsPerTime) 385 if (position <= gridSliceTime * pixelsPerTime)
369 continue; 386 continue;
370 var textData = Number.secondsToString(position / pixelsPerTime); 387 var textData = Number.secondsToString(position / pixelsPerTime);
371 context.fillText(textData, drawPosition - context.measureText(textDa ta).width - 2, Math.floor(this._networkLogView.headerHeight() - this._fontSize / 2)); 388 context.fillText(textData, drawPosition - context.measureText(textDa ta).width - 2, Math.floor(this._headerHeight - this._fontSize / 2));
372 } 389 }
373 context.restore(); 390 context.restore();
374 }, 391 },
375 392
376 /** 393 /**
377 * @return {number} 394 * @return {number}
378 */ 395 */
379 _timelineDuration: function() 396 _timelineDuration: function()
380 { 397 {
381 return this._networkLogView.calculator().maximumBoundary() - this._netwo rkLogView.calculator().minimumBoundary(); 398 return this._calculator.maximumBoundary() - this._calculator.minimumBoun dary();
382 }, 399 },
383 400
384 /** 401 /**
385 * @param {!WebInspector.RequestTimeRangeNames=} type 402 * @param {!WebInspector.RequestTimeRangeNames=} type
386 * @return {number} 403 * @return {number}
387 */ 404 */
388 _getBarHeight: function(type) 405 _getBarHeight: function(type)
389 { 406 {
390 var types = WebInspector.RequestTimeRangeNames; 407 var types = WebInspector.RequestTimeRangeNames;
391 switch (type) { 408 switch (type) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 * @param {!CanvasRenderingContext2D} context 469 * @param {!CanvasRenderingContext2D} context
453 * @param {!WebInspector.NetworkRequest} request 470 * @param {!WebInspector.NetworkRequest} request
454 * @param {number} y 471 * @param {number} y
455 */ 472 */
456 _drawSimplifiedBars: function(context, request, y) 473 _drawSimplifiedBars: function(context, request, y)
457 { 474 {
458 /** @const */ 475 /** @const */
459 var borderWidth = 1; 476 var borderWidth = 1;
460 477
461 context.save(); 478 context.save();
462 var calculator = this._networkLogView.calculator(); 479 var percentages = this._calculator.computeBarGraphPercentages(request);
463 var percentages = calculator.computeBarGraphPercentages(request);
464 var drawWidth = this._offsetWidth - this._leftPadding - this._rightPaddi ng; 480 var drawWidth = this._offsetWidth - this._leftPadding - this._rightPaddi ng;
465 var borderOffset = borderWidth % 2 === 0 ? 0 : .5; 481 var borderOffset = borderWidth % 2 === 0 ? 0 : .5;
466 var start = this._leftPadding + Math.floor((percentages.start / 100) * d rawWidth) + borderOffset; 482 var start = this._leftPadding + Math.floor((percentages.start / 100) * d rawWidth) + borderOffset;
467 var mid = this._leftPadding + Math.floor((percentages.middle / 100) * dr awWidth) + borderOffset; 483 var mid = this._leftPadding + Math.floor((percentages.middle / 100) * dr awWidth) + borderOffset;
468 var end = this._leftPadding + Math.floor((percentages.end / 100) * drawW idth) + borderOffset; 484 var end = this._leftPadding + Math.floor((percentages.end / 100) * drawW idth) + borderOffset;
469 var height = this._getBarHeight(); 485 var height = this._getBarHeight();
470 y += Math.floor(this._networkLogView.rowHeight() / 2 - height / 2 + bord erWidth) - borderWidth / 2; 486 y += Math.floor(this._rowHeight / 2 - height / 2 + borderWidth) - border Width / 2;
471 487
472 context.translate(0, y); 488 context.translate(0, y);
473 context.fillStyle = this._colorForResourceType(context, request); 489 context.fillStyle = this._colorForResourceType(context, request);
474 context.strokeStyle = this._borderColorForResourceType(request); 490 context.strokeStyle = this._borderColorForResourceType(request);
475 context.lineWidth = borderWidth; 491 context.lineWidth = borderWidth;
476 492
477 context.beginPath(); 493 context.beginPath();
478 context.globalAlpha = .5; 494 context.globalAlpha = .5;
479 context.rect(start, 0, mid - start, height - borderWidth); 495 context.rect(start, 0, mid - start, height - borderWidth);
480 context.fill(); 496 context.fill();
481 context.stroke(); 497 context.stroke();
482 498
483 var barWidth = Math.max(2, end - mid); 499 var barWidth = Math.max(2, end - mid);
484 context.beginPath(); 500 context.beginPath();
485 context.globalAlpha = 1; 501 context.globalAlpha = 1;
486 context.rect(mid, 0, barWidth, height - borderWidth); 502 context.rect(mid, 0, barWidth, height - borderWidth);
487 context.fill(); 503 context.fill();
488 context.stroke(); 504 context.stroke();
489 505
490 if (request === this._hoveredRequest) { 506 if (request === this._hoveredRequest) {
491 var labels = calculator.computeBarGraphLabels(request); 507 var labels = this._calculator.computeBarGraphLabels(request);
492 this._drawSimplifiedBarDetails(context, labels.left, labels.right, s tart, mid, mid + barWidth + borderOffset); 508 this._drawSimplifiedBarDetails(context, labels.left, labels.right, s tart, mid, mid + barWidth + borderOffset);
493 } 509 }
494 510
495 context.restore(); 511 context.restore();
496 }, 512 },
497 513
498 /** 514 /**
499 * @param {!CanvasRenderingContext2D} context 515 * @param {!CanvasRenderingContext2D} context
500 * @param {string} leftText 516 * @param {string} leftText
501 * @param {string} rightText 517 * @param {string} rightText
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 var color = this._colorForType(range.name); 581 var color = this._colorForType(range.name);
566 var borderColor = color; 582 var borderColor = color;
567 if (range.name === WebInspector.RequestTimeRangeNames.Queueing) { 583 if (range.name === WebInspector.RequestTimeRangeNames.Queueing) {
568 borderColor = "lightgrey"; 584 borderColor = "lightgrey";
569 lineWidth = 2; 585 lineWidth = 2;
570 } 586 }
571 if (range.name === WebInspector.RequestTimeRangeNames.Receiving) 587 if (range.name === WebInspector.RequestTimeRangeNames.Receiving)
572 lineWidth = 2; 588 lineWidth = 2;
573 context.fillStyle = color; 589 context.fillStyle = color;
574 var height = this._getBarHeight(range.name); 590 var height = this._getBarHeight(range.name);
575 var middleBarY = y + Math.floor(this._networkLogView.rowHeight() / 2 - height / 2) + lineWidth / 2; 591 var middleBarY = y + Math.floor(this._rowHeight / 2 - height / 2) + lineWidth / 2;
576 var start = this._timeToPosition(range.start); 592 var start = this._timeToPosition(range.start);
577 var end = this._timeToPosition(range.end); 593 var end = this._timeToPosition(range.end);
578 context.rect(start, middleBarY, end - start, height - lineWidth); 594 context.rect(start, middleBarY, end - start, height - lineWidth);
579 if (lineWidth) { 595 if (lineWidth) {
580 context.lineWidth = lineWidth; 596 context.lineWidth = lineWidth;
581 context.strokeStyle = borderColor; 597 context.strokeStyle = borderColor;
582 context.stroke(); 598 context.stroke();
583 } 599 }
584 context.fill(); 600 context.fill();
585 } 601 }
586 context.restore(); 602 context.restore();
587 }, 603 },
588 604
589 /** 605 /**
590 * @param {!CanvasRenderingContext2D} context 606 * @param {!CanvasRenderingContext2D} context
591 * @param {!WebInspector.NetworkRequest} request 607 * @param {!WebInspector.NetworkRequest} request
592 * @param {number} rowNumber 608 * @param {number} rowNumber
593 * @param {number} y 609 * @param {number} y
594 * @param {number} rowHeight
595 */ 610 */
596 _decorateRow: function(context, request, rowNumber, y, rowHeight) 611 _decorateRow: function(context, request, rowNumber, y)
597 { 612 {
598 if (rowNumber % 2 === 1 && this._hoveredRequest !== request) 613 if (rowNumber % 2 === 1 && this._hoveredRequest !== request)
599 return; 614 return;
600 context.save(); 615 context.save();
601 context.beginPath(); 616 context.beginPath();
602 var color = this._rowStripeColor; 617 var color = this._rowStripeColor;
603 if (this._hoveredRequest === request) 618 if (this._hoveredRequest === request)
604 color = this._rowHoverColor; 619 color = this._rowHoverColor;
605 620
606 context.fillStyle = color; 621 context.fillStyle = color;
607 context.rect(0, y, this._offsetWidth, rowHeight); 622 context.rect(0, y, this._offsetWidth, this._rowHeight);
608 context.fill(); 623 context.fill();
609 context.restore(); 624 context.restore();
610 }, 625 },
611 626
612 __proto__: WebInspector.VBox.prototype 627 __proto__: WebInspector.VBox.prototype
613 } 628 }
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698