| Index: third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
|
| index fa0e5087dbfb94984fe92cd724584dcfdb16cd2b..bc1fa4a36696d3aa9a9f36726688271786d03e9a 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
|
| @@ -34,10 +34,10 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
|
| this._popoverHelper.setTimeout(300, 300);
|
|
|
| - /** @type {!Array<!Network.NetworkDataGridNode>} */
|
| + /** @type {!Array<!Network.NetworkNode>} */
|
| this._nodes = [];
|
|
|
| - /** @type {?Network.NetworkDataGridNode} */
|
| + /** @type {?Network.NetworkNode} */
|
| this._hoveredNode = null;
|
| /** @type {?SDK.NetworkRequest.InitiatorGraph} */
|
| this._initiatorGraph = null;
|
| @@ -83,12 +83,15 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| return;
|
| var useTimingBars = !Common.moduleSetting('networkColorCodeResourceTypes').get() && !this._calculator.startAtZero;
|
| if (useTimingBars) {
|
| - var range = Network.RequestTimingView.calculateRequestTimeRanges(this._hoveredNode.request(), 0)
|
| + var request = this._hoveredNode.request();
|
| + if (!request)
|
| + return;
|
| + var range = Network.RequestTimingView.calculateRequestTimeRanges(request, 0)
|
| .find(data => data.name === Network.RequestTimeRangeNames.Total);
|
| var start = this._timeToPosition(range.start);
|
| var end = this._timeToPosition(range.end);
|
| } else {
|
| - var range = this._getSimplifiedBarRange(this._hoveredNode, 0);
|
| + var range = this._getSimplifiedBarRange(this.request(), 0);
|
| var start = range.start;
|
| var end = range.end;
|
| }
|
| @@ -124,18 +127,20 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| _showPopover(anchor, popover) {
|
| if (!this._hoveredNode)
|
| return;
|
| - var content =
|
| - Network.RequestTimingView.createTimingTable(this._hoveredNode.request(), this._calculator.minimumBoundary());
|
| + var request = this._hoveredNode.request();
|
| + if (!request)
|
| + return;
|
| + var content = Network.RequestTimingView.createTimingTable(request, this._calculator.minimumBoundary());
|
| popover.showForAnchor(content, anchor);
|
| }
|
|
|
| /**
|
| - * @param {?Network.NetworkDataGridNode} node
|
| + * @param {?Network.NetworkNode} node
|
| * @param {boolean} highlightInitiatorChain
|
| */
|
| setHoveredNode(node, highlightInitiatorChain) {
|
| this._hoveredNode = node;
|
| - this._initiatorGraph = (highlightInitiatorChain && node) ? node.request().initiatorGraph() : null;
|
| + this._initiatorGraph = (highlightInitiatorChain && node && node.request()) ? node.request().initiatorGraph() : null;
|
| this.update();
|
| }
|
|
|
| @@ -171,7 +176,7 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| /**
|
| * @param {number} x
|
| * @param {number} y
|
| - * @return {?Network.NetworkDataGridNode}
|
| + * @return {?Network.NetworkNode}
|
| */
|
| getNodeFromPoint(x, y) {
|
| return this._nodes[Math.floor((this._scrollTop + y - this._headerHeight) / this._rowHeight)];
|
| @@ -186,7 +191,7 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| /**
|
| * @param {number=} scrollTop
|
| * @param {!Map<string, !Array<number>>=} eventDividers
|
| - * @param {!Array<!Network.NetworkDataGridNode>=} nodes
|
| + * @param {!Array<!Network.NetworkNode>=} nodes
|
| */
|
| update(scrollTop, eventDividers, nodes) {
|
| if (scrollTop !== undefined)
|
| @@ -353,11 +358,11 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!SDK.NetworkRequest} request
|
| * @return {string}
|
| */
|
| - _borderColorForResourceType(node) {
|
| - var resourceType = node.request().resourceType();
|
| + _borderColorForResourceType(request) {
|
| + var resourceType = request.resourceType();
|
| if (this._borderColorsForResourceTypeCache.has(resourceType))
|
| return this._borderColorsForResourceTypeCache.get(resourceType);
|
| var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourceType;
|
| @@ -373,11 +378,10 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
|
|
| /**
|
| * @param {!CanvasRenderingContext2D} context
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!SDK.NetworkRequest} request
|
| * @return {string|!CanvasGradient}
|
| */
|
| - _colorForResourceType(context, node) {
|
| - var request = node.request();
|
| + _colorForResourceType(context, request) {
|
| var colorsForResourceType = Network.NetworkWaterfallColumn._colorsForResourceType;
|
| var resourceType = request.resourceType();
|
| var color = colorsForResourceType[resourceType] || colorsForResourceType.Other;
|
| @@ -398,13 +402,13 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!SDK.NetworkRequest} request
|
| * @param {number} borderOffset
|
| * @return {!{start: number, mid: number, end: number}}
|
| */
|
| - _getSimplifiedBarRange(node, borderOffset) {
|
| + _getSimplifiedBarRange(request, borderOffset) {
|
| var drawWidth = this._offsetWidth - this._leftPadding;
|
| - var percentages = this._calculator.computeBarGraphPercentages(node.request());
|
| + var percentages = this._calculator.computeBarGraphPercentages(request);
|
| return {
|
| start: this._leftPadding + Math.floor((percentages.start / 100) * drawWidth) + borderOffset,
|
| mid: this._leftPadding + Math.floor((percentages.middle / 100) * drawWidth) + borderOffset,
|
| @@ -414,21 +418,25 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
|
|
| /**
|
| * @param {!CanvasRenderingContext2D} context
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!Network.NetworkNode} node
|
| * @param {number} y
|
| */
|
| _drawSimplifiedBars(context, node, y) {
|
| + // TODO(allada) This should draw bars for groupped requests.
|
| + var request = node.request();
|
| + if (!request)
|
| + return;
|
| const borderWidth = 1;
|
| var borderOffset = borderWidth % 2 === 0 ? 0 : 0.5;
|
|
|
| context.save();
|
| - var ranges = this._getSimplifiedBarRange(node, borderOffset);
|
| + var ranges = this._getSimplifiedBarRange(request, borderOffset);
|
| var height = this._getBarHeight();
|
| y += Math.floor(this._rowHeight / 2 - height / 2 + borderWidth) - borderWidth / 2;
|
|
|
| context.translate(0, y);
|
| - context.fillStyle = this._colorForResourceType(context, node);
|
| - context.strokeStyle = this._borderColorForResourceType(node);
|
| + context.fillStyle = this._colorForResourceType(context, request);
|
| + context.strokeStyle = this._borderColorForResourceType(request);
|
| context.lineWidth = borderWidth;
|
|
|
| context.beginPath();
|
| @@ -447,13 +455,13 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| /** @type {?{left: string, right: string, tooltip: (string|undefined)}} */
|
| var labels = null;
|
| if (node === this._hoveredNode) {
|
| - labels = this._calculator.computeBarGraphLabels(node.request());
|
| + labels = this._calculator.computeBarGraphLabels(request);
|
| this._drawSimplifiedBarDetails(
|
| context, labels.left, labels.right, ranges.start, ranges.mid, ranges.mid + barWidth + borderOffset);
|
| }
|
|
|
| if (!this._calculator.startAtZero) {
|
| - var queueingRange = Network.RequestTimingView.calculateRequestTimeRanges(node.request(), 0)
|
| + var queueingRange = Network.RequestTimingView.calculateRequestTimeRanges(request, 0)
|
| .find(data => data.name === Network.RequestTimeRangeNames.Total);
|
| var leftLabelWidth = labels ? context.measureText(labels.left).width : 0;
|
| var leftTextPlacedInBar = leftLabelWidth < ranges.mid - ranges.start;
|
| @@ -529,12 +537,16 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
|
|
| /**
|
| * @param {!CanvasRenderingContext2D} context
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!Network.NetworkNode} node
|
| * @param {number} y
|
| */
|
| _drawTimingBars(context, node, y) {
|
| + // TODO(allada) This should draw bars for groupped requests.
|
| + var request = node.request();
|
| + if (!request)
|
| + return;
|
| context.save();
|
| - var ranges = Network.RequestTimingView.calculateRequestTimeRanges(node.request(), 0);
|
| + var ranges = Network.RequestTimingView.calculateRequestTimeRanges(request, 0);
|
| for (var range of ranges) {
|
| if (range.name === Network.RequestTimeRangeNames.Total || range.name === Network.RequestTimeRangeNames.Sending ||
|
| range.end - range.start === 0)
|
| @@ -567,7 +579,7 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
|
|
| /**
|
| * @param {!CanvasRenderingContext2D} context
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!Network.NetworkNode} node
|
| * @param {number} rowNumber
|
| * @param {number} y
|
| */
|
| @@ -594,7 +606,7 @@ Network.NetworkWaterfallColumn = class extends UI.VBox {
|
| var request = node.request();
|
| if (this._hoveredNode === node)
|
| return this._rowHoverColor;
|
| - if (this._initiatorGraph) {
|
| + if (request && this._initiatorGraph) {
|
| if (this._initiatorGraph.initiators.has(request))
|
| return this._parentInitiatorColor;
|
| if (this._initiatorGraph.initiated.has(request))
|
|
|