Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 /** | 4 /** |
| 5 * @unrestricted | 5 * @unrestricted |
| 6 */ | 6 */ |
| 7 Network.NetworkLogViewColumns = class { | 7 Network.NetworkLogViewColumns = class { |
| 8 /** | 8 /** |
| 9 * @param {!Network.NetworkLogView} networkLogView | 9 * @param {!Network.NetworkLogView} networkLogView |
| 10 * @param {!Network.NetworkTransferTimeCalculator} timeCalculator | 10 * @param {!Network.NetworkTransferTimeCalculator} timeCalculator |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 | 22 |
| 23 /** @type {!Map<string, !Array<number>>} */ | 23 /** @type {!Map<string, !Array<number>>} */ |
| 24 this._eventDividers = new Map(); | 24 this._eventDividers = new Map(); |
| 25 this._eventDividersShown = false; | 25 this._eventDividersShown = false; |
| 26 | 26 |
| 27 this._gridMode = true; | 27 this._gridMode = true; |
| 28 | 28 |
| 29 /** @type {!Array.<!Network.NetworkLogViewColumns.Descriptor>} */ | 29 /** @type {!Array.<!Network.NetworkLogViewColumns.Descriptor>} */ |
| 30 this._columns = []; | 30 this._columns = []; |
| 31 | 31 |
| 32 /** @type {!Map<string, ?Network.NetworkColumnExtensionInterface>} */ | |
| 33 this._columnExtensions = new Map(); | |
| 34 | |
| 32 this._waterfallRequestsAreStale = false; | 35 this._waterfallRequestsAreStale = false; |
| 33 this._waterfallScrollerWidthIsStale = true; | 36 this._waterfallScrollerWidthIsStale = true; |
| 34 | 37 |
| 35 /** @type {!Components.Linkifier} */ | 38 /** @type {!Components.Linkifier} */ |
| 36 this._popupLinkifier = new Components.Linkifier(); | 39 this._popupLinkifier = new Components.Linkifier(); |
| 37 | 40 |
| 38 /** @type {!Map<string, !Network.NetworkTimeCalculator>} */ | 41 /** @type {!Map<string, !Network.NetworkTimeCalculator>} */ |
| 39 this._calculatorsMap = new Map(); | 42 this._calculatorsMap = new Map(); |
| 40 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Time , timeCalculator); | 43 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Time , timeCalculator); |
| 41 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Dura tion, durationCalculator); | 44 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Dura tion, durationCalculator); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 79 | 82 |
| 80 this._columns = /** @type {!Array<!Network.NetworkLogViewColumns.Descriptor> } */ ([]); | 83 this._columns = /** @type {!Array<!Network.NetworkLogViewColumns.Descriptor> } */ ([]); |
| 81 for (var currentConfigColumn of defaultColumns) { | 84 for (var currentConfigColumn of defaultColumns) { |
| 82 var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} * / ( | 85 var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} * / ( |
| 83 Object.assign(/** @type {!Object} */ ({}), defaultColumnConfig, curren tConfigColumn)); | 86 Object.assign(/** @type {!Object} */ ({}), defaultColumnConfig, curren tConfigColumn)); |
| 84 columnConfig.id = columnConfig.id; | 87 columnConfig.id = columnConfig.id; |
| 85 if (columnConfig.subtitle) | 88 if (columnConfig.subtitle) |
| 86 columnConfig.titleDOMFragment = this._makeHeaderFragment(columnConfig.ti tle, columnConfig.subtitle); | 89 columnConfig.titleDOMFragment = this._makeHeaderFragment(columnConfig.ti tle, columnConfig.subtitle); |
| 87 this._columns.push(columnConfig); | 90 this._columns.push(columnConfig); |
| 88 } | 91 } |
| 92 this._loadColumnExtensions(); | |
| 89 this._loadCustomColumnsAndSettings(); | 93 this._loadCustomColumnsAndSettings(); |
| 90 | 94 |
| 91 this._popoverHelper = new UI.PopoverHelper(this._networkLogView.element); | 95 this._popoverHelper = new UI.PopoverHelper(this._networkLogView.element); |
| 92 this._popoverHelper.initializeCallbacks( | 96 this._popoverHelper.initializeCallbacks( |
| 93 this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._o nHidePopover.bind(this)); | 97 this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._o nHidePopover.bind(this)); |
| 94 this._popoverHelper.setHasPadding(true); | 98 this._popoverHelper.setHasPadding(true); |
| 95 | 99 |
| 96 /** @type {!DataGrid.SortableDataGrid<!Network.NetworkNode>} */ | 100 /** @type {!DataGrid.SortableDataGrid<!Network.NetworkNode>} */ |
| 97 this._dataGrid = | 101 this._dataGrid = |
| 98 new DataGrid.SortableDataGrid(this._columns.map(Network.NetworkLogViewCo lumns._convertToDataGridDescriptor)); | 102 new DataGrid.SortableDataGrid(this._columns.map(Network.NetworkLogViewCo lumns._convertToDataGridDescriptor)); |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 320 this._networkLogView.removeAllNodeHighlights(); | 324 this._networkLogView.removeAllNodeHighlights(); |
| 321 this._splitWidget.hideSidebar(); | 325 this._splitWidget.hideSidebar(); |
| 322 this._activeScroller = this._dataGridScroller; | 326 this._activeScroller = this._dataGridScroller; |
| 323 this._dataGrid.setScrollContainer(this._dataGridScroller); | 327 this._dataGrid.setScrollContainer(this._dataGridScroller); |
| 324 } | 328 } |
| 325 this._networkLogView.element.classList.toggle('brief-mode', !gridMode); | 329 this._networkLogView.element.classList.toggle('brief-mode', !gridMode); |
| 326 this._updateColumns(); | 330 this._updateColumns(); |
| 327 } | 331 } |
| 328 | 332 |
| 329 /** | 333 /** |
| 334 * @return {!Map<string, ?Network.NetworkColumnExtensionInterface>} | |
| 335 */ | |
| 336 columnExtensions() { | |
| 337 return this._columnExtensions; | |
| 338 } | |
| 339 | |
| 340 /** | |
| 330 * @param {!Network.NetworkLogViewColumns.Descriptor} columnConfig | 341 * @param {!Network.NetworkLogViewColumns.Descriptor} columnConfig |
| 331 */ | 342 */ |
| 332 _toggleColumnVisibility(columnConfig) { | 343 _toggleColumnVisibility(columnConfig) { |
| 333 this._loadCustomColumnsAndSettings(); | 344 this._loadCustomColumnsAndSettings(); |
| 334 columnConfig.visible = !columnConfig.visible; | 345 columnConfig.visible = !columnConfig.visible; |
| 335 this._saveColumnsSettings(); | 346 this._saveColumnsSettings(); |
| 336 this._updateColumns(); | 347 this._updateColumns(); |
| 337 } | 348 } |
| 338 | 349 |
| 339 _saveColumnsSettings() { | 350 _saveColumnsSettings() { |
| 340 var saveableSettings = {}; | 351 var saveableSettings = {}; |
| 341 for (var columnConfig of this._columns) | 352 for (var columnConfig of this._columns) |
| 342 saveableSettings[columnConfig.id] = {visible: columnConfig.visible, title: columnConfig.title}; | 353 saveableSettings[columnConfig.id] = {visible: columnConfig.visible, title: columnConfig.title}; |
| 343 | 354 |
| 344 this._persistantSettings.set(saveableSettings); | 355 this._persistantSettings.set(saveableSettings); |
| 345 } | 356 } |
| 346 | 357 |
| 358 _loadColumnExtensions() { | |
| 359 var extensions = self.runtime.extensions(Network.NetworkColumnExtensionInter face); | |
| 360 for (var i = 0; i < extensions.length; i++) { | |
| 361 var extension = extensions[i]; | |
| 362 var title = extension.title(); | |
| 363 var columnId = title.toLowerCase() + '-extension'; | |
| 364 | |
| 365 this._columnExtensions.set(columnId, null); | |
| 366 extension.instance().then(extensionInstanceResolved.bind(this, columnId)); | |
| 367 | |
| 368 var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} * / ( | |
| 369 Object.assign(/** @type {!Object} */ ({}), Network.NetworkLogViewColum ns._defaultColumnConfig, { | |
|
caseq
2017/03/17 00:16:29
I think this cast should not be required.
allada
2017/03/17 01:16:09
Done.
| |
| 370 id: columnId, | |
| 371 title: title, | |
| 372 isResponseHeader: false, | |
| 373 isCustomHeader: false, | |
| 374 visible: true, | |
| 375 sortingFunction: | |
| 376 Network.NetworkRequestNode.ExtensionColumnComparator.bind(null, this._columnExtensions, columnId) | |
| 377 })); | |
| 378 const columnIndex = i + 1; | |
| 379 this._columns.splice(columnIndex, 0, columnConfig); | |
| 380 if (this._dataGrid) | |
| 381 this._dataGrid.addColumn(Network.NetworkLogViewColumns._convertToDataGri dDescriptor(columnConfig), columnIndex); | |
| 382 } | |
| 383 | |
| 384 /** | |
| 385 * @param {string} columnId | |
| 386 * @param {!Network.NetworkColumnExtensionInterface} instance | |
| 387 * @this {Network.NetworkLogViewColumns} | |
| 388 */ | |
| 389 function extensionInstanceResolved(columnId, instance) { | |
| 390 this._columnExtensions.set(columnId, instance); | |
| 391 this._networkLogView.columnExtensionResolved(); | |
| 392 } | |
| 393 } | |
| 394 | |
| 347 _loadCustomColumnsAndSettings() { | 395 _loadCustomColumnsAndSettings() { |
| 348 var savedSettings = this._persistantSettings.get(); | 396 var savedSettings = this._persistantSettings.get(); |
| 349 var columnIds = Object.keys(savedSettings); | 397 var columnIds = Object.keys(savedSettings); |
| 350 for (var columnId of columnIds) { | 398 for (var columnId of columnIds) { |
| 351 var setting = savedSettings[columnId]; | 399 var setting = savedSettings[columnId]; |
| 352 var columnConfig = this._columns.find(columnConfig => columnConfig.id === columnId); | 400 var columnConfig = this._columns.find(columnConfig => columnConfig.id === columnId); |
| 353 if (!columnConfig) | 401 if (!columnConfig) |
| 354 columnConfig = this._addCustomHeader(setting.title, columnId); | 402 columnConfig = this._addCustomHeader(setting.title, columnId); |
| 355 if (columnConfig.hideable && typeof setting.visible === 'boolean') | 403 if (columnConfig.hideable && typeof setting.visible === 'boolean') |
| 356 columnConfig.visible = !!setting.visible; | 404 columnConfig.visible = !!setting.visible; |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 807 /** | 855 /** |
| 808 * @enum {string} | 856 * @enum {string} |
| 809 */ | 857 */ |
| 810 Network.NetworkLogViewColumns.WaterfallSortIds = { | 858 Network.NetworkLogViewColumns.WaterfallSortIds = { |
| 811 StartTime: 'startTime', | 859 StartTime: 'startTime', |
| 812 ResponseTime: 'responseReceivedTime', | 860 ResponseTime: 'responseReceivedTime', |
| 813 EndTime: 'endTime', | 861 EndTime: 'endTime', |
| 814 Duration: 'duration', | 862 Duration: 'duration', |
| 815 Latency: 'latency' | 863 Latency: 'latency' |
| 816 }; | 864 }; |
| 865 | |
| 866 /** | |
| 867 * @interface | |
| 868 */ | |
| 869 Network.NetworkColumnExtensionInterface = function() {}; | |
| 870 | |
| 871 Network.NetworkColumnExtensionInterface.prototype = { | |
| 872 /** | |
| 873 * @param {!SDK.NetworkRequest} request | |
| 874 * @return {string} | |
| 875 */ | |
| 876 lookupColumnValue(request) {} | |
| 877 }; | |
| OLD | NEW |