| Index: third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
|
| index 45e5f03d8508ba84f8b459e3c96d04ad305a706f..72b947b5fb03901402e751f9e8ae4f04ceb5031b 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogView.js
|
| @@ -69,8 +69,10 @@ Network.NetworkLogView = class extends UI.VBox {
|
| this._columns = new Network.NetworkLogViewColumns(
|
| this, this._timeCalculator, this._durationCalculator, networkLogLargeRowsSetting);
|
|
|
| - /** @type {!Map.<string, !Network.NetworkDataGridNode>} */
|
| + /** @type {!Map.<string, !Network.NetworkRequestNode>} */
|
| this._nodesByRequestId = new Map();
|
| + /** @type {!Map.<string, !Network.NetworkGroupNode>} */
|
| + this._nodeGroups = new Map();
|
| /** @type {!Object.<string, boolean>} */
|
| this._staleRequestIds = {};
|
| /** @type {number} */
|
| @@ -84,6 +86,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| this._filters = [];
|
| /** @type {?Network.NetworkLogView.Filter} */
|
| this._timeFilter = null;
|
| + /** @type {?Network.NetworkNode} */
|
| this._hoveredNode = null;
|
|
|
| this._currentMatchedRequestNode = null;
|
| @@ -519,8 +522,8 @@ Network.NetworkLogView = class extends UI.VBox {
|
| * @param {!Event} event
|
| */
|
| _dataGridMouseMove(event) {
|
| - var node = /** @type {?Network.NetworkDataGridNode} */ (
|
| - this._dataGrid.dataGridNodeFromNode(/** @type {!Node} */ (event.target)));
|
| + var node =
|
| + /** @type {?Network.NetworkNode} */ (this._dataGrid.dataGridNodeFromNode(/** @type {!Node} */ (event.target)));
|
| var highlightInitiatorChain = event.shiftKey;
|
| this._setHoveredNode(node, highlightInitiatorChain);
|
| this._highlightInitiatorChain((highlightInitiatorChain && node) ? node.request() : null);
|
| @@ -532,7 +535,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @param {?Network.NetworkDataGridNode} node
|
| + * @param {?Network.NetworkNode} node
|
| * @param {boolean} highlightInitiatorChain
|
| */
|
| setHoveredNode(node, highlightInitiatorChain) {
|
| @@ -541,7 +544,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @param {?Network.NetworkDataGridNode} node
|
| + * @param {?Network.NetworkNode} node
|
| * @param {boolean=} highlightInitiatorChain
|
| */
|
| _setHoveredNode(node, highlightInitiatorChain) {
|
| @@ -780,7 +783,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @return {!Array<!Network.NetworkDataGridNode>}
|
| + * @return {!Array<!Network.NetworkNode>}
|
| */
|
| flatNodesList() {
|
| return this._dataGrid.rootNode().flatChildren();
|
| @@ -801,11 +804,9 @@ Network.NetworkLogView = class extends UI.VBox {
|
| this._timeCalculator.updateBoundariesForEventTime(this._mainRequestDOMContentLoadedTime);
|
| this._durationCalculator.updateBoundariesForEventTime(this._mainRequestDOMContentLoadedTime);
|
|
|
| - var dataGrid = this._dataGrid;
|
| - var rootNode = dataGrid.rootNode();
|
| - /** @type {!Array<!Network.NetworkDataGridNode> } */
|
| + /** @type {!Array<!Network.NetworkRequestNode> } */
|
| var nodesToInsert = [];
|
| - /** @type {!Array<!Network.NetworkDataGridNode> } */
|
| + /** @type {!Array<!Network.NetworkRequestNode> } */
|
| var nodesToRefresh = [];
|
| for (var requestId in this._staleRequestIds) {
|
| var node = this._nodesByRequestId.get(requestId);
|
| @@ -816,7 +817,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| this._setHoveredNode(null);
|
| if (node[Network.NetworkLogView._isFilteredOutSymbol] !== isFilteredOut) {
|
| if (!node[Network.NetworkLogView._isFilteredOutSymbol])
|
| - rootNode.removeChild(node);
|
| + node.parent.removeChild(node);
|
|
|
| node[Network.NetworkLogView._isFilteredOutSymbol] = isFilteredOut;
|
|
|
| @@ -833,8 +834,9 @@ Network.NetworkLogView = class extends UI.VBox {
|
| for (var i = 0; i < nodesToInsert.length; ++i) {
|
| var node = nodesToInsert[i];
|
| var request = node.request();
|
| - dataGrid.insertChild(node);
|
| node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = this._matchRequest(request);
|
| + var parent = this._parentNodeForInsert(node);
|
| + parent.appendChild(node);
|
| }
|
|
|
| for (var node of nodesToRefresh)
|
| @@ -849,6 +851,26 @@ Network.NetworkLogView = class extends UI.VBox {
|
| this._columns.dataChanged();
|
| }
|
|
|
| + /**
|
| + * @param {!Network.NetworkRequestNode} node
|
| + * @return {!Network.NetworkNode}
|
| + */
|
| + _parentNodeForInsert(node) {
|
| + if (!Runtime.experiments.isEnabled('networkGroupingRequests'))
|
| + return /** @type {!Network.NetworkNode} */ (this._dataGrid.rootNode());
|
| +
|
| + var request = node.request();
|
| + // TODO(allada) Make this dynamic and allow multiple grouping types.
|
| + var groupKey = request.domain;
|
| + var group = this._nodeGroups.get(groupKey);
|
| + if (group)
|
| + return group;
|
| + group = new Network.NetworkGroupNode(this, groupKey);
|
| + this._nodeGroups.set(groupKey, group);
|
| + this._dataGrid.rootNode().appendChild(group);
|
| + return group;
|
| + }
|
| +
|
| reset() {
|
| this._requestWithHighlightedInitiators = null;
|
| this.dispatchEventToListeners(Network.NetworkLogView.Events.RequestSelected, null);
|
| @@ -867,6 +889,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| for (var i = 0; i < nodes.length; ++i)
|
| nodes[i].dispose();
|
|
|
| + this._nodeGroups.clear();
|
| this._nodesByRequestId.clear();
|
| this._staleRequestIds = {};
|
| this._resetSuggestionBuilder();
|
| @@ -904,7 +927,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| * @param {!SDK.NetworkRequest} request
|
| */
|
| _appendRequest(request) {
|
| - var node = new Network.NetworkDataGridNode(this, request);
|
| + var node = new Network.NetworkRequestNode(this, request);
|
| node[Network.NetworkLogView._isFilteredOutSymbol] = true;
|
| node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = false;
|
|
|
| @@ -1234,7 +1257,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| _highlightNthMatchedRequestForSearch(n, reveal) {
|
| this._removeAllHighlights();
|
|
|
| - /** @type {!Array.<!Network.NetworkDataGridNode>} */
|
| + /** @type {!Array.<!Network.NetworkRequestNode>} */
|
| var nodes = this._dataGrid.rootNode().children;
|
| var matchCount = 0;
|
| var node = null;
|
| @@ -1275,7 +1298,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| this._clearSearchMatchedList();
|
| this._searchRegex = createPlainTextSearchRegex(query, 'i');
|
|
|
| - /** @type {!Array.<!Network.NetworkDataGridNode>} */
|
| + /** @type {!Array.<!Network.NetworkRequestNode>} */
|
| var nodes = this._dataGrid.rootNode().children;
|
| for (var i = 0; i < nodes.length; ++i)
|
| nodes[i][Network.NetworkLogView._isMatchingSearchQuerySymbol] = this._matchRequest(nodes[i].request());
|
| @@ -1302,11 +1325,11 @@ Network.NetworkLogView = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @param {?Network.NetworkDataGridNode} node
|
| + * @param {?Network.NetworkRequestNode} node
|
| * @return {number}
|
| */
|
| _updateMatchCountAndFindMatchIndex(node) {
|
| - /** @type {!Array.<!Network.NetworkDataGridNode>} */
|
| + /** @type {!Array.<!Network.NetworkRequestNode>} */
|
| var nodes = this._dataGrid.rootNode().children;
|
| var matchCount = 0;
|
| var matchIndex = 0;
|
| @@ -1333,7 +1356,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!Network.NetworkRequestNode} node
|
| * @return {boolean}
|
| */
|
| _applyFilter(node) {
|
| @@ -1536,7 +1559,7 @@ Network.NetworkLogView = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| - * @param {!Network.NetworkDataGridNode} node
|
| + * @param {!Network.NetworkRequestNode} node
|
| */
|
| _highlightNode(node) {
|
| UI.runCSSAnimationOnce(node.element(), 'highlighted-row');
|
|
|