Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js |
| index c145cd92690e1f652b5e699de1559e654f63c455..f39b0f0bcb160433efa27097e4acb8b0b49a3f03 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkPanel.js |
| @@ -67,7 +67,6 @@ Network.NetworkPanel = class extends UI.Panel { |
| this._splitWidget.show(this.element); |
| this._progressBarContainer = createElement('div'); |
| - this._createToolbarButtons(); |
| this._searchableView = new UI.SearchableView(this); |
| this._searchableView.setPlaceholder(Common.UIString('Find by filename or path')); |
| @@ -90,6 +89,10 @@ Network.NetworkPanel = class extends UI.Panel { |
| this._networkLogLargeRowsSetting.addChangeListener(this._toggleLargerRequests, this); |
| this._networkRecordFilmStripSetting.addChangeListener(this._toggleRecordFilmStrip, this); |
| + /** @type {!Map<string, !Runtime.Extension>} */ |
| + this._groupingExtensions = new Map(); |
| + this._createToolbarButtons(); |
|
allada
2017/02/16 02:46:12
This was moved because we need _networkLogView in
|
| + |
| this._toggleRecord(true); |
| this._toggleShowOverview(); |
| this._toggleLargerRequests(); |
| @@ -179,9 +182,44 @@ Network.NetworkPanel = class extends UI.Panel { |
| this._panelToolbar.appendToolbarItem(this._createBlockedURLsButton()); |
| this._panelToolbar.appendToolbarItem(NetworkConditions.NetworkConditionsSelector.createOfflineToolbarCheckbox()); |
| this._panelToolbar.appendToolbarItem(this._createNetworkConditionsSelect()); |
| + |
| + this._setupGroupingCombo(); |
| + |
| this._panelToolbar.appendToolbarItem(new UI.ToolbarItem(this._progressBarContainer)); |
| } |
| + _setupGroupingCombo() { |
| + var extensions = self.runtime.extensions(Network.NetworkGroupLookupInterface); |
| + if (!extensions.length) |
| + return; |
| + |
| + var setting = Common.settings.createSetting('networkGrouping', ''); |
| + /** @type {!Array<!{value: string, label: string, title: string}>} */ |
| + var options = [{value: '', label: Common.UIString('No grouping'), title: Common.UIString('No grouping')}]; |
| + |
| + extensions.forEach(extension => { |
| + var identifier = extension.descriptor()['identifier']; |
| + this._groupingExtensions.set(identifier, extension); |
| + options.push({value: identifier, label: extension.title(), title: extension.title()}); |
| + }); |
| + this._panelToolbar.appendToolbarItem(new UI.ToolbarSettingComboBox(options, setting, Common.UIString('Group by'))); |
| + setting.addChangeListener(event => this._groupingChanged(/** @type {string} */ (event.data))); |
| + this._groupingChanged(setting.get()); |
| + } |
| + |
| + /** |
| + * @param {string} identifier |
| + */ |
| + _groupingChanged(identifier) { |
| + var extension = this._groupingExtensions.get(identifier); |
| + if (extension) { |
| + extension.instance().then( |
| + grouping => this._networkLogView.setGrouping(/** @type {?Network.NetworkGroupLookupInterface} */ (grouping))); |
| + } else { |
| + this._networkLogView.setGrouping(null); |
| + } |
| + } |
| + |
| /** |
| * @return {!UI.ToolbarItem} |
| */ |