Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(514)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js

Issue 2514123002: [Devtools] Moved NetworkWaterfallColumn to use NetworkLogEntry (Closed)
Patch Set: changes Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698