| 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 WebInspector.NetworkLogViewColumns = class { | 7 WebInspector.NetworkLogViewColumns = class { |
| 8 /** | 8 /** |
| 9 * @param {!WebInspector.NetworkLogView} networkLogView | 9 * @param {!WebInspector.NetworkLogView} networkLogView |
| 10 * @param {!WebInspector.NetworkTransferTimeCalculator} timeCalculator | 10 * @param {!WebInspector.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.<!WebInspector.NetworkLogViewColumns.Descriptor>} */ | 29 /** @type {!Array.<!WebInspector.NetworkLogViewColumns.Descriptor>} */ |
| 30 this._columns = []; | 30 this._columns = []; |
| 31 | 31 |
| 32 this._timelineRequestsAreStale = false; | 32 this._waterfallRequestsAreStale = false; |
| 33 this._timelineScrollerWidthIsStale = true; | 33 this._waterfallScrollerWidthIsStale = true; |
| 34 | 34 |
| 35 /** @type {!WebInspector.Linkifier} */ | 35 /** @type {!WebInspector.Linkifier} */ |
| 36 this._popupLinkifier = new WebInspector.Linkifier(); | 36 this._popupLinkifier = new WebInspector.Linkifier(); |
| 37 | 37 |
| 38 /** @type {!Map<string, !WebInspector.NetworkTimeCalculator>} */ | 38 /** @type {!Map<string, !WebInspector.NetworkTimeCalculator>} */ |
| 39 this._calculatorsMap = new Map(); | 39 this._calculatorsMap = new Map(); |
| 40 this._calculatorsMap.set(WebInspector.NetworkLogViewColumns._calculatorTypes
.Time, timeCalculator); | 40 this._calculatorsMap.set(WebInspector.NetworkLogViewColumns._calculatorTypes
.Time, timeCalculator); |
| 41 this._calculatorsMap.set(WebInspector.NetworkLogViewColumns._calculatorTypes
.Duration, durationCalculator); | 41 this._calculatorsMap.set(WebInspector.NetworkLogViewColumns._calculatorTypes
.Duration, durationCalculator); |
| 42 | 42 |
| 43 this._setupDataGrid(); | 43 this._setupDataGrid(); |
| 44 this._setupTimeline(); | 44 this._setupWaterfall(); |
| 45 } | 45 } |
| 46 | 46 |
| 47 /** | 47 /** |
| 48 * @param {!WebInspector.NetworkLogViewColumns.Descriptor} columnConfig | 48 * @param {!WebInspector.NetworkLogViewColumns.Descriptor} columnConfig |
| 49 * @return {!WebInspector.DataGrid.ColumnDescriptor} | 49 * @return {!WebInspector.DataGrid.ColumnDescriptor} |
| 50 */ | 50 */ |
| 51 static _convertToDataGridDescriptor(columnConfig) { | 51 static _convertToDataGridDescriptor(columnConfig) { |
| 52 return /** @type {!WebInspector.DataGrid.ColumnDescriptor} */ ({ | 52 return /** @type {!WebInspector.DataGrid.ColumnDescriptor} */ ({ |
| 53 id: columnConfig.id, | 53 id: columnConfig.id, |
| 54 title: columnConfig.title, | 54 title: columnConfig.title, |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 if ((!this._dataGrid.selectedNode && event.button) || event.target.enclosi
ngNodeOrSelfWithNodeName('a')) | 98 if ((!this._dataGrid.selectedNode && event.button) || event.target.enclosi
ngNodeOrSelfWithNodeName('a')) |
| 99 event.consume(); | 99 event.consume(); |
| 100 }, true); | 100 }, true); |
| 101 | 101 |
| 102 this._dataGridScroller = this._dataGrid.scrollContainer; | 102 this._dataGridScroller = this._dataGrid.scrollContainer; |
| 103 | 103 |
| 104 this._updateColumns(); | 104 this._updateColumns(); |
| 105 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged,
this._sortHandler, this); | 105 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged,
this._sortHandler, this); |
| 106 this._dataGrid.setHeaderContextMenuCallback(this._innerHeaderContextMenu.bin
d(this)); | 106 this._dataGrid.setHeaderContextMenuCallback(this._innerHeaderContextMenu.bin
d(this)); |
| 107 | 107 |
| 108 this._activeTimelineSortId = WebInspector.NetworkLogViewColumns.TimelineSort
Ids.StartTime; | 108 this._activeWaterfallSortId = WebInspector.NetworkLogViewColumns.WaterfallSo
rtIds.StartTime; |
| 109 this._dataGrid.markColumnAsSortedBy( | 109 this._dataGrid.markColumnAsSortedBy( |
| 110 WebInspector.NetworkLogViewColumns._initialSortColumn, WebInspector.Data
Grid.Order.Ascending); | 110 WebInspector.NetworkLogViewColumns._initialSortColumn, WebInspector.Data
Grid.Order.Ascending); |
| 111 | 111 |
| 112 this._splitWidget = new WebInspector.SplitWidget(true, true, 'networkPanelSp
litViewTimeline', 200); | 112 this._splitWidget = new WebInspector.SplitWidget(true, true, 'networkPanelSp
litViewWaterfall', 200); |
| 113 var widget = this._dataGrid.asWidget(); | 113 var widget = this._dataGrid.asWidget(); |
| 114 widget.setMinimumSize(150, 0); | 114 widget.setMinimumSize(150, 0); |
| 115 this._splitWidget.setMainWidget(widget); | 115 this._splitWidget.setMainWidget(widget); |
| 116 } | 116 } |
| 117 | 117 |
| 118 _setupTimeline() { | 118 _setupWaterfall() { |
| 119 this._timelineColumn = | 119 this._waterfallColumn = |
| 120 new WebInspector.NetworkTimelineColumn(this._networkLogView.rowHeight(),
this._networkLogView.calculator()); | 120 new WebInspector.NetworkWaterfallColumn(this._networkLogView.rowHeight()
, this._networkLogView.calculator()); |
| 121 | 121 |
| 122 this._timelineColumn.element.addEventListener('contextmenu', handleContextMe
nu.bind(this)); | 122 this._waterfallColumn.element.addEventListener('contextmenu', handleContextM
enu.bind(this)); |
| 123 this._timelineColumn.element.addEventListener('mousewheel', this._onMouseWhe
el.bind(this, false), {passive: true}); | 123 this._waterfallColumn.element.addEventListener('mousewheel', this._onMouseWh
eel.bind(this, false), {passive: true}); |
| 124 this._dataGridScroller.addEventListener('mousewheel', this._onMouseWheel.bin
d(this, true), true); | 124 this._dataGridScroller.addEventListener('mousewheel', this._onMouseWheel.bin
d(this, true), true); |
| 125 | 125 |
| 126 this._timelineColumn.element.addEventListener( | 126 this._waterfallColumn.element.addEventListener( |
| 127 'mousemove', | 127 'mousemove', |
| 128 event => this._networkLogView.setHoveredRequest( | 128 event => this._networkLogView.setHoveredRequest( |
| 129 this._timelineColumn.getRequestFromPoint(event.offsetX, event.offset
Y + event.target.offsetTop), | 129 this._waterfallColumn.getRequestFromPoint(event.offsetX, event.offse
tY + event.target.offsetTop), |
| 130 event.shiftKey), | 130 event.shiftKey), |
| 131 true); | 131 true); |
| 132 this._timelineColumn.element.addEventListener( | 132 this._waterfallColumn.element.addEventListener( |
| 133 'mouseleave', this._networkLogView.setHoveredRequest.bind(this._networkL
ogView, null, false), true); | 133 'mouseleave', this._networkLogView.setHoveredRequest.bind(this._networkL
ogView, null, false), true); |
| 134 | 134 |
| 135 this._timelineScroller = this._timelineColumn.contentElement.createChild('di
v', 'network-timeline-v-scroll'); | 135 this._waterfallScroller = this._waterfallColumn.contentElement.createChild('
div', 'network-waterfall-v-scroll'); |
| 136 this._timelineScroller.addEventListener('scroll', this._syncScrollers.bind(t
his), {passive: true}); | 136 this._waterfallScroller.addEventListener('scroll', this._syncScrollers.bind(
this), {passive: true}); |
| 137 this._timelineScrollerContent = this._timelineScroller.createChild('div', 'n
etwork-timeline-v-scroll-content'); | 137 this._waterfallScrollerContent = this._waterfallScroller.createChild('div',
'network-waterfall-v-scroll-content'); |
| 138 | 138 |
| 139 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.PaddingChanged,
() => { | 139 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.PaddingChanged,
() => { |
| 140 this._timelineScrollerWidthIsStale = true; | 140 this._waterfallScrollerWidthIsStale = true; |
| 141 this._syncScrollers(); | 141 this._syncScrollers(); |
| 142 }); | 142 }); |
| 143 this._dataGrid.addEventListener( | 143 this._dataGrid.addEventListener( |
| 144 WebInspector.ViewportDataGrid.Events.ViewportCalculated, this._redrawTim
elineColumn.bind(this)); | 144 WebInspector.ViewportDataGrid.Events.ViewportCalculated, this._redrawWat
erfallColumn.bind(this)); |
| 145 | 145 |
| 146 this._createTimelineHeader(); | 146 this._createWaterfallHeader(); |
| 147 this._timelineColumn.contentElement.classList.add('network-timeline-view'); | 147 this._waterfallColumn.contentElement.classList.add('network-waterfall-view')
; |
| 148 | 148 |
| 149 this._timelineColumn.setMinimumSize(100, 0); | 149 this._waterfallColumn.setMinimumSize(100, 0); |
| 150 this._splitWidget.setSidebarWidget(this._timelineColumn); | 150 this._splitWidget.setSidebarWidget(this._waterfallColumn); |
| 151 | 151 |
| 152 this.switchViewMode(false); | 152 this.switchViewMode(false); |
| 153 | 153 |
| 154 /** | 154 /** |
| 155 * @param {!Event} event | 155 * @param {!Event} event |
| 156 * @this {WebInspector.NetworkLogViewColumns} | 156 * @this {WebInspector.NetworkLogViewColumns} |
| 157 */ | 157 */ |
| 158 function handleContextMenu(event) { | 158 function handleContextMenu(event) { |
| 159 var request = this._timelineColumn.getRequestFromPoint(event.offsetX, even
t.offsetY); | 159 var request = this._waterfallColumn.getRequestFromPoint(event.offsetX, eve
nt.offsetY); |
| 160 if (!request) | 160 if (!request) |
| 161 return; | 161 return; |
| 162 var contextMenu = new WebInspector.ContextMenu(event); | 162 var contextMenu = new WebInspector.ContextMenu(event); |
| 163 this._networkLogView.handleContextMenuForRequest(contextMenu, request); | 163 this._networkLogView.handleContextMenuForRequest(contextMenu, request); |
| 164 contextMenu.show(); | 164 contextMenu.show(); |
| 165 } | 165 } |
| 166 } | 166 } |
| 167 | 167 |
| 168 /** | 168 /** |
| 169 * @param {boolean} shouldConsume | 169 * @param {boolean} shouldConsume |
| 170 * @param {!Event} event | 170 * @param {!Event} event |
| 171 */ | 171 */ |
| 172 _onMouseWheel(shouldConsume, event) { | 172 _onMouseWheel(shouldConsume, event) { |
| 173 if (shouldConsume) | 173 if (shouldConsume) |
| 174 event.consume(true); | 174 event.consume(true); |
| 175 this._activeScroller.scrollTop -= event.wheelDeltaY; | 175 this._activeScroller.scrollTop -= event.wheelDeltaY; |
| 176 this._syncScrollers(); | 176 this._syncScrollers(); |
| 177 this._networkLogView.setHoveredRequest( | 177 this._networkLogView.setHoveredRequest( |
| 178 this._timelineColumn.getRequestFromPoint(event.offsetX, event.offsetY),
event.shiftKey); | 178 this._waterfallColumn.getRequestFromPoint(event.offsetX, event.offsetY),
event.shiftKey); |
| 179 } | 179 } |
| 180 | 180 |
| 181 _syncScrollers() { | 181 _syncScrollers() { |
| 182 if (!this._timelineColumn.isShowing()) | 182 if (!this._waterfallColumn.isShowing()) |
| 183 return; | 183 return; |
| 184 this._timelineScrollerContent.style.height = this._dataGridScroller.scrollHe
ight + 'px'; | 184 this._waterfallScrollerContent.style.height = this._dataGridScroller.scrollH
eight + 'px'; |
| 185 this._updateScrollerWidthIfNeeded(); | 185 this._updateScrollerWidthIfNeeded(); |
| 186 this._dataGridScroller.scrollTop = this._timelineScroller.scrollTop; | 186 this._dataGridScroller.scrollTop = this._waterfallScroller.scrollTop; |
| 187 } | 187 } |
| 188 | 188 |
| 189 _updateScrollerWidthIfNeeded() { | 189 _updateScrollerWidthIfNeeded() { |
| 190 if (this._timelineScrollerWidthIsStale) { | 190 if (this._waterfallScrollerWidthIsStale) { |
| 191 this._timelineScrollerWidthIsStale = false; | 191 this._waterfallScrollerWidthIsStale = false; |
| 192 this._timelineColumn.setRightPadding( | 192 this._waterfallColumn.setRightPadding( |
| 193 this._timelineScroller.offsetWidth - this._timelineScrollerContent.off
setWidth); | 193 this._waterfallScroller.offsetWidth - this._waterfallScrollerContent.o
ffsetWidth); |
| 194 } | 194 } |
| 195 } | 195 } |
| 196 | 196 |
| 197 _redrawTimelineColumn() { | 197 _redrawWaterfallColumn() { |
| 198 if (!this._timelineRequestsAreStale) { | 198 if (!this._waterfallRequestsAreStale) { |
| 199 this._updateScrollerWidthIfNeeded(); | 199 this._updateScrollerWidthIfNeeded(); |
| 200 this._timelineColumn.update( | 200 this._waterfallColumn.update( |
| 201 this._activeScroller.scrollTop, this._eventDividersShown ? this._event
Dividers : undefined); | 201 this._activeScroller.scrollTop, this._eventDividersShown ? this._event
Dividers : undefined); |
| 202 return; | 202 return; |
| 203 } | 203 } |
| 204 var currentNode = this._dataGrid.rootNode(); | 204 var currentNode = this._dataGrid.rootNode(); |
| 205 /** @type {!WebInspector.NetworkTimelineColumn.RequestData} */ | 205 /** @type {!WebInspector.NetworkWaterfallColumn.RequestData} */ |
| 206 var requestData = {requests: [], navigationRequest: null}; | 206 var requestData = {requests: [], navigationRequest: null}; |
| 207 while (currentNode = currentNode.traverseNextNode(true)) { | 207 while (currentNode = currentNode.traverseNextNode(true)) { |
| 208 if (currentNode.isNavigationRequest()) | 208 if (currentNode.isNavigationRequest()) |
| 209 requestData.navigationRequest = currentNode.request(); | 209 requestData.navigationRequest = currentNode.request(); |
| 210 requestData.requests.push(currentNode.request()); | 210 requestData.requests.push(currentNode.request()); |
| 211 } | 211 } |
| 212 this._timelineColumn.update(this._activeScroller.scrollTop, this._eventDivid
ers, requestData); | 212 this._waterfallColumn.update(this._activeScroller.scrollTop, this._eventDivi
ders, requestData); |
| 213 } | 213 } |
| 214 | 214 |
| 215 /** | 215 /** |
| 216 * @param {?WebInspector.NetworkRequest} request | 216 * @param {?WebInspector.NetworkRequest} request |
| 217 * @param {boolean} highlightInitiatorChain | 217 * @param {boolean} highlightInitiatorChain |
| 218 */ | 218 */ |
| 219 setHoveredRequest(request, highlightInitiatorChain) { | 219 setHoveredRequest(request, highlightInitiatorChain) { |
| 220 this._timelineColumn.setHoveredRequest(request, highlightInitiatorChain); | 220 this._waterfallColumn.setHoveredRequest(request, highlightInitiatorChain); |
| 221 } | 221 } |
| 222 | 222 |
| 223 _createTimelineHeader() { | 223 _createWaterfallHeader() { |
| 224 this._timelineHeaderElement = this._timelineColumn.contentElement.createChil
d('div', 'network-timeline-header'); | 224 this._waterfallHeaderElement = this._waterfallColumn.contentElement.createCh
ild('div', 'network-waterfall-header'); |
| 225 this._timelineHeaderElement.addEventListener('click', timelineHeaderClicked.
bind(this)); | 225 this._waterfallHeaderElement.addEventListener('click', waterfallHeaderClicke
d.bind(this)); |
| 226 this._timelineHeaderElement.addEventListener( | 226 this._waterfallHeaderElement.addEventListener( |
| 227 'contextmenu', event => this._innerHeaderContextMenu(new WebInspector.Co
ntextMenu(event))); | 227 'contextmenu', event => this._innerHeaderContextMenu(new WebInspector.Co
ntextMenu(event))); |
| 228 var innerElement = this._timelineHeaderElement.createChild('div'); | 228 var innerElement = this._waterfallHeaderElement.createChild('div'); |
| 229 innerElement.textContent = WebInspector.UIString('Waterfall'); | 229 innerElement.textContent = WebInspector.UIString('Waterfall'); |
| 230 this._timelineColumnSortIcon = this._timelineHeaderElement.createChild('div'
, 'sort-order-icon-container') | 230 this._waterfallColumnSortIcon = this._waterfallHeaderElement.createChild('di
v', 'sort-order-icon-container') |
| 231 .createChild('div', 'sort-order-icon'); | 231 .createChild('div', 'sort-order-icon'); |
| 232 | 232 |
| 233 /** | 233 /** |
| 234 * @this {WebInspector.NetworkLogViewColumns} | 234 * @this {WebInspector.NetworkLogViewColumns} |
| 235 */ | 235 */ |
| 236 function timelineHeaderClicked() { | 236 function waterfallHeaderClicked() { |
| 237 var sortOrders = WebInspector.DataGrid.Order; | 237 var sortOrders = WebInspector.DataGrid.Order; |
| 238 var sortOrder = | 238 var sortOrder = |
| 239 this._dataGrid.sortOrder() === sortOrders.Ascending ? sortOrders.Desce
nding : sortOrders.Ascending; | 239 this._dataGrid.sortOrder() === sortOrders.Ascending ? sortOrders.Desce
nding : sortOrders.Ascending; |
| 240 this._dataGrid.markColumnAsSortedBy('timeline', sortOrder); | 240 this._dataGrid.markColumnAsSortedBy('waterfall', sortOrder); |
| 241 this._sortHandler(); | 241 this._sortHandler(); |
| 242 } | 242 } |
| 243 } | 243 } |
| 244 | 244 |
| 245 /** | 245 /** |
| 246 * @param {!WebInspector.NetworkTimeCalculator} x | 246 * @param {!WebInspector.NetworkTimeCalculator} x |
| 247 */ | 247 */ |
| 248 setCalculator(x) { | 248 setCalculator(x) { |
| 249 this._timelineColumn.setCalculator(x); | 249 this._waterfallColumn.setCalculator(x); |
| 250 } | 250 } |
| 251 | 251 |
| 252 dataChanged() { | 252 dataChanged() { |
| 253 this._timelineRequestsAreStale = true; | 253 this._waterfallRequestsAreStale = true; |
| 254 } | 254 } |
| 255 | 255 |
| 256 _updateRowsSize() { | 256 _updateRowsSize() { |
| 257 var largeRows = !!this._networkLogLargeRowsSetting.get(); | 257 var largeRows = !!this._networkLogLargeRowsSetting.get(); |
| 258 this._dataGrid.element.classList.toggle('small', !largeRows); | 258 this._dataGrid.element.classList.toggle('small', !largeRows); |
| 259 this._dataGrid.scheduleUpdate(); | 259 this._dataGrid.scheduleUpdate(); |
| 260 | 260 |
| 261 this._timelineScrollerWidthIsStale = true; | 261 this._waterfallScrollerWidthIsStale = true; |
| 262 this._timelineColumn.setRowHeight(this._networkLogView.rowHeight()); | 262 this._waterfallColumn.setRowHeight(this._networkLogView.rowHeight()); |
| 263 this._timelineScroller.classList.toggle('small', !largeRows); | 263 this._waterfallScroller.classList.toggle('small', !largeRows); |
| 264 this._timelineHeaderElement.classList.toggle('small', !largeRows); | 264 this._waterfallHeaderElement.classList.toggle('small', !largeRows); |
| 265 this._timelineColumn.setHeaderHeight(this._timelineScroller.offsetTop); | 265 this._waterfallColumn.setHeaderHeight(this._waterfallScroller.offsetTop); |
| 266 } | 266 } |
| 267 | 267 |
| 268 /** | 268 /** |
| 269 * @param {!Element} element | 269 * @param {!Element} element |
| 270 */ | 270 */ |
| 271 show(element) { | 271 show(element) { |
| 272 this._splitWidget.show(element); | 272 this._splitWidget.show(element); |
| 273 } | 273 } |
| 274 | 274 |
| 275 /** | 275 /** |
| 276 * @return {!WebInspector.SortableDataGrid} dataGrid | 276 * @return {!WebInspector.SortableDataGrid} dataGrid |
| 277 */ | 277 */ |
| 278 dataGrid() { | 278 dataGrid() { |
| 279 return this._dataGrid; | 279 return this._dataGrid; |
| 280 } | 280 } |
| 281 | 281 |
| 282 sortByCurrentColumn() { | 282 sortByCurrentColumn() { |
| 283 this._sortHandler(); | 283 this._sortHandler(); |
| 284 } | 284 } |
| 285 | 285 |
| 286 _sortHandler() { | 286 _sortHandler() { |
| 287 var columnId = this._dataGrid.sortColumnId(); | 287 var columnId = this._dataGrid.sortColumnId(); |
| 288 this._networkLogView.removeAllNodeHighlights(); | 288 this._networkLogView.removeAllNodeHighlights(); |
| 289 if (columnId === 'timeline') { | 289 if (columnId === 'waterfall') { |
| 290 this._timelineColumnSortIcon.classList.remove('sort-ascending', 'sort-desc
ending'); | 290 this._waterfallColumnSortIcon.classList.remove('sort-ascending', 'sort-des
cending'); |
| 291 | 291 |
| 292 if (this._dataGrid.sortOrder() === WebInspector.DataGrid.Order.Ascending) | 292 if (this._dataGrid.sortOrder() === WebInspector.DataGrid.Order.Ascending) |
| 293 this._timelineColumnSortIcon.classList.add('sort-ascending'); | 293 this._waterfallColumnSortIcon.classList.add('sort-ascending'); |
| 294 else | 294 else |
| 295 this._timelineColumnSortIcon.classList.add('sort-descending'); | 295 this._waterfallColumnSortIcon.classList.add('sort-descending'); |
| 296 | 296 |
| 297 this._timelineRequestsAreStale = true; | 297 this._waterfallRequestsAreStale = true; |
| 298 var sortFunction = | 298 var sortFunction = |
| 299 WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null,
this._activeTimelineSortId); | 299 WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null,
this._activeWaterfallSortId); |
| 300 this._dataGrid.sortNodes(sortFunction, !this._dataGrid.isSortOrderAscendin
g()); | 300 this._dataGrid.sortNodes(sortFunction, !this._dataGrid.isSortOrderAscendin
g()); |
| 301 return; | 301 return; |
| 302 } | 302 } |
| 303 | 303 |
| 304 var columnConfig = this._columns.find(columnConfig => columnConfig.id === co
lumnId); | 304 var columnConfig = this._columns.find(columnConfig => columnConfig.id === co
lumnId); |
| 305 if (!columnConfig || !columnConfig.sortingFunction) | 305 if (!columnConfig || !columnConfig.sortingFunction) |
| 306 return; | 306 return; |
| 307 | 307 |
| 308 this._dataGrid.sortNodes(columnConfig.sortingFunction, !this._dataGrid.isSor
tOrderAscending()); | 308 this._dataGrid.sortNodes(columnConfig.sortingFunction, !this._dataGrid.isSor
tOrderAscending()); |
| 309 this._networkLogView.dataGridSorted(); | 309 this._networkLogView.dataGridSorted(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 327 */ | 327 */ |
| 328 switchViewMode(gridMode) { | 328 switchViewMode(gridMode) { |
| 329 if (this._gridMode === gridMode) | 329 if (this._gridMode === gridMode) |
| 330 return; | 330 return; |
| 331 this._gridMode = gridMode; | 331 this._gridMode = gridMode; |
| 332 | 332 |
| 333 if (gridMode) { | 333 if (gridMode) { |
| 334 if (this._dataGrid.selectedNode) | 334 if (this._dataGrid.selectedNode) |
| 335 this._dataGrid.selectedNode.selected = false; | 335 this._dataGrid.selectedNode.selected = false; |
| 336 this._splitWidget.showBoth(); | 336 this._splitWidget.showBoth(); |
| 337 this._activeScroller = this._timelineScroller; | 337 this._activeScroller = this._waterfallScroller; |
| 338 this._timelineScroller.scrollTop = this._dataGridScroller.scrollTop; | 338 this._waterfallScroller.scrollTop = this._dataGridScroller.scrollTop; |
| 339 this._dataGrid.setScrollContainer(this._timelineScroller); | 339 this._dataGrid.setScrollContainer(this._waterfallScroller); |
| 340 } else { | 340 } else { |
| 341 this._networkLogView.removeAllNodeHighlights(); | 341 this._networkLogView.removeAllNodeHighlights(); |
| 342 this._splitWidget.hideSidebar(); | 342 this._splitWidget.hideSidebar(); |
| 343 this._activeScroller = this._dataGridScroller; | 343 this._activeScroller = this._dataGridScroller; |
| 344 this._dataGrid.setScrollContainer(this._dataGridScroller); | 344 this._dataGrid.setScrollContainer(this._dataGridScroller); |
| 345 } | 345 } |
| 346 this._networkLogView.element.classList.toggle('brief-mode', !gridMode); | 346 this._networkLogView.element.classList.toggle('brief-mode', !gridMode); |
| 347 this._updateColumns(); | 347 this._updateColumns(); |
| 348 } | 348 } |
| 349 | 349 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 responseSubMenu.appendCheckboxItem( | 412 responseSubMenu.appendCheckboxItem( |
| 413 columnConfig.title, this._toggleColumnVisibility.bind(this, columnConf
ig), columnConfig.visible); | 413 columnConfig.title, this._toggleColumnVisibility.bind(this, columnConf
ig), columnConfig.visible); |
| 414 } | 414 } |
| 415 | 415 |
| 416 responseSubMenu.appendSeparator(); | 416 responseSubMenu.appendSeparator(); |
| 417 responseSubMenu.appendItem( | 417 responseSubMenu.appendItem( |
| 418 WebInspector.UIString('Manage Header Columns\u2026'), this._manageCustom
HeaderDialog.bind(this)); | 418 WebInspector.UIString('Manage Header Columns\u2026'), this._manageCustom
HeaderDialog.bind(this)); |
| 419 | 419 |
| 420 contextMenu.appendSeparator(); | 420 contextMenu.appendSeparator(); |
| 421 | 421 |
| 422 var timelineSortIds = WebInspector.NetworkLogViewColumns.TimelineSortIds; | 422 var waterfallSortIds = WebInspector.NetworkLogViewColumns.WaterfallSortIds; |
| 423 var timelineSubMenu = contextMenu.appendSubMenuItem(WebInspector.UIString('W
aterfall')); | 423 var waterfallSubMenu = contextMenu.appendSubMenuItem(WebInspector.UIString('
Waterfall')); |
| 424 timelineSubMenu.appendCheckboxItem( | 424 waterfallSubMenu.appendCheckboxItem( |
| 425 WebInspector.UIString('Start Time'), setTimelineMode.bind(this, timeline
SortIds.StartTime), | 425 WebInspector.UIString('Start Time'), setWaterfallMode.bind(this, waterfa
llSortIds.StartTime), |
| 426 this._activeTimelineSortId === timelineSortIds.StartTime); | 426 this._activeWaterfallSortId === waterfallSortIds.StartTime); |
| 427 timelineSubMenu.appendCheckboxItem( | 427 waterfallSubMenu.appendCheckboxItem( |
| 428 WebInspector.UIString('Response Time'), setTimelineMode.bind(this, timel
ineSortIds.ResponseTime), | 428 WebInspector.UIString('Response Time'), setWaterfallMode.bind(this, wate
rfallSortIds.ResponseTime), |
| 429 this._activeTimelineSortId === timelineSortIds.ResponseTime); | 429 this._activeWaterfallSortId === waterfallSortIds.ResponseTime); |
| 430 timelineSubMenu.appendCheckboxItem( | 430 waterfallSubMenu.appendCheckboxItem( |
| 431 WebInspector.UIString('End Time'), setTimelineMode.bind(this, timelineSo
rtIds.EndTime), | 431 WebInspector.UIString('End Time'), setWaterfallMode.bind(this, waterfall
SortIds.EndTime), |
| 432 this._activeTimelineSortId === timelineSortIds.EndTime); | 432 this._activeWaterfallSortId === waterfallSortIds.EndTime); |
| 433 timelineSubMenu.appendCheckboxItem( | 433 waterfallSubMenu.appendCheckboxItem( |
| 434 WebInspector.UIString('Total Duration'), setTimelineMode.bind(this, time
lineSortIds.Duration), | 434 WebInspector.UIString('Total Duration'), setWaterfallMode.bind(this, wat
erfallSortIds.Duration), |
| 435 this._activeTimelineSortId === timelineSortIds.Duration); | 435 this._activeWaterfallSortId === waterfallSortIds.Duration); |
| 436 timelineSubMenu.appendCheckboxItem( | 436 waterfallSubMenu.appendCheckboxItem( |
| 437 WebInspector.UIString('Latency'), setTimelineMode.bind(this, timelineSor
tIds.Latency), | 437 WebInspector.UIString('Latency'), setWaterfallMode.bind(this, waterfallS
ortIds.Latency), |
| 438 this._activeTimelineSortId === timelineSortIds.Latency); | 438 this._activeWaterfallSortId === waterfallSortIds.Latency); |
| 439 | 439 |
| 440 contextMenu.show(); | 440 contextMenu.show(); |
| 441 | 441 |
| 442 /** | 442 /** |
| 443 * @param {!WebInspector.NetworkLogViewColumns.TimelineSortIds} sortId | 443 * @param {!WebInspector.NetworkLogViewColumns.WaterfallSortIds} sortId |
| 444 * @this {WebInspector.NetworkLogViewColumns} | 444 * @this {WebInspector.NetworkLogViewColumns} |
| 445 */ | 445 */ |
| 446 function setTimelineMode(sortId) { | 446 function setWaterfallMode(sortId) { |
| 447 var calculator = this._calculatorsMap.get(WebInspector.NetworkLogViewColum
ns._calculatorTypes.Time); | 447 var calculator = this._calculatorsMap.get(WebInspector.NetworkLogViewColum
ns._calculatorTypes.Time); |
| 448 var timelineSortIds = WebInspector.NetworkLogViewColumns.TimelineSortIds; | 448 var waterfallSortIds = WebInspector.NetworkLogViewColumns.WaterfallSortIds
; |
| 449 if (sortId === timelineSortIds.Duration || sortId === timelineSortIds.Late
ncy) | 449 if (sortId === waterfallSortIds.Duration || sortId === waterfallSortIds.La
tency) |
| 450 calculator = this._calculatorsMap.get(WebInspector.NetworkLogViewColumns
._calculatorTypes.Duration); | 450 calculator = this._calculatorsMap.get(WebInspector.NetworkLogViewColumns
._calculatorTypes.Duration); |
| 451 this._networkLogView.setCalculator(calculator); | 451 this._networkLogView.setCalculator(calculator); |
| 452 | 452 |
| 453 this._activeTimelineSortId = sortId; | 453 this._activeWaterfallSortId = sortId; |
| 454 this._dataGrid.markColumnAsSortedBy('timeline', WebInspector.DataGrid.Orde
r.Ascending); | 454 this._dataGrid.markColumnAsSortedBy('waterfall', WebInspector.DataGrid.Ord
er.Ascending); |
| 455 this._sortHandler(); | 455 this._sortHandler(); |
| 456 } | 456 } |
| 457 } | 457 } |
| 458 | 458 |
| 459 _manageCustomHeaderDialog() { | 459 _manageCustomHeaderDialog() { |
| 460 var customHeaders = []; | 460 var customHeaders = []; |
| 461 for (var columnConfig of this._columns) { | 461 for (var columnConfig of this._columns) { |
| 462 if (columnConfig.isResponseHeader) | 462 if (columnConfig.isResponseHeader) |
| 463 customHeaders.push({title: columnConfig.title, editable: columnConfig.is
CustomHeader}); | 463 customHeaders.push({title: columnConfig.title, editable: columnConfig.is
CustomHeader}); |
| 464 } | 464 } |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 default: | 592 default: |
| 593 return; | 593 return; |
| 594 } | 594 } |
| 595 var currentTimes = this._eventDividers.get(color) || []; | 595 var currentTimes = this._eventDividers.get(color) || []; |
| 596 this._eventDividers.set(color, currentTimes.concat(times)); | 596 this._eventDividers.set(color, currentTimes.concat(times)); |
| 597 this._networkLogView.scheduleRefresh(); | 597 this._networkLogView.scheduleRefresh(); |
| 598 } | 598 } |
| 599 | 599 |
| 600 hideEventDividers() { | 600 hideEventDividers() { |
| 601 this._eventDividersShown = true; | 601 this._eventDividersShown = true; |
| 602 this._redrawTimelineColumn(); | 602 this._redrawWaterfallColumn(); |
| 603 } | 603 } |
| 604 | 604 |
| 605 showEventDividers() { | 605 showEventDividers() { |
| 606 this._eventDividersShown = false; | 606 this._eventDividersShown = false; |
| 607 this._redrawTimelineColumn(); | 607 this._redrawWaterfallColumn(); |
| 608 } | 608 } |
| 609 | 609 |
| 610 /** | 610 /** |
| 611 * @param {number} time | 611 * @param {number} time |
| 612 */ | 612 */ |
| 613 selectFilmStripFrame(time) { | 613 selectFilmStripFrame(time) { |
| 614 this._eventDividers.set(WebInspector.NetworkLogViewColumns._filmStripDivider
Color, [time]); | 614 this._eventDividers.set(WebInspector.NetworkLogViewColumns._filmStripDivider
Color, [time]); |
| 615 this._redrawTimelineColumn(); | 615 this._redrawWaterfallColumn(); |
| 616 } | 616 } |
| 617 | 617 |
| 618 clearFilmStripFrame() { | 618 clearFilmStripFrame() { |
| 619 this._eventDividers.delete(WebInspector.NetworkLogViewColumns._filmStripDivi
derColor); | 619 this._eventDividers.delete(WebInspector.NetworkLogViewColumns._filmStripDivi
derColor); |
| 620 this._redrawTimelineColumn(); | 620 this._redrawWaterfallColumn(); |
| 621 } | 621 } |
| 622 }; | 622 }; |
| 623 | 623 |
| 624 WebInspector.NetworkLogViewColumns._initialSortColumn = 'timeline'; | 624 WebInspector.NetworkLogViewColumns._initialSortColumn = 'waterfall'; |
| 625 | 625 |
| 626 /** | 626 /** |
| 627 * @typedef {{ | 627 * @typedef {{ |
| 628 * id: string, | 628 * id: string, |
| 629 * title: string, | 629 * title: string, |
| 630 * titleDOMFragment: (!DocumentFragment|undefined), | 630 * titleDOMFragment: (!DocumentFragment|undefined), |
| 631 * subtitle: (string|null), | 631 * subtitle: (string|null), |
| 632 * visible: boolean, | 632 * visible: boolean, |
| 633 * weight: number, | 633 * weight: number, |
| 634 * hideable: boolean, | 634 * hideable: boolean, |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 812 title: WebInspector.UIString('Server'), | 812 title: WebInspector.UIString('Server'), |
| 813 sortingFunction: WebInspector.NetworkDataGridNode.ResponseHeaderStringCompar
ator.bind(null, 'server') | 813 sortingFunction: WebInspector.NetworkDataGridNode.ResponseHeaderStringCompar
ator.bind(null, 'server') |
| 814 }, | 814 }, |
| 815 { | 815 { |
| 816 id: 'vary', | 816 id: 'vary', |
| 817 isResponseHeader: true, | 817 isResponseHeader: true, |
| 818 title: WebInspector.UIString('Vary'), | 818 title: WebInspector.UIString('Vary'), |
| 819 sortingFunction: WebInspector.NetworkDataGridNode.ResponseHeaderStringCompar
ator.bind(null, 'vary') | 819 sortingFunction: WebInspector.NetworkDataGridNode.ResponseHeaderStringCompar
ator.bind(null, 'vary') |
| 820 }, | 820 }, |
| 821 // This header is a placeholder to let datagrid know that it can be sorted by
this column, but never shown. | 821 // This header is a placeholder to let datagrid know that it can be sorted by
this column, but never shown. |
| 822 {id: 'timeline', title: '', visible: false, hideable: false} | 822 {id: 'waterfall', title: '', visible: false, hideable: false} |
| 823 ]; | 823 ]; |
| 824 | 824 |
| 825 WebInspector.NetworkLogViewColumns._filmStripDividerColor = '#fccc49'; | 825 WebInspector.NetworkLogViewColumns._filmStripDividerColor = '#fccc49'; |
| 826 | 826 |
| 827 /** | 827 /** |
| 828 * @enum {string} | 828 * @enum {string} |
| 829 */ | 829 */ |
| 830 WebInspector.NetworkLogViewColumns.TimelineSortIds = { | 830 WebInspector.NetworkLogViewColumns.WaterfallSortIds = { |
| 831 StartTime: 'startTime', | 831 StartTime: 'startTime', |
| 832 ResponseTime: 'responseReceivedTime', | 832 ResponseTime: 'responseReceivedTime', |
| 833 EndTime: 'endTime', | 833 EndTime: 'endTime', |
| 834 Duration: 'duration', | 834 Duration: 'duration', |
| 835 Latency: 'latency' | 835 Latency: 'latency' |
| 836 }; | 836 }; |
| OLD | NEW |