| OLD | NEW |
| 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 wasShown() { | 72 wasShown() { |
| 73 this.update(); | 73 this.update(); |
| 74 } | 74 } |
| 75 | 75 |
| 76 /** | 76 /** |
| 77 * @param {!Element} element | 77 * @param {!Element} element |
| 78 * @param {!Event} event | 78 * @param {!Event} event |
| 79 * @return {!AnchorBox|undefined} | 79 * @return {!AnchorBox|undefined} |
| 80 */ | 80 */ |
| 81 _getPopoverAnchor(element, event) { | 81 _getPopoverAnchor(element, event) { |
| 82 if (!this._hoveredLogEntry) | 82 var request = this._hoveredLogEntry ? this._hoveredLogEntry.request() : null
; |
| 83 if (!this._hoveredLogEntry || !request || this._hoveredLogEntry.hasChildren) |
| 83 return; | 84 return; |
| 84 var useTimingBars = !Common.moduleSetting('networkColorCodeResourceTypes').g
et() && !this._calculator.startAtZero; | 85 var useTimingBars = !Common.moduleSetting('networkColorCodeResourceTypes').g
et() && !this._calculator.startAtZero; |
| 85 if (useTimingBars) { | 86 if (useTimingBars) { |
| 86 var range = Network.RequestTimingView.calculateRequestTimeRanges(this._hov
eredLogEntry.request(), 0) | 87 var range = Network.RequestTimingView.calculateRequestTimeRanges(request,
0) |
| 87 .find(data => data.name === Network.RequestTimeRangeNames.
Total); | 88 .find(data => data.name === Network.RequestTimeRangeNames.
Total); |
| 88 var start = this._timeToPosition(range.start); | 89 var start = this._timeToPosition(range.start); |
| 89 var end = this._timeToPosition(range.end); | 90 var end = this._timeToPosition(range.end); |
| 90 } else { | 91 } else { |
| 91 var range = this._getSimplifiedBarRange(this._hoveredLogEntry, 0); | 92 var range = this._getSimplifiedBarRange(request, 0); |
| 92 var start = range.start; | 93 var start = range.start; |
| 93 var end = range.end; | 94 var end = range.end; |
| 94 } | 95 } |
| 95 | 96 |
| 96 if (end - start < 50) { | 97 if (end - start < 50) { |
| 97 var halfWidth = (end - start) / 2; | 98 var halfWidth = (end - start) / 2; |
| 98 start = start + halfWidth - 25; | 99 start = start + halfWidth - 25; |
| 99 end = end - halfWidth + 25; | 100 end = end - halfWidth + 25; |
| 100 } | 101 } |
| 101 | 102 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 115 anchorBox.width = end - start; | 116 anchorBox.width = end - start; |
| 116 anchorBox.height = barHeight; | 117 anchorBox.height = barHeight; |
| 117 return anchorBox; | 118 return anchorBox; |
| 118 } | 119 } |
| 119 | 120 |
| 120 /** | 121 /** |
| 121 * @param {!Element|!AnchorBox} anchor | 122 * @param {!Element|!AnchorBox} anchor |
| 122 * @param {!UI.Popover} popover | 123 * @param {!UI.Popover} popover |
| 123 */ | 124 */ |
| 124 _showPopover(anchor, popover) { | 125 _showPopover(anchor, popover) { |
| 125 if (!this._hoveredLogEntry) | 126 var request = this._hoveredLogEntry ? this._hoveredLogEntry.request() : null
; |
| 127 if (!request) |
| 126 return; | 128 return; |
| 127 var content = Network.RequestTimingView.createTimingTable( | 129 var content = Network.RequestTimingView.createTimingTable(request, this._cal
culator.minimumBoundary()); |
| 128 this._hoveredLogEntry.request(), this._calculator.minimumBoundary()); | |
| 129 popover.showForAnchor(content, anchor); | 130 popover.showForAnchor(content, anchor); |
| 130 } | 131 } |
| 131 | 132 |
| 132 /** | 133 /** |
| 133 * @param {?Network.NetworkLogEntry} logEntry | 134 * @param {?Network.NetworkLogEntry} logEntry |
| 134 * @param {boolean} highlightInitiatorChain | 135 * @param {boolean} highlightInitiatorChain |
| 135 */ | 136 */ |
| 136 setHoveredLogEntry(logEntry, highlightInitiatorChain) { | 137 setHoveredLogEntry(logEntry, highlightInitiatorChain) { |
| 137 this._hoveredLogEntry = logEntry; | 138 this._hoveredLogEntry = logEntry; |
| 138 this._initiatorGraph = (highlightInitiatorChain && logEntry) ? logEntry.requ
est().initiatorGraph() : null; | 139 this._initiatorGraph = null; |
| 140 var request = logEntry ? logEntry.request() : null; |
| 141 if (highlightInitiatorChain && request) |
| 142 this._initiatorGraph = request.initiatorGraph(); |
| 139 this.update(); | 143 this.update(); |
| 140 } | 144 } |
| 141 | 145 |
| 142 /** | 146 /** |
| 143 * @param {number} height | 147 * @param {number} height |
| 144 */ | 148 */ |
| 145 setRowHeight(height) { | 149 setRowHeight(height) { |
| 146 this._rowHeight = height; | 150 this._rowHeight = height; |
| 147 } | 151 } |
| 148 | 152 |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 case types.Blocking: | 349 case types.Blocking: |
| 346 case types.Push: | 350 case types.Push: |
| 347 case types.Queueing: | 351 case types.Queueing: |
| 348 return 7; | 352 return 7; |
| 349 default: | 353 default: |
| 350 return 13; | 354 return 13; |
| 351 } | 355 } |
| 352 } | 356 } |
| 353 | 357 |
| 354 /** | 358 /** |
| 355 * @param {!Network.NetworkLogEntry} logEntry | 359 * @param {!SDK.NetworkRequest} request |
| 356 * @return {string} | 360 * @return {string} |
| 357 */ | 361 */ |
| 358 _borderColorForResourceType(logEntry) { | 362 _borderColorForResourceType(request) { |
| 359 var resourceType = logEntry.request().resourceType(); | 363 var resourceType = request.resourceType(); |
| 360 if (this._borderColorsForResourceTypeCache.has(resourceType)) | 364 if (this._borderColorsForResourceTypeCache.has(resourceType)) |
| 361 return this._borderColorsForResourceTypeCache.get(resourceType); | 365 return this._borderColorsForResourceTypeCache.get(resourceType); |
| 362 var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourc
eType; | 366 var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourc
eType; |
| 363 var color = colorsForResourceType[resourceType] || colorsForResourceType.Oth
er; | 367 var color = colorsForResourceType[resourceType] || colorsForResourceType.Oth
er; |
| 364 var parsedColor = Common.Color.parse(color); | 368 var parsedColor = Common.Color.parse(color); |
| 365 var hsla = parsedColor.hsla(); | 369 var hsla = parsedColor.hsla(); |
| 366 hsla[1] /= 2; | 370 hsla[1] /= 2; |
| 367 hsla[2] -= Math.min(hsla[2], 0.2); | 371 hsla[2] -= Math.min(hsla[2], 0.2); |
| 368 var resultColor = /** @type {string} */ (parsedColor.asString(null)); | 372 var resultColor = /** @type {string} */ (parsedColor.asString(null)); |
| 369 this._borderColorsForResourceTypeCache.set(resourceType, resultColor); | 373 this._borderColorsForResourceTypeCache.set(resourceType, resultColor); |
| 370 return resultColor; | 374 return resultColor; |
| 371 } | 375 } |
| 372 | 376 |
| 373 /** | 377 /** |
| 374 * @param {!CanvasRenderingContext2D} context | 378 * @param {!CanvasRenderingContext2D} context |
| 375 * @param {!Network.NetworkLogEntry} logEntry | 379 * @param {!SDK.NetworkRequest} request |
| 376 * @return {string|!CanvasGradient} | 380 * @return {string|!CanvasGradient} |
| 377 */ | 381 */ |
| 378 _colorForResourceType(context, logEntry) { | 382 _colorForResourceType(context, request) { |
| 379 var request = logEntry.request(); | |
| 380 var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourc
eType; | 383 var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourc
eType; |
| 381 var resourceType = request.resourceType(); | 384 var resourceType = request.resourceType(); |
| 382 var color = colorsForResourceType[resourceType] || colorsForResourceType.Oth
er; | 385 var color = colorsForResourceType[resourceType] || colorsForResourceType.Oth
er; |
| 383 if (request.cached()) | 386 if (request.cached()) |
| 384 return color; | 387 return color; |
| 385 | 388 |
| 386 if (this._colorsForResourceTypeCache.has(color)) | 389 if (this._colorsForResourceTypeCache.has(color)) |
| 387 return this._colorsForResourceTypeCache.get(color); | 390 return this._colorsForResourceTypeCache.get(color); |
| 388 var parsedColor = Common.Color.parse(color); | 391 var parsedColor = Common.Color.parse(color); |
| 389 var hsla = parsedColor.hsla(); | 392 var hsla = parsedColor.hsla(); |
| 390 hsla[1] -= Math.min(hsla[1], 0.28); | 393 hsla[1] -= Math.min(hsla[1], 0.28); |
| 391 hsla[2] -= Math.min(hsla[2], 0.15); | 394 hsla[2] -= Math.min(hsla[2], 0.15); |
| 392 var gradient = context.createLinearGradient(0, 0, 0, this._getBarHeight()); | 395 var gradient = context.createLinearGradient(0, 0, 0, this._getBarHeight()); |
| 393 gradient.addColorStop(0, color); | 396 gradient.addColorStop(0, color); |
| 394 gradient.addColorStop(1, /** @type {string} */ (parsedColor.asString(null)))
; | 397 gradient.addColorStop(1, /** @type {string} */ (parsedColor.asString(null)))
; |
| 395 this._colorsForResourceTypeCache.set(color, gradient); | 398 this._colorsForResourceTypeCache.set(color, gradient); |
| 396 return gradient; | 399 return gradient; |
| 397 } | 400 } |
| 398 | 401 |
| 399 /** | 402 /** |
| 400 * @param {!Network.NetworkLogEntry} logEntry | 403 * @param {!SDK.NetworkRequest} request |
| 401 * @param {number} borderOffset | 404 * @param {number} borderOffset |
| 402 * @return {!{start: number, mid: number, end: number}} | 405 * @return {!{start: number, mid: number, end: number}} |
| 403 */ | 406 */ |
| 404 _getSimplifiedBarRange(logEntry, borderOffset) { | 407 _getSimplifiedBarRange(request, borderOffset) { |
| 405 var drawWidth = this._offsetWidth - this._leftPadding; | 408 var drawWidth = this._offsetWidth - this._leftPadding; |
| 406 var percentages = this._calculator.computeBarGraphPercentages(logEntry.reque
st()); | 409 var percentages = this._calculator.computeBarGraphPercentages(request); |
| 407 return { | 410 return { |
| 408 start: this._leftPadding + Math.floor((percentages.start / 100) * drawWidt
h) + borderOffset, | 411 start: this._leftPadding + Math.floor((percentages.start / 100) * drawWidt
h) + borderOffset, |
| 409 mid: this._leftPadding + Math.floor((percentages.middle / 100) * drawWidth
) + borderOffset, | 412 mid: this._leftPadding + Math.floor((percentages.middle / 100) * drawWidth
) + borderOffset, |
| 410 end: this._leftPadding + Math.floor((percentages.end / 100) * drawWidth) +
borderOffset | 413 end: this._leftPadding + Math.floor((percentages.end / 100) * drawWidth) +
borderOffset |
| 411 }; | 414 }; |
| 412 } | 415 } |
| 413 | 416 |
| 414 /** | 417 /** |
| 415 * @param {!CanvasRenderingContext2D} context | 418 * @param {!CanvasRenderingContext2D} context |
| 416 * @param {!Network.NetworkLogEntry} logEntry | 419 * @param {!Network.NetworkLogEntry} logEntry |
| 417 * @param {number} y | 420 * @param {number} y |
| 418 */ | 421 */ |
| 419 _drawSimplifiedBars(context, logEntry, y) { | 422 _drawSimplifiedBars(context, logEntry, y) { |
| 420 const borderWidth = 1; | 423 const borderWidth = 1; |
| 421 var borderOffset = borderWidth % 2 === 0 ? 0 : 0.5; | 424 var borderOffset = borderWidth % 2 === 0 ? 0 : 0.5; |
| 422 | 425 |
| 423 context.save(); | 426 context.save(); |
| 424 var ranges = this._getSimplifiedBarRange(logEntry, borderOffset); | 427 for (var request of logEntry.requests()) { |
| 425 var height = this._getBarHeight(); | 428 var ranges = this._getSimplifiedBarRange(request, borderOffset); |
| 426 y += Math.floor(this._rowHeight / 2 - height / 2 + borderWidth) - borderWidt
h / 2; | 429 var height = this._getBarHeight(); |
| 430 y += Math.floor(this._rowHeight / 2 - height / 2 + borderWidth) - borderWi
dth / 2; |
| 427 | 431 |
| 428 context.translate(0, y); | 432 context.translate(0, y); |
| 429 context.fillStyle = this._colorForResourceType(context, logEntry); | 433 context.fillStyle = this._colorForResourceType(context, request); |
| 430 context.strokeStyle = this._borderColorForResourceType(logEntry); | 434 context.strokeStyle = this._borderColorForResourceType(request); |
| 431 context.lineWidth = borderWidth; | 435 context.lineWidth = borderWidth; |
| 432 | 436 |
| 433 context.beginPath(); | 437 context.beginPath(); |
| 434 context.globalAlpha = 0.5; | 438 context.globalAlpha = 0.5; |
| 435 context.rect(ranges.start, 0, ranges.mid - ranges.start, height - borderWidt
h); | 439 context.rect(ranges.start, 0, ranges.mid - ranges.start, height - borderWi
dth); |
| 436 context.fill(); | 440 context.fill(); |
| 437 context.stroke(); | 441 context.stroke(); |
| 438 | 442 |
| 439 var barWidth = Math.max(2, ranges.end - ranges.mid); | 443 var barWidth = Math.max(2, ranges.end - ranges.mid); |
| 440 context.beginPath(); | 444 context.beginPath(); |
| 441 context.globalAlpha = 1; | 445 context.globalAlpha = 1; |
| 442 context.rect(ranges.mid, 0, barWidth, height - borderWidth); | 446 context.rect(ranges.mid, 0, barWidth, height - borderWidth); |
| 443 context.fill(); | 447 context.fill(); |
| 444 context.stroke(); | 448 context.stroke(); |
| 445 | 449 |
| 446 /** @type {?{left: string, right: string, tooltip: (string|undefined)}} */ | 450 /** @type {?{left: string, right: string, tooltip: (string|undefined)}} */ |
| 447 var labels = null; | 451 var labels = null; |
| 448 if (logEntry === this._hoveredLogEntry) { | 452 if (!logEntry.hasChildren && logEntry === this._hoveredLogEntry) { |
| 449 labels = this._calculator.computeBarGraphLabels(logEntry.request()); | 453 labels = this._calculator.computeBarGraphLabels(request); |
| 450 this._drawSimplifiedBarDetails( | 454 this._drawSimplifiedBarDetails( |
| 451 context, labels.left, labels.right, ranges.start, ranges.mid, ranges.m
id + barWidth + borderOffset); | 455 context, labels.left, labels.right, ranges.start, ranges.mid, ranges
.mid + barWidth + borderOffset); |
| 452 } | 456 } |
| 453 | 457 |
| 454 if (!this._calculator.startAtZero) { | 458 if (!this._calculator.startAtZero) { |
| 455 var queueingRange = Network.RequestTimingView.calculateRequestTimeRanges(l
ogEntry.request(), 0) | 459 var queueingRange = Network.RequestTimingView.calculateRequestTimeRanges
(request, 0) |
| 456 .find(data => data.name === Network.RequestTimeRan
geNames.Total); | 460 .find(data => data.name === Network.RequestTimeR
angeNames.Total); |
| 457 var leftLabelWidth = labels ? context.measureText(labels.left).width : 0; | 461 var leftLabelWidth = labels ? context.measureText(labels.left).width : 0
; |
| 458 var leftTextPlacedInBar = leftLabelWidth < ranges.mid - ranges.start; | 462 var leftTextPlacedInBar = leftLabelWidth < ranges.mid - ranges.start; |
| 459 const wiskerTextPadding = 13; | 463 const wiskerTextPadding = 13; |
| 460 var textOffset = (labels && !leftTextPlacedInBar) ? leftLabelWidth + wiske
rTextPadding : 0; | 464 var textOffset = (labels && !leftTextPlacedInBar) ? leftLabelWidth + wis
kerTextPadding : 0; |
| 461 var queueingStart = this._timeToPosition(queueingRange.start); | 465 var queueingStart = this._timeToPosition(queueingRange.start); |
| 462 if (ranges.start - textOffset > queueingStart) { | 466 if (ranges.start - textOffset > queueingStart) { |
| 463 context.beginPath(); | 467 context.beginPath(); |
| 464 context.globalAlpha = 1; | 468 context.globalAlpha = 1; |
| 465 context.strokeStyle = UI.themeSupport.patchColor('#a5a5a5', UI.ThemeSupp
ort.ColorUsage.Foreground); | 469 context.strokeStyle = UI.themeSupport.patchColor('#a5a5a5', UI.ThemeSu
pport.ColorUsage.Foreground); |
| 466 context.moveTo(queueingStart, Math.floor(height / 2)); | 470 context.moveTo(queueingStart, Math.floor(height / 2)); |
| 467 context.lineTo(ranges.start - textOffset, Math.floor(height / 2)); | 471 context.lineTo(ranges.start - textOffset, Math.floor(height / 2)); |
| 468 | 472 |
| 469 const wiskerHeight = height / 2; | 473 const wiskerHeight = height / 2; |
| 470 context.moveTo(queueingStart + borderOffset, wiskerHeight / 2); | 474 context.moveTo(queueingStart + borderOffset, wiskerHeight / 2); |
| 471 context.lineTo(queueingStart + borderOffset, height - wiskerHeight / 2 -
1); | 475 context.lineTo(queueingStart + borderOffset, height - wiskerHeight / 2
- 1); |
| 472 context.stroke(); | 476 context.stroke(); |
| 477 } |
| 473 } | 478 } |
| 474 } | 479 } |
| 475 | 480 |
| 476 context.restore(); | 481 context.restore(); |
| 477 } | 482 } |
| 478 | 483 |
| 479 /** | 484 /** |
| 480 * @param {!CanvasRenderingContext2D} context | 485 * @param {!CanvasRenderingContext2D} context |
| 481 * @param {string} leftText | 486 * @param {string} leftText |
| 482 * @param {string} rightText | 487 * @param {string} rightText |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 context.restore(); | 531 context.restore(); |
| 527 } | 532 } |
| 528 | 533 |
| 529 /** | 534 /** |
| 530 * @param {!CanvasRenderingContext2D} context | 535 * @param {!CanvasRenderingContext2D} context |
| 531 * @param {!Network.NetworkLogEntry} logEntry | 536 * @param {!Network.NetworkLogEntry} logEntry |
| 532 * @param {number} y | 537 * @param {number} y |
| 533 */ | 538 */ |
| 534 _drawTimingBars(context, logEntry, y) { | 539 _drawTimingBars(context, logEntry, y) { |
| 535 context.save(); | 540 context.save(); |
| 536 var ranges = Network.RequestTimingView.calculateRequestTimeRanges(logEntry.r
equest(), 0); | 541 for (var request of logEntry.requests()) { |
| 537 for (var range of ranges) { | 542 var ranges = Network.RequestTimingView.calculateRequestTimeRanges(request,
0); |
| 538 if (range.name === Network.RequestTimeRangeNames.Total || range.name === N
etwork.RequestTimeRangeNames.Sending || | 543 for (var range of ranges) { |
| 539 range.end - range.start === 0) | 544 if (range.name === Network.RequestTimeRangeNames.Total || |
| 540 continue; | 545 range.name === Network.RequestTimeRangeNames.Sending || range.end -
range.start === 0) |
| 541 context.beginPath(); | 546 continue; |
| 542 var lineWidth = 0; | 547 context.beginPath(); |
| 543 var color = this._colorForType(range.name); | 548 var lineWidth = 0; |
| 544 var borderColor = color; | 549 var color = this._colorForType(range.name); |
| 545 if (range.name === Network.RequestTimeRangeNames.Queueing) { | 550 var borderColor = color; |
| 546 borderColor = 'lightgrey'; | 551 if (range.name === Network.RequestTimeRangeNames.Queueing) { |
| 547 lineWidth = 2; | 552 borderColor = 'lightgrey'; |
| 553 lineWidth = 2; |
| 554 } |
| 555 if (range.name === Network.RequestTimeRangeNames.Receiving) |
| 556 lineWidth = 2; |
| 557 context.fillStyle = color; |
| 558 var height = this._getBarHeight(range.name); |
| 559 var middleBarY = y + Math.floor(this._rowHeight / 2 - height / 2) + line
Width / 2; |
| 560 var start = this._timeToPosition(range.start); |
| 561 var end = this._timeToPosition(range.end); |
| 562 context.rect(start, middleBarY, end - start, height - lineWidth); |
| 563 if (lineWidth) { |
| 564 context.lineWidth = lineWidth; |
| 565 context.strokeStyle = borderColor; |
| 566 context.stroke(); |
| 567 } |
| 568 context.fill(); |
| 548 } | 569 } |
| 549 if (range.name === Network.RequestTimeRangeNames.Receiving) | |
| 550 lineWidth = 2; | |
| 551 context.fillStyle = color; | |
| 552 var height = this._getBarHeight(range.name); | |
| 553 var middleBarY = y + Math.floor(this._rowHeight / 2 - height / 2) + lineWi
dth / 2; | |
| 554 var start = this._timeToPosition(range.start); | |
| 555 var end = this._timeToPosition(range.end); | |
| 556 context.rect(start, middleBarY, end - start, height - lineWidth); | |
| 557 if (lineWidth) { | |
| 558 context.lineWidth = lineWidth; | |
| 559 context.strokeStyle = borderColor; | |
| 560 context.stroke(); | |
| 561 } | |
| 562 context.fill(); | |
| 563 } | 570 } |
| 564 context.restore(); | 571 context.restore(); |
| 565 } | 572 } |
| 566 | 573 |
| 567 /** | 574 /** |
| 568 * @param {!CanvasRenderingContext2D} context | 575 * @param {!CanvasRenderingContext2D} context |
| 569 * @param {!Network.NetworkLogEntry} logEntry | 576 * @param {!Network.NetworkLogEntry} logEntry |
| 570 * @param {number} rowNumber | 577 * @param {number} rowNumber |
| 571 * @param {number} y | 578 * @param {number} y |
| 572 */ | 579 */ |
| 573 _decorateRow(context, logEntry, rowNumber, y) { | 580 _decorateRow(context, logEntry, rowNumber, y) { |
| 574 var isOddRow = rowNumber % 2 === 1; | 581 var isOddRow = rowNumber % 2 === 1; |
| 575 if (isOddRow && this._hoveredLogEntry !== logEntry && !logEntry.isNavigation
Request() && !this._initiatorGraph) | 582 if (isOddRow && this._hoveredLogEntry !== logEntry && !logEntry.hasNavigatio
nRequest() && !this._initiatorGraph) |
| 576 return; | 583 return; |
| 577 | 584 |
| 578 var color = getRowColor.call(this); | 585 var color = getRowColor.call(this); |
| 579 if (color === 'transparent') | 586 if (color === 'transparent') |
| 580 return; | 587 return; |
| 581 context.save(); | 588 context.save(); |
| 582 context.beginPath(); | 589 context.beginPath(); |
| 583 context.fillStyle = color; | 590 context.fillStyle = color; |
| 584 context.rect(0, y, this._offsetWidth, this._rowHeight); | 591 context.rect(0, y, this._offsetWidth, this._rowHeight); |
| 585 context.fill(); | 592 context.fill(); |
| 586 context.restore(); | 593 context.restore(); |
| 587 | 594 |
| 588 /** | 595 /** |
| 589 * @return {string} | 596 * @return {string} |
| 590 * @this {Network.NetworkWaterfallColumn} | 597 * @this {Network.NetworkWaterfallColumn} |
| 591 */ | 598 */ |
| 592 function getRowColor() { | 599 function getRowColor() { |
| 593 var request = logEntry.request(); | 600 // TODO(allada) Move this into NetworkLogEntry. |
| 594 if (this._hoveredLogEntry === logEntry) | 601 if (this._hoveredLogEntry === logEntry) |
| 595 return this._rowHoverColor; | 602 return this._rowHoverColor; |
| 596 if (this._initiatorGraph) { | 603 var request = logEntry.request(); |
| 604 if (request && this._initiatorGraph) { |
| 597 if (this._initiatorGraph.initiators.has(request)) | 605 if (this._initiatorGraph.initiators.has(request)) |
| 598 return this._parentInitiatorColor; | 606 return this._parentInitiatorColor; |
| 599 if (this._initiatorGraph.initiated.has(request)) | 607 if (this._initiatorGraph.initiated.has(request)) |
| 600 return this._initiatedColor; | 608 return this._initiatedColor; |
| 601 } | 609 } |
| 602 if (logEntry.isNavigationRequest()) | 610 if (logEntry.hasNavigationRequest()) |
| 603 return this._rowNavigationRequestColor; | 611 return this._rowNavigationRequestColor; |
| 604 if (rowNumber % 2 === 1) | 612 if (rowNumber % 2 === 1) |
| 605 return 'transparent'; | 613 return 'transparent'; |
| 606 return this._rowStripeColor; | 614 return this._rowStripeColor; |
| 607 } | 615 } |
| 608 } | 616 } |
| 609 }; | 617 }; |
| 610 | 618 |
| 611 Network.NetworkWaterfallColumn._colorsForResourceType = { | 619 Network.NetworkWaterfallColumn._colorsForResourceType = { |
| 612 document: 'hsl(215, 100%, 80%)', | 620 document: 'hsl(215, 100%, 80%)', |
| 613 font: 'hsl(8, 100%, 80%)', | 621 font: 'hsl(8, 100%, 80%)', |
| 614 media: 'hsl(90, 50%, 80%)', | 622 media: 'hsl(90, 50%, 80%)', |
| 615 image: 'hsl(90, 50%, 80%)', | 623 image: 'hsl(90, 50%, 80%)', |
| 616 script: 'hsl(31, 100%, 80%)', | 624 script: 'hsl(31, 100%, 80%)', |
| 617 stylesheet: 'hsl(272, 64%, 80%)', | 625 stylesheet: 'hsl(272, 64%, 80%)', |
| 618 texttrack: 'hsl(8, 100%, 80%)', | 626 texttrack: 'hsl(8, 100%, 80%)', |
| 619 websocket: 'hsl(0, 0%, 95%)', | 627 websocket: 'hsl(0, 0%, 95%)', |
| 620 xhr: 'hsl(53, 100%, 80%)', | 628 xhr: 'hsl(53, 100%, 80%)', |
| 621 other: 'hsl(0, 0%, 95%)' | 629 other: 'hsl(0, 0%, 95%)' |
| 622 }; | 630 }; |
| OLD | NEW |