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

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

Issue 2723053003: [Devtools] Flaten colors for network waterfall's resource colors view (Closed)
Patch Set: [Devtools] Flaten colors for network waterfall's resource colors view Created 3 years, 9 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
« no previous file with comments | « third_party/WebKit/LayoutTests/http/tests/inspector/network/waterfall-images-expected.png ('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 * @unrestricted 5 * @unrestricted
6 */ 6 */
7 Network.NetworkWaterfallColumn = class extends UI.VBox { 7 Network.NetworkWaterfallColumn = class extends UI.VBox {
8 /** 8 /**
9 * @param {number} rowHeight 9 * @param {number} rowHeight
10 * @param {!Network.NetworkTimeCalculator} calculator 10 * @param {!Network.NetworkTimeCalculator} calculator
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 this._eventDividers = new Map(); 49 this._eventDividers = new Map();
50 50
51 var colorUsage = UI.ThemeSupport.ColorUsage; 51 var colorUsage = UI.ThemeSupport.ColorUsage;
52 this._rowNavigationRequestColor = UI.themeSupport.patchColor('#def', colorUs age.Background); 52 this._rowNavigationRequestColor = UI.themeSupport.patchColor('#def', colorUs age.Background);
53 this._rowStripeColor = UI.themeSupport.patchColor('#f5f5f5', colorUsage.Back ground); 53 this._rowStripeColor = UI.themeSupport.patchColor('#f5f5f5', colorUsage.Back ground);
54 this._rowHoverColor = UI.themeSupport.patchColor( 54 this._rowHoverColor = UI.themeSupport.patchColor(
55 '#ebf2fc', /** @type {!UI.ThemeSupport.ColorUsage} */ (colorUsage.Backgr ound | colorUsage.Selection)); 55 '#ebf2fc', /** @type {!UI.ThemeSupport.ColorUsage} */ (colorUsage.Backgr ound | colorUsage.Selection));
56 this._parentInitiatorColor = UI.themeSupport.patchColor('hsla(120, 68%, 54%, 0.2)', colorUsage.Background); 56 this._parentInitiatorColor = UI.themeSupport.patchColor('hsla(120, 68%, 54%, 0.2)', colorUsage.Background);
57 this._initiatedColor = UI.themeSupport.patchColor('hsla(0, 68%, 54%, 0.2)', colorUsage.Background); 57 this._initiatedColor = UI.themeSupport.patchColor('hsla(0, 68%, 54%, 0.2)', colorUsage.Background);
58 58
59 /** @type {!Map<!Common.ResourceType, string>} */
60 this._borderColorsForResourceTypeCache = new Map();
61 /** @type {!Map<string, !CanvasGradient>} */
62 this._colorsForResourceTypeCache = new Map();
63
64 this.element.addEventListener('mousemove', this._onMouseMove.bind(this), tru e); 59 this.element.addEventListener('mousemove', this._onMouseMove.bind(this), tru e);
65 this.element.addEventListener('mouseleave', event => this._setHoveredNode(nu ll, false), true); 60 this.element.addEventListener('mouseleave', event => this._setHoveredNode(nu ll, false), true);
66 } 61 }
67 62
68 /** 63 /**
64 * @param {string} color
allada 2017/03/02 00:24:30 I moved these above because I am going to be addin
65 * @return {string}
66 */
67 _waitingColorForBaseColor(color) {
68 var parsedColor = Common.Color.parse(color);
69 var hsla = parsedColor.hsla();
70 hsla[2] *= 1.1;
71 return /** @type {string} */ (parsedColor.asString(null));
72 }
73
74 /**
75 * @param {string} color
76 * @return {string}
77 */
78 _borderColorForBaseColor(color) {
79 var parsedColor = Common.Color.parse(color);
80 var hsla = parsedColor.hsla();
81 hsla[1] /= 2;
82 hsla[2] -= Math.min(hsla[2], 0.2);
83 return /** @type {string} */ (parsedColor.asString(null));
84 }
85
86 /**
87 * @param {!SDK.NetworkRequest} request
88 * @return {string}
89 */
90 _colorForResourceType(request) {
91 var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourc eType;
92 return colorsForResourceType[request.resourceType()] || colorsForResourceTyp e.other;
93 }
94
95 /**
69 * @override 96 * @override
70 */ 97 */
71 willHide() { 98 willHide() {
72 this._popoverHelper.hidePopover(); 99 this._popoverHelper.hidePopover();
73 } 100 }
74 101
75 /** 102 /**
76 * @override 103 * @override
77 */ 104 */
78 wasShown() { 105 wasShown() {
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 case types.Push: 404 case types.Push:
378 case types.Queueing: 405 case types.Queueing:
379 return 7; 406 return 7;
380 default: 407 default:
381 return 13; 408 return 13;
382 } 409 }
383 } 410 }
384 411
385 /** 412 /**
386 * @param {!SDK.NetworkRequest} request 413 * @param {!SDK.NetworkRequest} request
387 * @return {string}
388 */
389 _borderColorForResourceType(request) {
390 var resourceType = request.resourceType();
391 if (this._borderColorsForResourceTypeCache.has(resourceType))
392 return this._borderColorsForResourceTypeCache.get(resourceType);
393 var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourc eType;
394 var color = colorsForResourceType[resourceType] || colorsForResourceType.oth er;
395 var parsedColor = Common.Color.parse(color);
396 var hsla = parsedColor.hsla();
397 hsla[1] /= 2;
398 hsla[2] -= Math.min(hsla[2], 0.2);
399 var resultColor = /** @type {string} */ (parsedColor.asString(null));
400 this._borderColorsForResourceTypeCache.set(resourceType, resultColor);
401 return resultColor;
402 }
403
404 /**
405 * @param {!CanvasRenderingContext2D} context
406 * @param {!SDK.NetworkRequest} request
407 * @return {string|!CanvasGradient}
408 */
409 _colorForResourceType(context, request) {
410 var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourc eType;
411 var resourceType = request.resourceType();
412 var color = colorsForResourceType[resourceType] || colorsForResourceType.oth er;
413 if (request.cached())
414 return color;
415
416 if (this._colorsForResourceTypeCache.has(color))
417 return this._colorsForResourceTypeCache.get(color);
418 var parsedColor = Common.Color.parse(color);
419 var hsla = parsedColor.hsla();
420 hsla[1] -= Math.min(hsla[1], 0.28);
421 hsla[2] -= Math.min(hsla[2], 0.15);
422 var gradient = context.createLinearGradient(0, 0, 0, this._getBarHeight());
423 gradient.addColorStop(0, color);
424 gradient.addColorStop(1, /** @type {string} */ (parsedColor.asString(null))) ;
425 this._colorsForResourceTypeCache.set(color, gradient);
426 return gradient;
427 }
428
429 /**
430 * @param {!SDK.NetworkRequest} request
431 * @param {number} borderOffset 414 * @param {number} borderOffset
432 * @return {!{start: number, mid: number, end: number}} 415 * @return {!{start: number, mid: number, end: number}}
433 */ 416 */
434 _getSimplifiedBarRange(request, borderOffset) { 417 _getSimplifiedBarRange(request, borderOffset) {
435 var drawWidth = this._offsetWidth - this._leftPadding; 418 var drawWidth = this._offsetWidth - this._leftPadding;
436 var percentages = this._calculator.computeBarGraphPercentages(request); 419 var percentages = this._calculator.computeBarGraphPercentages(request);
437 return { 420 return {
438 start: this._leftPadding + Math.floor((percentages.start / 100) * drawWidt h) + borderOffset, 421 start: this._leftPadding + Math.floor((percentages.start / 100) * drawWidt h) + borderOffset,
439 mid: this._leftPadding + Math.floor((percentages.middle / 100) * drawWidth ) + borderOffset, 422 mid: this._leftPadding + Math.floor((percentages.middle / 100) * drawWidth ) + borderOffset,
440 end: this._leftPadding + Math.floor((percentages.end / 100) * drawWidth) + borderOffset 423 end: this._leftPadding + Math.floor((percentages.end / 100) * drawWidth) + borderOffset
(...skipping 11 matching lines...) Expand all
452 return; 435 return;
453 const borderWidth = 1; 436 const borderWidth = 1;
454 var borderOffset = borderWidth % 2 === 0 ? 0 : 0.5; 437 var borderOffset = borderWidth % 2 === 0 ? 0 : 0.5;
455 438
456 context.save(); 439 context.save();
457 var ranges = this._getSimplifiedBarRange(request, borderOffset); 440 var ranges = this._getSimplifiedBarRange(request, borderOffset);
458 var height = this._getBarHeight(); 441 var height = this._getBarHeight();
459 y += Math.floor(this._rowHeight / 2 - height / 2 + borderWidth) - borderWidt h / 2; 442 y += Math.floor(this._rowHeight / 2 - height / 2 + borderWidth) - borderWidt h / 2;
460 443
461 context.translate(0, y); 444 context.translate(0, y);
462 context.fillStyle = this._colorForResourceType(context, request); 445 var fillColor = this._colorForResourceType(request);
463 context.strokeStyle = this._borderColorForResourceType(request); 446 context.strokeStyle = this._borderColorForBaseColor(fillColor);
464 context.lineWidth = borderWidth; 447 context.lineWidth = borderWidth;
465 448
466 context.beginPath(); 449 context.beginPath();
467 context.globalAlpha = 0.5; 450 context.fillStyle = this._waitingColorForBaseColor(fillColor);
468 context.rect(ranges.start, 0, ranges.mid - ranges.start, height - borderWidt h); 451 context.rect(ranges.start, 0, ranges.mid - ranges.start, height - borderWidt h);
469 context.fill(); 452 context.fill();
470 context.stroke(); 453 context.stroke();
471 454
472 var barWidth = Math.max(2, ranges.end - ranges.mid); 455 var barWidth = Math.max(2, ranges.end - ranges.mid);
473 context.beginPath(); 456 context.beginPath();
474 context.globalAlpha = 1; 457 context.fillStyle = fillColor;
475 context.rect(ranges.mid, 0, barWidth, height - borderWidth); 458 context.rect(ranges.mid, 0, barWidth, height - borderWidth);
476 context.fill(); 459 context.fill();
477 context.stroke(); 460 context.stroke();
478 461
479 /** @type {?{left: string, right: string, tooltip: (string|undefined)}} */ 462 /** @type {?{left: string, right: string, tooltip: (string|undefined)}} */
480 var labels = null; 463 var labels = null;
481 if (node.hovered()) { 464 if (node.hovered()) {
482 labels = this._calculator.computeBarGraphLabels(request); 465 labels = this._calculator.computeBarGraphLabels(request);
483 this._drawSimplifiedBarDetails( 466 this._drawSimplifiedBarDetails(
484 context, labels.left, labels.right, ranges.start, ranges.mid, ranges.m id + barWidth + borderOffset); 467 context, labels.left, labels.right, ranges.start, ranges.mid, ranges.m id + barWidth + borderOffset);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 * @param {number} endX 501 * @param {number} endX
519 */ 502 */
520 _drawSimplifiedBarDetails(context, leftText, rightText, startX, midX, endX) { 503 _drawSimplifiedBarDetails(context, leftText, rightText, startX, midX, endX) {
521 /** @const */ 504 /** @const */
522 var barDotLineLength = 10; 505 var barDotLineLength = 10;
523 506
524 context.save(); 507 context.save();
525 var height = this._getBarHeight(); 508 var height = this._getBarHeight();
526 var leftLabelWidth = context.measureText(leftText).width; 509 var leftLabelWidth = context.measureText(leftText).width;
527 var rightLabelWidth = context.measureText(rightText).width; 510 var rightLabelWidth = context.measureText(rightText).width;
528 context.fillStyle = UI.themeSupport.patchColor('#444', UI.ThemeSupport.Color Usage.Foreground); 511 context.fillStyle = UI.themeSupport.patchColor('#888', UI.ThemeSupport.Color Usage.Foreground);
529 context.strokeStyle = UI.themeSupport.patchColor('#444', UI.ThemeSupport.Col orUsage.Foreground); 512 context.strokeStyle = UI.themeSupport.patchColor('#888', UI.ThemeSupport.Col orUsage.Foreground);
530 if (leftLabelWidth < midX - startX) { 513 if (leftLabelWidth < midX - startX) {
531 var midBarX = startX + (midX - startX) / 2 - leftLabelWidth / 2; 514 var midBarX = startX + (midX - startX) / 2 - leftLabelWidth / 2;
532 context.fillText(leftText, midBarX, this._fontSize); 515 context.fillText(leftText, midBarX, this._fontSize);
533 } else if (barDotLineLength + leftLabelWidth + this._leftPadding < startX) { 516 } else if (barDotLineLength + leftLabelWidth + this._leftPadding < startX) {
534 context.beginPath(); 517 context.beginPath();
535 context.arc(startX, Math.floor(height / 2), 2, 0, 2 * Math.PI); 518 context.arc(startX, Math.floor(height / 2), 2, 0, 2 * Math.PI);
536 context.fill(); 519 context.fill();
537 context.fillText(leftText, startX - leftLabelWidth - barDotLineLength - 1, this._fontSize); 520 context.fillText(leftText, startX - leftLabelWidth - barDotLineLength - 1, this._fontSize);
538 context.beginPath(); 521 context.beginPath();
539 context.lineWidth = 1; 522 context.lineWidth = 1;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 font: 'hsl(8, 100%, 80%)', 630 font: 'hsl(8, 100%, 80%)',
648 media: 'hsl(90, 50%, 80%)', 631 media: 'hsl(90, 50%, 80%)',
649 image: 'hsl(90, 50%, 80%)', 632 image: 'hsl(90, 50%, 80%)',
650 script: 'hsl(31, 100%, 80%)', 633 script: 'hsl(31, 100%, 80%)',
651 stylesheet: 'hsl(272, 64%, 80%)', 634 stylesheet: 'hsl(272, 64%, 80%)',
652 texttrack: 'hsl(8, 100%, 80%)', 635 texttrack: 'hsl(8, 100%, 80%)',
653 websocket: 'hsl(0, 0%, 95%)', 636 websocket: 'hsl(0, 0%, 95%)',
654 xhr: 'hsl(53, 100%, 80%)', 637 xhr: 'hsl(53, 100%, 80%)',
655 other: 'hsl(0, 0%, 95%)' 638 other: 'hsl(0, 0%, 95%)'
656 }; 639 };
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/http/tests/inspector/network/waterfall-images-expected.png ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698