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

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

Issue 2756583002: [Devtools] Added ability to add extension columns to network (Closed)
Patch Set: changes Created 3 years, 9 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
Index: third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
index 2001eb2936f9424d3b3c932ba5effabb8408f2c6..5f26a5cfac156496a01c2ae9911db693842b3503 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
@@ -29,6 +29,9 @@ Network.NetworkLogViewColumns = class {
/** @type {!Array.<!Network.NetworkLogViewColumns.Descriptor>} */
this._columns = [];
+ /** @type {!Map<string, ?Network.NetworkColumnExtensionInterface>} */
+ this._columnExtensions = new Map();
+
this._waterfallRequestsAreStale = false;
this._waterfallScrollerWidthIsStale = true;
@@ -80,12 +83,13 @@ Network.NetworkLogViewColumns = class {
this._columns = /** @type {!Array<!Network.NetworkLogViewColumns.Descriptor>} */ ([]);
for (var currentConfigColumn of defaultColumns) {
var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} */ (
- Object.assign(/** @type {!Object} */ ({}), defaultColumnConfig, currentConfigColumn));
+ Object.assign({}, defaultColumnConfig, currentConfigColumn));
columnConfig.id = columnConfig.id;
if (columnConfig.subtitle)
columnConfig.titleDOMFragment = this._makeHeaderFragment(columnConfig.title, columnConfig.subtitle);
this._columns.push(columnConfig);
}
+ this._loadColumnExtensions();
this._loadCustomColumnsAndSettings();
this._popoverHelper = new UI.PopoverHelper(this._networkLogView.element);
@@ -327,6 +331,13 @@ Network.NetworkLogViewColumns = class {
}
/**
+ * @return {!Map<string, ?Network.NetworkColumnExtensionInterface>}
+ */
+ columnExtensions() {
+ return this._columnExtensions;
+ }
+
+ /**
* @param {!Network.NetworkLogViewColumns.Descriptor} columnConfig
*/
_toggleColumnVisibility(columnConfig) {
@@ -344,6 +355,43 @@ Network.NetworkLogViewColumns = class {
this._persistantSettings.set(saveableSettings);
}
+ _loadColumnExtensions() {
+ var extensions = self.runtime.extensions(Network.NetworkColumnExtensionInterface);
+ for (var i = 0; i < extensions.length; i++) {
+ var extension = extensions[i];
+ var title = extension.title();
+ var columnId = title.toLowerCase() + '-extension';
+
+ this._columnExtensions.set(columnId, null);
+ extension.instance().then(extensionInstanceResolved.bind(this, columnId));
+
+ var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} */ (
+ Object.assign({}, Network.NetworkLogViewColumns._defaultColumnConfig, {
+ id: columnId,
+ title: title,
+ isResponseHeader: false,
+ isCustomHeader: false,
+ visible: true,
+ sortingFunction:
+ Network.NetworkRequestNode.ExtensionColumnComparator.bind(null, this._columnExtensions, columnId)
+ }));
+ const columnIndex = i + 1;
+ this._columns.splice(columnIndex, 0, columnConfig);
+ if (this._dataGrid)
+ this._dataGrid.addColumn(Network.NetworkLogViewColumns._convertToDataGridDescriptor(columnConfig), columnIndex);
+ }
+
+ /**
+ * @param {string} columnId
+ * @param {!Network.NetworkColumnExtensionInterface} instance
+ * @this {Network.NetworkLogViewColumns}
+ */
+ function extensionInstanceResolved(columnId, instance) {
+ this._columnExtensions.set(columnId, instance);
+ this._networkLogView.columnExtensionResolved();
+ }
+ }
+
_loadCustomColumnsAndSettings() {
var savedSettings = this._persistantSettings.get();
var columnIds = Object.keys(savedSettings);
@@ -483,7 +531,7 @@ Network.NetworkLogViewColumns = class {
return null;
var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} */ (
- Object.assign(/** @type {!Object} */ ({}), Network.NetworkLogViewColumns._defaultColumnConfig, {
+ Object.assign({}, Network.NetworkLogViewColumns._defaultColumnConfig, {
id: headerId,
title: headerTitle,
isResponseHeader: true,
@@ -814,3 +862,23 @@ Network.NetworkLogViewColumns.WaterfallSortIds = {
Duration: 'duration',
Latency: 'latency'
};
+
+/**
+ * @interface
+ */
+Network.NetworkColumnExtensionInterface = function() {};
+
+Network.NetworkColumnExtensionInterface.prototype = {
+ /**
+ * @param {!SDK.NetworkRequest} request
+ * @return {string}
+ */
+ lookupColumnValue(request) {},
+
+ /**
+ * @param {!SDK.NetworkRequest} aRequest
+ * @param {!SDK.NetworkRequest} bRequest
+ * @return {number}
+ */
+ requestComparator(aRequest, bRequest) {}
+};

Powered by Google App Engine
This is Rietveld 408576698