Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Unified Diff: third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js

Issue 2648853002: [Devtools] Handle network sorting of grouped nodes properly (Closed)
Patch Set: Merge branch 'master' into GROUP_SORTING Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/data_grid/ViewportDataGrid.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 6e64b55e3d658ddd479ec83835185e7321bb1cda..e5444aaf1960c75d756b97dc03209fee80c8cbe2 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
@@ -40,6 +40,8 @@ Network.NetworkNode = class extends DataGrid.SortableDataGridNode {
this._parentView = parentView;
this._isHovered = false;
this._showingInitiatorChain = false;
+ /** @type {?SDK.NetworkRequest} */
+ this._requestOrFirstKnownChildRequest = null;
}
/**
@@ -130,6 +132,45 @@ Network.NetworkNode = class extends DataGrid.SortableDataGridNode {
asRequestNode() {
return null;
}
+
+ /**
+ * @return {?Network.NetworkGroupNode}
+ */
+ asGroupNode() {
+ return null;
+ }
+
+ /**
+ * @override
+ */
+ clearFlatNodes() {
+ super.clearFlatNodes();
+ this._requestOrFirstKnownChildRequest = null;
+ }
+
+ /**
+ * @protected
+ * @return {?SDK.NetworkRequest}
+ */
+ requestOrFirstKnownChildRequest() {
+ if (this._requestOrFirstKnownChildRequest)
+ return this._requestOrFirstKnownChildRequest;
+ var request = this.request();
+ if (request || !this.hasChildren()) {
+ this._requestOrFirstKnownChildRequest = request;
+ return this._requestOrFirstKnownChildRequest;
+ }
+
+ var firstChildRequest = null;
+ var flatChildren = this.flatChildren();
+ for (var i = 0; i < flatChildren.length; i++) {
+ request = flatChildren[i].request();
+ if (!firstChildRequest || (request && request.issueTime() < firstChildRequest.issueTime()))
+ firstChildRequest = request;
+ }
+ this._requestOrFirstKnownChildRequest = firstChildRequest;
+ return this._requestOrFirstKnownChildRequest;
+ }
};
/**
@@ -155,19 +196,30 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
* @return {number}
*/
static NameComparator(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 aFileName = aRequest.name();
- var bFileName = bRequest.name();
- if (aFileName > bFileName)
- return 1;
- if (bFileName > aFileName)
- return -1;
- return aRequest.indentityCompare(bRequest);
+ var aGroupNode = a.asGroupNode();
+ var bGroupNode = b.asGroupNode();
+
+ if ((!aGroupNode && bGroupNode) || (aGroupNode && !bGroupNode))
+ return aGroupNode ? 1 : -1;
+
+ var aName;
+ var bName;
+ if (aGroupNode && bGroupNode) {
+ aName = aGroupNode.displayName();
+ bName = bGroupNode.displayName();
+ if (aName === bName)
+ return Network.NetworkRequestNode.RequestPropertyComparator('startTime', a, b);
+ } else {
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
+ if (!aRequest || !bRequest)
+ return aRequest ? 1 : -1;
+ aName = aRequest.name();
+ bName = bRequest.name();
+ if (aName === bName)
+ return aRequest.indentityCompare(bRequest);
+ }
+ return aName < bName ? -1 : 1;
}
/**
@@ -177,8 +229,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static RemoteAddressComparator(a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aRemoteAddress = aRequest.remoteAddress();
@@ -197,8 +249,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static SizeComparator(a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
if (bRequest.cached() && !aRequest.cached())
@@ -215,8 +267,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static TypeComparator(a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aSimpleType = a.asRequestNode().displayType();
@@ -236,8 +288,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static InitiatorComparator(a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aInitiator = SDK.NetworkLog.initiatorInfoForRequest(aRequest);
@@ -278,8 +330,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static RequestCookiesCountComparator(a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aScore = aRequest.requestCookies ? aRequest.requestCookies.length : 0;
@@ -295,8 +347,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static ResponseCookiesCountComparator(a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aScore = aRequest.responseCookies ? aRequest.responseCookies.length : 0;
@@ -311,8 +363,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static InitialPriorityComparator(a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var priorityMap = Components.prioritySymbolToNumericMap();
@@ -333,9 +385,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
* @return {number}
*/
static RequestPropertyComparator(propertyName, a, b) {
- // TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aValue = aRequest[propertyName];
@@ -353,8 +404,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static ResponseHeaderStringComparator(propertyName, a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aValue = String(aRequest.responseHeaderValue(propertyName) || '');
@@ -370,8 +421,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static ResponseHeaderNumberComparator(propertyName, a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aValue = (aRequest.responseHeaderValue(propertyName) !== undefined) ?
@@ -393,8 +444,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
*/
static ResponseHeaderDateComparator(propertyName, a, b) {
// TODO(allada) Handle this properly for group nodes.
- var aRequest = a.request();
- var bRequest = b.request();
+ var aRequest = a.requestOrFirstKnownChildRequest();
+ var bRequest = b.requestOrFirstKnownChildRequest();
if (!aRequest || !bRequest)
return !aRequest ? -1 : 1;
var aHeader = aRequest.responseHeaderValue(propertyName);
@@ -856,11 +907,25 @@ Network.NetworkGroupNode = class extends Network.NetworkNode {
constructor(parentView, displayName, sortKey) {
super(parentView);
this._displayName = displayName;
- // TODO(allada) This is here because you can always sort by _name. This class deserves it's own sorting functions.
this._name = sortKey;
}
/**
+ * @override
+ * @return {?Network.NetworkGroupNode}
+ */
+ asGroupNode() {
+ return this;
+ }
+
+ /**
+ * @return {string}
+ */
+ displayName() {
+ return this._displayName;
+ }
+
+ /**
* @param {!Element} element
* @param {string} text
*/
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/data_grid/ViewportDataGrid.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698