| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org> | 3 * Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org> |
| 4 * Copyright (C) 2011 Google Inc. All rights reserved. | 4 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 * @unrestricted | 33 * @unrestricted |
| 34 */ | 34 */ |
| 35 Network.NetworkPanel = class extends UI.Panel { | 35 Network.NetworkPanel = class extends UI.Panel { |
| 36 constructor() { | 36 constructor() { |
| 37 super('network'); | 37 super('network'); |
| 38 this.registerRequiredCSS('network/networkPanel.css'); | 38 this.registerRequiredCSS('network/networkPanel.css'); |
| 39 | 39 |
| 40 this._networkLogShowOverviewSetting = Common.settings.createSetting('network
LogShowOverview', true); | 40 this._networkLogShowOverviewSetting = Common.settings.createSetting('network
LogShowOverview', true); |
| 41 this._networkLogLargeRowsSetting = Common.settings.createSetting('networkLog
LargeRows', false); | 41 this._networkLogLargeRowsSetting = Common.settings.createSetting('networkLog
LargeRows', false); |
| 42 this._networkRecordFilmStripSetting = Common.settings.createSetting('network
RecordFilmStripSetting', false); | 42 this._networkRecordFilmStripSetting = Common.settings.createSetting('network
RecordFilmStripSetting', false); |
| 43 |
| 43 this._toggleRecordAction = /** @type {!UI.Action }*/ (UI.actionRegistry.acti
on('network.toggle-recording')); | 44 this._toggleRecordAction = /** @type {!UI.Action }*/ (UI.actionRegistry.acti
on('network.toggle-recording')); |
| 44 | 45 |
| 45 /** @type {?PerfUI.FilmStripView} */ | 46 /** @type {?PerfUI.FilmStripView} */ |
| 46 this._filmStripView = null; | 47 this._filmStripView = null; |
| 47 /** @type {?Network.NetworkPanel.FilmStripRecorder} */ | 48 /** @type {?Network.NetworkPanel.FilmStripRecorder} */ |
| 48 this._filmStripRecorder = null; | 49 this._filmStripRecorder = null; |
| 49 | 50 |
| 50 this._panelToolbar = new UI.Toolbar('', this.element); | 51 this._panelToolbar = new UI.Toolbar('', this.element); |
| 51 this._filterBar = new UI.FilterBar('networkPanel', true); | 52 this._filterBar = new UI.FilterBar('networkPanel', true); |
| 52 this._filterBar.show(this.element); | 53 this._filterBar.show(this.element); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 this._updateUI(); | 103 this._updateUI(); |
| 103 | 104 |
| 104 SDK.targetManager.addModelListener( | 105 SDK.targetManager.addModelListener( |
| 105 SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.WillReloadPage, this
._willReloadPage, this); | 106 SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.WillReloadPage, this
._willReloadPage, this); |
| 106 SDK.targetManager.addModelListener(SDK.ResourceTreeModel, SDK.ResourceTreeMo
del.Events.Load, this._load, this); | 107 SDK.targetManager.addModelListener(SDK.ResourceTreeModel, SDK.ResourceTreeMo
del.Events.Load, this._load, this); |
| 107 this._networkLogView.addEventListener(Network.NetworkLogView.Events.RequestS
elected, this._onRequestSelected, this); | 108 this._networkLogView.addEventListener(Network.NetworkLogView.Events.RequestS
elected, this._onRequestSelected, this); |
| 108 this._networkLogView.addEventListener( | 109 this._networkLogView.addEventListener( |
| 109 Network.NetworkLogView.Events.SearchCountUpdated, this._onSearchCountUpd
ated, this); | 110 Network.NetworkLogView.Events.SearchCountUpdated, this._onSearchCountUpd
ated, this); |
| 110 this._networkLogView.addEventListener( | 111 this._networkLogView.addEventListener( |
| 111 Network.NetworkLogView.Events.SearchIndexUpdated, this._onSearchIndexUpd
ated, this); | 112 Network.NetworkLogView.Events.SearchIndexUpdated, this._onSearchIndexUpd
ated, this); |
| 112 this._networkLogView.addEventListener(Network.NetworkLogView.Events.UpdateRe
quest, this._onUpdateRequest, this); | 113 NetworkLog.networkLog.addEventListener(NetworkLog.NetworkLog.Events.RequestA
dded, this._onUpdateRequest, this); |
| 114 NetworkLog.networkLog.addEventListener(NetworkLog.NetworkLog.Events.RequestU
pdated, this._onUpdateRequest, this); |
| 115 NetworkLog.networkLog.addEventListener(NetworkLog.NetworkLog.Events.Reset, t
his._onNetworkLogReset, this); |
| 113 | 116 |
| 114 Components.DataSaverInfobar.maybeShowInPanel(this); | 117 Components.DataSaverInfobar.maybeShowInPanel(this); |
| 115 } | 118 } |
| 116 | 119 |
| 117 /** | 120 /** |
| 118 * @param {!Array<{filterType: !Network.NetworkLogView.FilterType, filterValue
: string}>} filters | 121 * @param {!Array<{filterType: !Network.NetworkLogView.FilterType, filterValue
: string}>} filters |
| 119 */ | 122 */ |
| 120 static revealAndFilter(filters) { | 123 static revealAndFilter(filters) { |
| 121 var panel = Network.NetworkPanel._instance(); | 124 var panel = Network.NetworkPanel._instance(); |
| 122 var filterString = ''; | 125 var filterString = ''; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 139 _onWindowChanged(event) { | 142 _onWindowChanged(event) { |
| 140 var startTime = Math.max(this._calculator.minimumBoundary(), event.data.star
tTime / 1000); | 143 var startTime = Math.max(this._calculator.minimumBoundary(), event.data.star
tTime / 1000); |
| 141 var endTime = Math.min(this._calculator.maximumBoundary(), event.data.endTim
e / 1000); | 144 var endTime = Math.min(this._calculator.maximumBoundary(), event.data.endTim
e / 1000); |
| 142 this._networkLogView.setWindow(startTime, endTime); | 145 this._networkLogView.setWindow(startTime, endTime); |
| 143 } | 146 } |
| 144 | 147 |
| 145 _createToolbarButtons() { | 148 _createToolbarButtons() { |
| 146 this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._tog
gleRecordAction)); | 149 this._panelToolbar.appendToolbarItem(UI.Toolbar.createActionButton(this._tog
gleRecordAction)); |
| 147 | 150 |
| 148 this._clearButton = new UI.ToolbarButton(Common.UIString('Clear'), 'largeico
n-clear'); | 151 this._clearButton = new UI.ToolbarButton(Common.UIString('Clear'), 'largeico
n-clear'); |
| 149 this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, this._onCl
earButtonClicked, this); | 152 this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, () => Netw
orkLog.networkLog.reset(), this); |
| 150 this._panelToolbar.appendToolbarItem(this._clearButton); | 153 this._panelToolbar.appendToolbarItem(this._clearButton); |
| 151 this._panelToolbar.appendSeparator(); | 154 this._panelToolbar.appendSeparator(); |
| 152 var recordFilmStripButton = new UI.ToolbarSettingToggle( | 155 var recordFilmStripButton = new UI.ToolbarSettingToggle( |
| 153 this._networkRecordFilmStripSetting, 'largeicon-camera', Common.UIString
('Capture screenshots')); | 156 this._networkRecordFilmStripSetting, 'largeicon-camera', Common.UIString
('Capture screenshots')); |
| 154 this._panelToolbar.appendToolbarItem(recordFilmStripButton); | 157 this._panelToolbar.appendToolbarItem(recordFilmStripButton); |
| 155 | 158 |
| 156 this._panelToolbar.appendToolbarItem(this._filterBar.filterButton()); | 159 this._panelToolbar.appendToolbarItem(this._filterBar.filterButton()); |
| 157 this._panelToolbar.appendSeparator(); | 160 this._panelToolbar.appendSeparator(); |
| 158 | 161 |
| 159 this._panelToolbar.appendText(Common.UIString('View:')); | 162 this._panelToolbar.appendText(Common.UIString('View:')); |
| 160 | 163 |
| 161 var largerRequestsButton = new UI.ToolbarSettingToggle( | 164 var largerRequestsButton = new UI.ToolbarSettingToggle( |
| 162 this._networkLogLargeRowsSetting, 'largeicon-large-list', Common.UIStrin
g('Use large request rows'), | 165 this._networkLogLargeRowsSetting, 'largeicon-large-list', Common.UIStrin
g('Use large request rows'), |
| 163 Common.UIString('Use small request rows')); | 166 Common.UIString('Use small request rows')); |
| 164 this._panelToolbar.appendToolbarItem(largerRequestsButton); | 167 this._panelToolbar.appendToolbarItem(largerRequestsButton); |
| 165 | 168 |
| 166 var showOverviewButton = new UI.ToolbarSettingToggle( | 169 var showOverviewButton = new UI.ToolbarSettingToggle( |
| 167 this._networkLogShowOverviewSetting, 'largeicon-waterfall', Common.UIStr
ing('Show overview'), | 170 this._networkLogShowOverviewSetting, 'largeicon-waterfall', Common.UIStr
ing('Show overview'), |
| 168 Common.UIString('Hide overview')); | 171 Common.UIString('Hide overview')); |
| 169 this._panelToolbar.appendToolbarItem(showOverviewButton); | 172 this._panelToolbar.appendToolbarItem(showOverviewButton); |
| 170 | 173 |
| 171 if (Runtime.experiments.isEnabled('networkGroupingRequests')) { | 174 if (Runtime.experiments.isEnabled('networkGroupingRequests')) { |
| 172 this._panelToolbar.appendToolbarItem(new UI.ToolbarSettingCheckbox( | 175 this._panelToolbar.appendToolbarItem(new UI.ToolbarSettingCheckbox( |
| 173 Common.moduleSetting('network.group-by-frame'), '', Common.UIString('G
roup by frame'))); | 176 Common.moduleSetting('network.group-by-frame'), '', Common.UIString('G
roup by frame'))); |
| 174 } | 177 } |
| 175 | 178 |
| 176 this._panelToolbar.appendSeparator(); | 179 this._panelToolbar.appendSeparator(); |
| 177 this._preserveLogSetting = Common.moduleSetting('network.preserve-log'); | 180 this._preserveLogSetting = Common.moduleSetting('network_log.preserve-log'); |
| 178 this._panelToolbar.appendToolbarItem(new UI.ToolbarSettingCheckbox( | 181 this._panelToolbar.appendToolbarItem(new UI.ToolbarSettingCheckbox( |
| 179 this._preserveLogSetting, Common.UIString('Do not clear log on page relo
ad / navigation'), | 182 this._preserveLogSetting, Common.UIString('Do not clear log on page relo
ad / navigation'), |
| 180 Common.UIString('Preserve log'))); | 183 Common.UIString('Preserve log'))); |
| 181 | 184 |
| 182 this._disableCacheCheckbox = new UI.ToolbarSettingCheckbox( | 185 this._disableCacheCheckbox = new UI.ToolbarSettingCheckbox( |
| 183 Common.moduleSetting('cacheDisabled'), Common.UIString('Disable cache (w
hile DevTools is open)'), | 186 Common.moduleSetting('cacheDisabled'), Common.UIString('Disable cache (w
hile DevTools is open)'), |
| 184 Common.UIString('Disable cache')); | 187 Common.UIString('Disable cache')); |
| 185 this._panelToolbar.appendToolbarItem(this._disableCacheCheckbox); | 188 this._panelToolbar.appendToolbarItem(this._disableCacheCheckbox); |
| 186 | 189 |
| 187 this._panelToolbar.appendSeparator(); | 190 this._panelToolbar.appendSeparator(); |
| 188 this._panelToolbar.appendToolbarItem(MobileThrottling.NetworkConditionsSelec
tor.createOfflineToolbarCheckbox()); | 191 this._panelToolbar.appendToolbarItem(MobileThrottling.NetworkConditionsSelec
tor.createOfflineToolbarCheckbox()); |
| 189 this._panelToolbar.appendToolbarItem(this._createNetworkConditionsSelect()); | 192 this._panelToolbar.appendToolbarItem(this._createNetworkConditionsSelect()); |
| 190 | 193 |
| 191 this._panelToolbar.appendToolbarItem(new UI.ToolbarItem(this._progressBarCon
tainer)); | 194 this._panelToolbar.appendToolbarItem(new UI.ToolbarItem(this._progressBarCon
tainer)); |
| 192 } | 195 } |
| 193 | 196 |
| 194 /** | 197 /** |
| 195 * @return {!UI.ToolbarComboBox} | 198 * @return {!UI.ToolbarComboBox} |
| 196 */ | 199 */ |
| 197 _createNetworkConditionsSelect() { | 200 _createNetworkConditionsSelect() { |
| 198 var toolbarItem = new UI.ToolbarComboBox(null); | 201 var toolbarItem = new UI.ToolbarComboBox(null); |
| 199 toolbarItem.setMaxWidth(140); | 202 toolbarItem.setMaxWidth(140); |
| 200 MobileThrottling.NetworkConditionsSelector.decorateSelect(toolbarItem.select
Element()); | 203 MobileThrottling.NetworkConditionsSelector.decorateSelect(toolbarItem.select
Element()); |
| 201 return toolbarItem; | 204 return toolbarItem; |
| 202 } | 205 } |
| 203 | 206 |
| 204 _toggleRecording() { | 207 _toggleRecording() { |
| 205 if (!this._preserveLogSetting.get() && !this._toggleRecordAction.toggled()) | 208 if (!this._preserveLogSetting.get() && !this._toggleRecordAction.toggled()) |
| 206 this._reset(); | 209 NetworkLog.networkLog.reset(); |
| 207 this._toggleRecord(!this._toggleRecordAction.toggled()); | 210 this._toggleRecord(!this._toggleRecordAction.toggled()); |
| 208 } | 211 } |
| 209 | 212 |
| 210 /** | 213 /** |
| 211 * @param {boolean} toggled | 214 * @param {boolean} toggled |
| 212 */ | 215 */ |
| 213 _toggleRecord(toggled) { | 216 _toggleRecord(toggled) { |
| 214 this._toggleRecordAction.setToggled(toggled); | 217 this._toggleRecordAction.setToggled(toggled); |
| 215 this._networkLogView.setRecording(toggled); | 218 this._networkLogView.setRecording(toggled); |
| 216 if (!toggled && this._filmStripRecorder) | 219 if (!toggled && this._filmStripRecorder) |
| 217 this._filmStripRecorder.stopRecording(this._filmStripAvailable.bind(this))
; | 220 this._filmStripRecorder.stopRecording(this._filmStripAvailable.bind(this))
; |
| 221 // TODO(einbinder) This should be moved to a setting/action that NetworkLog
owns but NetworkPanel controls, but |
| 222 // always be present in the command menu. |
| 223 NetworkLog.networkLog.setIsRecording(toggled); |
| 218 } | 224 } |
| 219 | 225 |
| 220 /** | 226 /** |
| 221 * @param {?SDK.FilmStripModel} filmStripModel | 227 * @param {?SDK.FilmStripModel} filmStripModel |
| 222 */ | 228 */ |
| 223 _filmStripAvailable(filmStripModel) { | 229 _filmStripAvailable(filmStripModel) { |
| 224 if (!filmStripModel) | 230 if (!filmStripModel) |
| 225 return; | 231 return; |
| 226 var calculator = this._networkLogView.timeCalculator(); | 232 var calculator = this._networkLogView.timeCalculator(); |
| 227 this._filmStripView.setModel(filmStripModel, calculator.minimumBoundary() *
1000, calculator.boundarySpan() * 1000); | 233 this._filmStripView.setModel(filmStripModel, calculator.minimumBoundary() *
1000, calculator.boundarySpan() * 1000); |
| 228 this._networkOverview.setFilmStripModel(filmStripModel); | 234 this._networkOverview.setFilmStripModel(filmStripModel); |
| 229 var timestamps = filmStripModel.frames().map(mapTimestamp); | 235 var timestamps = filmStripModel.frames().map(mapTimestamp); |
| 230 | 236 |
| 231 /** | 237 /** |
| 232 * @param {!SDK.FilmStripModel.Frame} frame | 238 * @param {!SDK.FilmStripModel.Frame} frame |
| 233 * @return {number} | 239 * @return {number} |
| 234 */ | 240 */ |
| 235 function mapTimestamp(frame) { | 241 function mapTimestamp(frame) { |
| 236 return frame.timestamp / 1000; | 242 return frame.timestamp / 1000; |
| 237 } | 243 } |
| 238 | 244 |
| 239 this._networkLogView.addFilmStripFrames(timestamps); | 245 this._networkLogView.addFilmStripFrames(timestamps); |
| 240 } | 246 } |
| 241 | 247 |
| 242 /** | 248 _onNetworkLogReset() { |
| 243 * @param {!Common.Event} event | |
| 244 */ | |
| 245 _onClearButtonClicked(event) { | |
| 246 this._reset(); | |
| 247 } | |
| 248 | |
| 249 _reset() { | |
| 250 this._calculator.reset(); | |
| 251 this._overviewPane.reset(); | |
| 252 this._networkLogView.reset(); | |
| 253 Network.BlockedURLsPane.reset(); | 249 Network.BlockedURLsPane.reset(); |
| 250 if (!this._preserveLogSetting.get()) { |
| 251 this._calculator.reset(); |
| 252 this._overviewPane.reset(); |
| 253 } |
| 254 if (this._filmStripView) | 254 if (this._filmStripView) |
| 255 this._resetFilmStripView(); | 255 this._resetFilmStripView(); |
| 256 } | 256 } |
| 257 | 257 |
| 258 /** | 258 /** |
| 259 * @param {!Common.Event} event | 259 * @param {!Common.Event} event |
| 260 */ | 260 */ |
| 261 _willReloadPage(event) { | 261 _willReloadPage(event) { |
| 262 if (!this._preserveLogSetting.get()) | |
| 263 this._reset(); | |
| 264 this._toggleRecord(true); | 262 this._toggleRecord(true); |
| 265 if (this._pendingStopTimer) { | 263 if (this._pendingStopTimer) { |
| 266 clearTimeout(this._pendingStopTimer); | 264 clearTimeout(this._pendingStopTimer); |
| 267 delete this._pendingStopTimer; | 265 delete this._pendingStopTimer; |
| 268 } | 266 } |
| 269 if (this.isShowing() && this._filmStripRecorder) | 267 if (this.isShowing() && this._filmStripRecorder) |
| 270 this._filmStripRecorder.startRecording(); | 268 this._filmStripRecorder.startRecording(); |
| 271 } | 269 } |
| 272 | 270 |
| 273 /** | 271 /** |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 * @param {string} actionId | 710 * @param {string} actionId |
| 713 * @return {boolean} | 711 * @return {boolean} |
| 714 */ | 712 */ |
| 715 handleAction(context, actionId) { | 713 handleAction(context, actionId) { |
| 716 var panel = UI.context.flavor(Network.NetworkPanel); | 714 var panel = UI.context.flavor(Network.NetworkPanel); |
| 717 console.assert(panel && panel instanceof Network.NetworkPanel); | 715 console.assert(panel && panel instanceof Network.NetworkPanel); |
| 718 panel._toggleRecording(); | 716 panel._toggleRecording(); |
| 719 return true; | 717 return true; |
| 720 } | 718 } |
| 721 }; | 719 }; |
| OLD | NEW |