| 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..57690c4b8faf3d657b5b53792b813e71163e4c17 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
|
| @@ -31,7 +31,33 @@
|
| /**
|
| * @unrestricted
|
| */
|
| -Network.NetworkDataGridNode = class extends UI.SortableDataGridNode {
|
| +Network.NetworkNode = class extends UI.SortableDataGridNode {
|
| + /**
|
| + * @return {?SDK.NetworkRequest}
|
| + */
|
| + request() {
|
| + return null;
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + isNavigationRequest() {
|
| + return false;
|
| + }
|
| +
|
| + /**
|
| + * @return {?Network.NetworkRequestNode}
|
| + */
|
| + asRequestNode() {
|
| + return null;
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * @unrestricted
|
| + */
|
| +Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| /**
|
| * @param {!Network.NetworkLogView} parentView
|
| * @param {!SDK.NetworkRequest} request
|
| @@ -45,72 +71,98 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode {
|
| }
|
|
|
| /**
|
| - * @param {!Network.NetworkDataGridNode} a
|
| - * @param {!Network.NetworkDataGridNode} b
|
| + * @param {!Network.NetworkNode} a
|
| + * @param {!Network.NetworkNode} b
|
| * @return {number}
|
| */
|
| static NameComparator(a, b) {
|
| - 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.asRequestNode().displayType();
|
| + var bSimpleType = b.asRequestNode().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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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,110 +189,145 @@ 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} b
|
| * @return {number}
|
| */
|
| static InitialPriorityComparator(a, b) {
|
| - var priorityMap = Network.NetworkDataGridNode._symbolicToNumericPriority;
|
| + // 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.NetworkRequestNode._symbolicToNumericPriority;
|
| if (!priorityMap) {
|
| - Network.NetworkDataGridNode._symbolicToNumericPriority = new Map();
|
| - priorityMap = Network.NetworkDataGridNode._symbolicToNumericPriority;
|
| + Network.NetworkRequestNode._symbolicToNumericPriority = new Map();
|
| + priorityMap = Network.NetworkRequestNode._symbolicToNumericPriority;
|
| priorityMap.set(Protocol.Network.ResourcePriority.VeryLow, 1);
|
| priorityMap.set(Protocol.Network.ResourcePriority.Low, 2);
|
| priorityMap.set(Protocol.Network.ResourcePriority.Medium, 3);
|
| 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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.NetworkNode} a
|
| + * @param {!Network.NetworkNode} 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 +346,7 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode {
|
| }
|
|
|
| /**
|
| + * @override
|
| * @return {!SDK.NetworkRequest}
|
| */
|
| request() {
|
| @@ -266,6 +354,15 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode {
|
| }
|
|
|
| /**
|
| + * @override
|
| + * @return {!Network.NetworkRequestNode}
|
| + */
|
| + asRequestNode() {
|
| + return this;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| * @return {boolean}
|
| */
|
| isNavigationRequest() {
|
| @@ -602,3 +699,85 @@ Network.NetworkDataGridNode = class extends UI.SortableDataGridNode {
|
| cellElement.appendChild(subtitleElement);
|
| }
|
| };
|
| +
|
| +/**
|
| + * @unrestricted
|
| + */
|
| +Network.NetworkGroupNode = class extends Network.NetworkNode {
|
| + /**
|
| + * @param {!Network.NetworkLogView} parentView
|
| + * @param {string} name
|
| + */
|
| + constructor(parentView, name) {
|
| + super({});
|
| + this._parentView = parentView;
|
| + this._name = name;
|
| + }
|
| +
|
| + /**
|
| + * @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}
|
| + */
|
| + asRequestNode() {
|
| + return null;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {boolean=} supressSelectedEvent
|
| + */
|
| + select(supressSelectedEvent) {
|
| + if (this.expanded) {
|
| + this.collapse();
|
| + return;
|
| + }
|
| + this.expand();
|
| + }
|
| +};
|
|
|