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'); |