Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js |
| index e62d3fb47c9a37582dc2be94b2989415f41c7d3a..43beba5762caae5f5ee91215d10b755b6c5fc46c 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js |
| @@ -29,6 +29,7 @@ |
| */ |
| /** |
| + * @implements {Network.NetworkDataGridNodeInterface} |
| * @unrestricted |
| */ |
| Network.NetworkDataGridNode = class extends UI.SortableDataGridNode { |
| @@ -45,72 +46,98 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode { |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static NameComparator(a, b) { |
|
dgozman
2016/12/15 03:04:41
We should move these to interface in next patch.
|
| - var aFileName = a._request.name(); |
| - var bFileName = b._request.name(); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + |
| + var aFileName = aRequest.name(); |
| + var bFileName = bRequest.name(); |
| if (aFileName > bFileName) |
| return 1; |
| if (bFileName > aFileName) |
| return -1; |
| - return a._request.indentityCompare(b._request); |
| + return aRequest.indentityCompare(bRequest); |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static RemoteAddressComparator(a, b) { |
| - var aRemoteAddress = a._request.remoteAddress(); |
| - var bRemoteAddress = b._request.remoteAddress(); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aRemoteAddress = aRequest.remoteAddress(); |
| + var bRemoteAddress = bRequest.remoteAddress(); |
| if (aRemoteAddress > bRemoteAddress) |
| return 1; |
| if (bRemoteAddress > aRemoteAddress) |
| return -1; |
| - return a._request.indentityCompare(b._request); |
| + return aRequest.indentityCompare(bRequest); |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static SizeComparator(a, b) { |
| - if (b._request.cached() && !a._request.cached()) |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + if (bRequest.cached() && !aRequest.cached()) |
| return 1; |
| - if (a._request.cached() && !b._request.cached()) |
| + if (aRequest.cached() && !bRequest.cached()) |
| return -1; |
| - return (a._request.transferSize - b._request.transferSize) || a._request.indentityCompare(b._request); |
| + return (aRequest.transferSize - bRequest.transferSize) || aRequest.indentityCompare(bRequest); |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static TypeComparator(a, b) { |
| - var aSimpleType = a.displayType(); |
| - var bSimpleType = b.displayType(); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aSimpleType = a.asDataNode().displayType(); |
| + var bSimpleType = b.asDataNode().displayType(); |
| if (aSimpleType > bSimpleType) |
| return 1; |
| if (bSimpleType > aSimpleType) |
| return -1; |
| - return a._request.indentityCompare(b._request); |
| + return aRequest.indentityCompare(bRequest); |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static InitiatorComparator(a, b) { |
| - var aInitiator = a._request.initiatorInfo(); |
| - var bInitiator = b._request.initiatorInfo(); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aInitiator = aRequest.initiatorInfo(); |
| + var bInitiator = bRequest.initiatorInfo(); |
| if (aInitiator.type < bInitiator.type) |
| return -1; |
| @@ -137,37 +164,52 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode { |
| if (aInitiator.columnNumber > bInitiator.columnNumber) |
| return 1; |
| - return a._request.indentityCompare(b._request); |
| + return aRequest.indentityCompare(bRequest); |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static RequestCookiesCountComparator(a, b) { |
| - var aScore = a._request.requestCookies ? a._request.requestCookies.length : 0; |
| - var bScore = b._request.requestCookies ? b._request.requestCookies.length : 0; |
| - return (aScore - bScore) || a._request.indentityCompare(b._request); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aScore = aRequest.requestCookies ? aRequest.requestCookies.length : 0; |
| + var bScore = bRequest.requestCookies ? bRequest.requestCookies.length : 0; |
| + return (aScore - bScore) || aRequest.indentityCompare(bRequest); |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static ResponseCookiesCountComparator(a, b) { |
| - var aScore = a._request.responseCookies ? a._request.responseCookies.length : 0; |
| - var bScore = b._request.responseCookies ? b._request.responseCookies.length : 0; |
| - return (aScore - bScore) || a._request.indentityCompare(b._request); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aScore = aRequest.responseCookies ? aRequest.responseCookies.length : 0; |
| + var bScore = bRequest.responseCookies ? bRequest.responseCookies.length : 0; |
| + return (aScore - bScore) || aRequest.indentityCompare(bRequest); |
| } |
| /** |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static InitialPriorityComparator(a, b) { |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| var priorityMap = Network.NetworkDataGridNode._symbolicToNumericPriority; |
| if (!priorityMap) { |
| Network.NetworkDataGridNode._symbolicToNumericPriority = new Map(); |
| @@ -178,69 +220,89 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode { |
| priorityMap.set(Protocol.Network.ResourcePriority.High, 4); |
| priorityMap.set(Protocol.Network.ResourcePriority.VeryHigh, 5); |
| } |
| - var aScore = priorityMap.get(a._request.initialPriority()) || 0; |
| - var bScore = priorityMap.get(b._request.initialPriority()) || 0; |
| + var aScore = priorityMap.get(aRequest.initialPriority()) || 0; |
| + var bScore = priorityMap.get(bRequest.initialPriority()) || 0; |
| - return aScore - bScore || a._request.indentityCompare(b._request); |
| + return aScore - bScore || aRequest.indentityCompare(bRequest); |
| } |
| /** |
| * @param {string} propertyName |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static RequestPropertyComparator(propertyName, a, b) { |
| - var aValue = a._request[propertyName]; |
| - var bValue = b._request[propertyName]; |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aValue = aRequest[propertyName]; |
| + var bValue = bRequest[propertyName]; |
| if (aValue === bValue) |
| - return a._request.indentityCompare(b._request); |
| + return aRequest.indentityCompare(bRequest); |
| return aValue > bValue ? 1 : -1; |
| } |
| /** |
| * @param {string} propertyName |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static ResponseHeaderStringComparator(propertyName, a, b) { |
| - var aValue = String(a._request.responseHeaderValue(propertyName) || ''); |
| - var bValue = String(b._request.responseHeaderValue(propertyName) || ''); |
| - return aValue.localeCompare(bValue) || a._request.indentityCompare(b._request); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aValue = String(aRequest.responseHeaderValue(propertyName) || ''); |
| + var bValue = String(bRequest.responseHeaderValue(propertyName) || ''); |
| + return aValue.localeCompare(bValue) || aRequest.indentityCompare(bRequest); |
| } |
| /** |
| * @param {string} propertyName |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static ResponseHeaderNumberComparator(propertyName, a, b) { |
| - var aValue = (a._request.responseHeaderValue(propertyName) !== undefined) ? |
| - parseFloat(a._request.responseHeaderValue(propertyName)) : |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aValue = (aRequest.responseHeaderValue(propertyName) !== undefined) ? |
| + parseFloat(aRequest.responseHeaderValue(propertyName)) : |
| -Infinity; |
| - var bValue = (b._request.responseHeaderValue(propertyName) !== undefined) ? |
| - parseFloat(b._request.responseHeaderValue(propertyName)) : |
| + var bValue = (bRequest.responseHeaderValue(propertyName) !== undefined) ? |
| + parseFloat(bRequest.responseHeaderValue(propertyName)) : |
| -Infinity; |
| if (aValue === bValue) |
| - return a._request.indentityCompare(b._request); |
| + return aRequest.indentityCompare(bRequest); |
| return aValue > bValue ? 1 : -1; |
| } |
| /** |
| * @param {string} propertyName |
| - * @param {!Network.NetworkDataGridNode} a |
| - * @param {!Network.NetworkDataGridNode} b |
| + * @param {!Network.NetworkDataGridNodeInterface} a |
| + * @param {!Network.NetworkDataGridNodeInterface} b |
| * @return {number} |
| */ |
| static ResponseHeaderDateComparator(propertyName, a, b) { |
| - var aHeader = a._request.responseHeaderValue(propertyName); |
| - var bHeader = b._request.responseHeaderValue(propertyName); |
| + // TODO(allada) Handle this properly for group nodes. |
| + var aRequest = a.request(); |
| + var bRequest = b.request(); |
| + if (!aRequest || !bRequest) |
| + return !aRequest ? -1 : 1; |
| + var aHeader = aRequest.responseHeaderValue(propertyName); |
| + var bHeader = bRequest.responseHeaderValue(propertyName); |
| var aValue = aHeader ? new Date(aHeader).getTime() : -Infinity; |
| var bValue = bHeader ? new Date(bHeader).getTime() : -Infinity; |
| if (aValue === bValue) |
| - return a._request.indentityCompare(b._request); |
| + return aRequest.indentityCompare(bRequest); |
| return aValue > bValue ? 1 : -1; |
| } |
| @@ -259,6 +321,7 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode { |
| } |
| /** |
| + * @override |
| * @return {!SDK.NetworkRequest} |
| */ |
| request() { |
| @@ -266,6 +329,15 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode { |
| } |
| /** |
| + * @override |
| + * @return {!Network.NetworkDataGridNode} |
| + */ |
| + asDataNode() { |
| + return this; |
| + } |
| + |
| + /** |
| + * @override |
| * @return {boolean} |
| */ |
| isNavigationRequest() { |
| @@ -602,3 +674,119 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode { |
| cellElement.appendChild(subtitleElement); |
| } |
| }; |
| + |
| +/** |
| + * @implements {Network.NetworkDataGridNodeInterface} |
| + * @unrestricted |
| + */ |
| +Network.NetworkDataGridParentNode = class extends UI.SortableDataGridNode { |
| + /** |
| + * @param {!Network.NetworkLogView} parentView |
| + * @param {string} name |
| + */ |
| + constructor(parentView, name) { |
| + super({}); |
| + this._parentView = parentView; |
| + this._name = name; |
| + } |
| + |
| + /** |
| + * @param {string} propertyName |
| + * @return {string} |
| + */ |
| + _requestProperty(propertyName) { |
|
dgozman
2016/12/15 03:04:41
Unused.
allada
2016/12/19 22:44:28
Done.
|
| + if (this.hasChildren) |
| + return this.children[0]._request[propertyName]; |
| + return ''; |
| + } |
| + |
| + /** |
| + * @override |
| + * @return {number} |
| + */ |
| + nodeSelfHeight() { |
| + return this._parentView.rowHeight(); |
| + } |
| + |
| + /** |
| + * @param {!Element} element |
| + * @param {string} text |
| + */ |
| + _setTextAndTitle(element, text) { |
| + element.textContent = text; |
| + element.title = text; |
| + } |
| + |
| + /** |
| + * @override |
| + * @param {string} columnIdentifier |
| + * @return {!Element} |
| + */ |
| + createCell(columnIdentifier) { |
| + var cell = this.createTD(columnIdentifier); |
| + if (columnIdentifier === 'name') { |
| + cell.classList.add('disclosure'); |
| + this._setTextAndTitle(cell, this._name); |
| + } |
| + return cell; |
| + } |
| + |
| + /** |
| + * @override |
| + * @return {null} |
| + */ |
| + request() { |
| + return null; |
| + } |
| + |
| + /** |
| + * @override |
| + * @return {boolean} |
| + */ |
| + isNavigationRequest() { |
| + return false; |
| + } |
| + |
| + /** |
| + * @override |
| + * @return {null} |
| + */ |
| + asDataNode() { |
| + return null; |
| + } |
| + |
| + /** |
| + * @override |
| + * @param {boolean=} supressSelectedEvent |
| + */ |
| + select(supressSelectedEvent) { |
| + if (this.expanded) { |
| + this.collapse(); |
| + return; |
| + } |
| + this.expand(); |
| + } |
| +}; |
| + |
| +/** |
| + * @interface |
| + */ |
| +Network.NetworkDataGridNodeInterface = class { |
|
dgozman
2016/12/15 03:04:41
Let's follow up with NetworkNode, NetworkRequestNo
allada
2016/12/19 22:44:28
Done.
|
| + /** |
| + * @return {?SDK.NetworkRequest} |
| + */ |
| + request() { |
| + } |
| + |
| + /** |
| + * @return {boolean} |
| + */ |
| + isNavigationRequest() { |
| + } |
| + |
| + /** |
| + * @return {?Network.NetworkDataGridNode} |
| + */ |
| + asDataNode() { |
| + } |
| +}; |