| 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 } | 115 } |
| 116 | 116 |
| 117 _setupWaterfall() { | 117 _setupWaterfall() { |
| 118 this._waterfallColumn = | 118 this._waterfallColumn = |
| 119 new Network.NetworkWaterfallColumn(this._networkLogView.rowHeight(), thi
s._networkLogView.calculator()); | 119 new Network.NetworkWaterfallColumn(this._networkLogView.rowHeight(), thi
s._networkLogView.calculator()); |
| 120 | 120 |
| 121 this._waterfallColumn.element.addEventListener('contextmenu', handleContextM
enu.bind(this)); | 121 this._waterfallColumn.element.addEventListener('contextmenu', handleContextM
enu.bind(this)); |
| 122 this._waterfallColumn.element.addEventListener('mousewheel', this._onMouseWh
eel.bind(this, false), {passive: true}); | 122 this._waterfallColumn.element.addEventListener('mousewheel', this._onMouseWh
eel.bind(this, false), {passive: true}); |
| 123 this._dataGridScroller.addEventListener('mousewheel', this._onMouseWheel.bin
d(this, true), true); | 123 this._dataGridScroller.addEventListener('mousewheel', this._onMouseWheel.bin
d(this, true), true); |
| 124 | 124 |
| 125 this._waterfallColumn.element.addEventListener('mousemove', event => { |
| 126 var hoveredLogEntry = |
| 127 this._waterfallColumn.getLogEntryFromPoint(event.offsetX, event.offset
Y + event.target.offsetTop); |
| 128 this._networkLogView.setHoveredLogEntry(hoveredLogEntry, event.shiftKey); |
| 129 }, true); |
| 125 this._waterfallColumn.element.addEventListener( | 130 this._waterfallColumn.element.addEventListener( |
| 126 'mousemove', | 131 'mouseleave', this._networkLogView.setHoveredLogEntry.bind(this._network
LogView, null, false), true); |
| 127 event => this._networkLogView.setHoveredRequest( | |
| 128 this._waterfallColumn.getRequestFromPoint(event.offsetX, event.offse
tY + event.target.offsetTop), | |
| 129 event.shiftKey), | |
| 130 true); | |
| 131 this._waterfallColumn.element.addEventListener( | |
| 132 'mouseleave', this._networkLogView.setHoveredRequest.bind(this._networkL
ogView, null, false), true); | |
| 133 | 132 |
| 134 this._waterfallScroller = this._waterfallColumn.contentElement.createChild('
div', 'network-waterfall-v-scroll'); | 133 this._waterfallScroller = this._waterfallColumn.contentElement.createChild('
div', 'network-waterfall-v-scroll'); |
| 135 this._waterfallScroller.addEventListener('scroll', this._syncScrollers.bind(
this), {passive: true}); | 134 this._waterfallScroller.addEventListener('scroll', this._syncScrollers.bind(
this), {passive: true}); |
| 136 this._waterfallScrollerContent = this._waterfallScroller.createChild('div',
'network-waterfall-v-scroll-content'); | 135 this._waterfallScrollerContent = this._waterfallScroller.createChild('div',
'network-waterfall-v-scroll-content'); |
| 137 | 136 |
| 138 this._dataGrid.addEventListener(UI.DataGrid.Events.PaddingChanged, () => { | 137 this._dataGrid.addEventListener(UI.DataGrid.Events.PaddingChanged, () => { |
| 139 this._waterfallScrollerWidthIsStale = true; | 138 this._waterfallScrollerWidthIsStale = true; |
| 140 this._syncScrollers(); | 139 this._syncScrollers(); |
| 141 }); | 140 }); |
| 142 this._dataGrid.addEventListener( | 141 this._dataGrid.addEventListener( |
| 143 UI.ViewportDataGrid.Events.ViewportCalculated, this._redrawWaterfallColu
mn.bind(this)); | 142 UI.ViewportDataGrid.Events.ViewportCalculated, this._redrawWaterfallColu
mn.bind(this)); |
| 144 | 143 |
| 145 this._createWaterfallHeader(); | 144 this._createWaterfallHeader(); |
| 146 this._waterfallColumn.contentElement.classList.add('network-waterfall-view')
; | 145 this._waterfallColumn.contentElement.classList.add('network-waterfall-view')
; |
| 147 | 146 |
| 148 this._waterfallColumn.setMinimumSize(100, 0); | 147 this._waterfallColumn.setMinimumSize(100, 0); |
| 149 this._splitWidget.setSidebarWidget(this._waterfallColumn); | 148 this._splitWidget.setSidebarWidget(this._waterfallColumn); |
| 150 | 149 |
| 151 this.switchViewMode(false); | 150 this.switchViewMode(false); |
| 152 | 151 |
| 153 /** | 152 /** |
| 154 * @param {!Event} event | 153 * @param {!Event} event |
| 155 * @this {Network.NetworkLogViewColumns} | 154 * @this {Network.NetworkLogViewColumns} |
| 156 */ | 155 */ |
| 157 function handleContextMenu(event) { | 156 function handleContextMenu(event) { |
| 158 var request = this._waterfallColumn.getRequestFromPoint(event.offsetX, eve
nt.offsetY); | 157 var logEntry = this._waterfallColumn.getLogEntryFromPoint(event.offsetX, e
vent.offsetY); |
| 159 if (!request) | 158 if (!logEntry) |
| 160 return; | 159 return; |
| 161 var contextMenu = new UI.ContextMenu(event); | 160 var contextMenu = new UI.ContextMenu(event); |
| 162 this._networkLogView.handleContextMenuForRequest(contextMenu, request); | 161 this._networkLogView.handleContextMenuForRequest(contextMenu, logEntry.req
uest()); |
| 163 contextMenu.show(); | 162 contextMenu.show(); |
| 164 } | 163 } |
| 165 } | 164 } |
| 166 | 165 |
| 167 /** | 166 /** |
| 168 * @param {boolean} shouldConsume | 167 * @param {boolean} shouldConsume |
| 169 * @param {!Event} event | 168 * @param {!Event} event |
| 170 */ | 169 */ |
| 171 _onMouseWheel(shouldConsume, event) { | 170 _onMouseWheel(shouldConsume, event) { |
| 172 if (shouldConsume) | 171 if (shouldConsume) |
| 173 event.consume(true); | 172 event.consume(true); |
| 174 this._activeScroller.scrollTop -= event.wheelDeltaY; | 173 this._activeScroller.scrollTop -= event.wheelDeltaY; |
| 175 this._syncScrollers(); | 174 this._syncScrollers(); |
| 176 this._networkLogView.setHoveredRequest( | 175 var logEntry = this._waterfallColumn.getLogEntryFromPoint(event.offsetX, eve
nt.offsetY); |
| 177 this._waterfallColumn.getRequestFromPoint(event.offsetX, event.offsetY),
event.shiftKey); | 176 this._networkLogView.setHoveredLogEntry(logEntry, event.shiftKey); |
| 178 } | 177 } |
| 179 | 178 |
| 180 _syncScrollers() { | 179 _syncScrollers() { |
| 181 if (!this._waterfallColumn.isShowing()) | 180 if (!this._waterfallColumn.isShowing()) |
| 182 return; | 181 return; |
| 183 this._waterfallScrollerContent.style.height = this._dataGridScroller.scrollH
eight + 'px'; | 182 this._waterfallScrollerContent.style.height = this._dataGridScroller.scrollH
eight + 'px'; |
| 184 this._updateScrollerWidthIfNeeded(); | 183 this._updateScrollerWidthIfNeeded(); |
| 185 this._dataGridScroller.scrollTop = this._waterfallScroller.scrollTop; | 184 this._dataGridScroller.scrollTop = this._waterfallScroller.scrollTop; |
| 186 } | 185 } |
| 187 | 186 |
| 188 _updateScrollerWidthIfNeeded() { | 187 _updateScrollerWidthIfNeeded() { |
| 189 if (this._waterfallScrollerWidthIsStale) { | 188 if (this._waterfallScrollerWidthIsStale) { |
| 190 this._waterfallScrollerWidthIsStale = false; | 189 this._waterfallScrollerWidthIsStale = false; |
| 191 this._waterfallColumn.setRightPadding( | 190 this._waterfallColumn.setRightPadding( |
| 192 this._waterfallScroller.offsetWidth - this._waterfallScrollerContent.o
ffsetWidth); | 191 this._waterfallScroller.offsetWidth - this._waterfallScrollerContent.o
ffsetWidth); |
| 193 } | 192 } |
| 194 } | 193 } |
| 195 | 194 |
| 196 _redrawWaterfallColumn() { | 195 _redrawWaterfallColumn() { |
| 197 if (!this._waterfallRequestsAreStale) { | 196 if (!this._waterfallRequestsAreStale) { |
| 198 this._updateScrollerWidthIfNeeded(); | 197 this._updateScrollerWidthIfNeeded(); |
| 199 this._waterfallColumn.update( | 198 this._waterfallColumn.update( |
| 200 this._activeScroller.scrollTop, this._eventDividersShown ? this._event
Dividers : undefined); | 199 this._activeScroller.scrollTop, this._eventDividersShown ? this._event
Dividers : undefined); |
| 201 return; | 200 return; |
| 202 } | 201 } |
| 203 var currentNode = this._dataGrid.rootNode(); | 202 var nodes = this._networkLogView.flatNodesList(); |
| 204 /** @type {!Network.NetworkWaterfallColumn.RequestData} */ | 203 this._waterfallColumn.update(this._activeScroller.scrollTop, this._eventDivi
ders, nodes); |
| 205 var requestData = {requests: [], navigationRequest: null}; | |
| 206 while (currentNode = currentNode.traverseNextNode(true)) { | |
| 207 if (currentNode.isNavigationRequest()) | |
| 208 requestData.navigationRequest = currentNode.request(); | |
| 209 requestData.requests.push(currentNode.request()); | |
| 210 } | |
| 211 this._waterfallColumn.update(this._activeScroller.scrollTop, this._eventDivi
ders, requestData); | |
| 212 } | 204 } |
| 213 | 205 |
| 214 /** | 206 /** |
| 215 * @param {?SDK.NetworkRequest} request | 207 * @param {?Network.NetworkLogEntry} logEntry |
| 216 * @param {boolean} highlightInitiatorChain | 208 * @param {boolean} highlightInitiatorChain |
| 217 */ | 209 */ |
| 218 setHoveredRequest(request, highlightInitiatorChain) { | 210 setHoveredLogEntry(logEntry, highlightInitiatorChain) { |
| 219 this._waterfallColumn.setHoveredRequest(request, highlightInitiatorChain); | 211 this._waterfallColumn.setHoveredLogEntry(logEntry, highlightInitiatorChain); |
| 220 } | 212 } |
| 221 | 213 |
| 222 _createWaterfallHeader() { | 214 _createWaterfallHeader() { |
| 223 this._waterfallHeaderElement = this._waterfallColumn.contentElement.createCh
ild('div', 'network-waterfall-header'); | 215 this._waterfallHeaderElement = this._waterfallColumn.contentElement.createCh
ild('div', 'network-waterfall-header'); |
| 224 this._waterfallHeaderElement.addEventListener('click', waterfallHeaderClicke
d.bind(this)); | 216 this._waterfallHeaderElement.addEventListener('click', waterfallHeaderClicke
d.bind(this)); |
| 225 this._waterfallHeaderElement.addEventListener( | 217 this._waterfallHeaderElement.addEventListener( |
| 226 'contextmenu', event => this._innerHeaderContextMenu(new UI.ContextMenu(
event))); | 218 'contextmenu', event => this._innerHeaderContextMenu(new UI.ContextMenu(
event))); |
| 227 var innerElement = this._waterfallHeaderElement.createChild('div'); | 219 var innerElement = this._waterfallHeaderElement.createChild('div'); |
| 228 innerElement.textContent = Common.UIString('Waterfall'); | 220 innerElement.textContent = Common.UIString('Waterfall'); |
| 229 this._waterfallColumnSortIcon = this._waterfallHeaderElement.createChild('di
v', 'sort-order-icon-container') | 221 this._waterfallColumnSortIcon = this._waterfallHeaderElement.createChild('di
v', 'sort-order-icon-container') |
| (...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 /** | 817 /** |
| 826 * @enum {string} | 818 * @enum {string} |
| 827 */ | 819 */ |
| 828 Network.NetworkLogViewColumns.WaterfallSortIds = { | 820 Network.NetworkLogViewColumns.WaterfallSortIds = { |
| 829 StartTime: 'startTime', | 821 StartTime: 'startTime', |
| 830 ResponseTime: 'responseReceivedTime', | 822 ResponseTime: 'responseReceivedTime', |
| 831 EndTime: 'endTime', | 823 EndTime: 'endTime', |
| 832 Duration: 'duration', | 824 Duration: 'duration', |
| 833 Latency: 'latency' | 825 Latency: 'latency' |
| 834 }; | 826 }; |
| OLD | NEW |