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 |