Chromium Code Reviews| 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 14 matching lines...) Expand all Loading... | |
| 25 this._eventDividersShown = false; | 25 this._eventDividersShown = false; |
| 26 | 26 |
| 27 this._gridMode = true; | 27 this._gridMode = true; |
| 28 | 28 |
| 29 /** @type {!Array.<!Network.NetworkLogViewColumns.Descriptor>} */ | 29 /** @type {!Array.<!Network.NetworkLogViewColumns.Descriptor>} */ |
| 30 this._columns = []; | 30 this._columns = []; |
| 31 | 31 |
| 32 this._waterfallRequestsAreStale = false; | 32 this._waterfallRequestsAreStale = false; |
| 33 this._waterfallScrollerWidthIsStale = true; | 33 this._waterfallScrollerWidthIsStale = true; |
| 34 | 34 |
| 35 /** @type {?ProductRegistry.Registry} */ | |
| 36 this._productRegistryInstance = null; | |
| 37 | |
| 38 /** @type {!Components.Linkifier} */ | 35 /** @type {!Components.Linkifier} */ |
| 39 this._popupLinkifier = new Components.Linkifier(); | 36 this._popupLinkifier = new Components.Linkifier(); |
| 40 | 37 |
| 41 /** @type {!Map<string, !Network.NetworkTimeCalculator>} */ | 38 /** @type {!Map<string, !Network.NetworkTimeCalculator>} */ |
| 42 this._calculatorsMap = new Map(); | 39 this._calculatorsMap = new Map(); |
| 43 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Time , timeCalculator); | 40 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Time , timeCalculator); |
| 44 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Dura tion, durationCalculator); | 41 this._calculatorsMap.set(Network.NetworkLogViewColumns._calculatorTypes.Dura tion, durationCalculator); |
| 45 | 42 |
| 46 this._setupDataGrid(); | 43 this._setupDataGrid(); |
| 47 this._setupWaterfall(); | 44 this._setupWaterfall(); |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 72 | 69 |
| 73 reset() { | 70 reset() { |
| 74 if (this._popoverHelper) | 71 if (this._popoverHelper) |
| 75 this._popoverHelper.hidePopover(); | 72 this._popoverHelper.hidePopover(); |
| 76 this._eventDividers.clear(); | 73 this._eventDividers.clear(); |
| 77 } | 74 } |
| 78 | 75 |
| 79 _setupDataGrid() { | 76 _setupDataGrid() { |
| 80 var defaultColumns = Network.NetworkLogViewColumns._defaultColumns; | 77 var defaultColumns = Network.NetworkLogViewColumns._defaultColumns; |
| 81 | 78 |
| 82 if (Runtime.experiments.isEnabled('networkGroupingRequests')) { | |
| 83 defaultColumns.splice(1, 0, /** @type {!Network.NetworkLogViewColumns.Desc riptor} */ ({ | |
| 84 id: 'product', | |
| 85 title: Common.UIString('Product'), | |
| 86 visible: true | |
| 87 })); | |
| 88 } | |
| 89 | |
| 90 var defaultColumnConfig = Network.NetworkLogViewColumns._defaultColumnConfig ; | 79 var defaultColumnConfig = Network.NetworkLogViewColumns._defaultColumnConfig ; |
| 91 | 80 |
| 92 this._columns = /** @type {!Array<!Network.NetworkLogViewColumns.Descriptor> } */ ([]); | 81 this._columns = /** @type {!Array<!Network.NetworkLogViewColumns.Descriptor> } */ ([]); |
| 93 for (var currentConfigColumn of defaultColumns) { | 82 for (var currentConfigColumn of defaultColumns) { |
| 94 var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} * / ( | 83 var columnConfig = /** @type {!Network.NetworkLogViewColumns.Descriptor} * / ( |
| 95 Object.assign({}, defaultColumnConfig, currentConfigColumn)); | 84 Object.assign({}, defaultColumnConfig, currentConfigColumn)); |
| 96 columnConfig.id = columnConfig.id; | 85 columnConfig.id = columnConfig.id; |
| 97 if (columnConfig.subtitle) | 86 if (columnConfig.subtitle) |
| 98 columnConfig.titleDOMFragment = this._makeHeaderFragment(columnConfig.ti tle, columnConfig.subtitle); | 87 columnConfig.titleDOMFragment = this._makeHeaderFragment(columnConfig.ti tle, columnConfig.subtitle); |
| 99 this._columns.push(columnConfig); | 88 this._columns.push(columnConfig); |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 281 if (columnId === 'waterfall') { | 270 if (columnId === 'waterfall') { |
| 282 if (this._dataGrid.sortOrder() === DataGrid.DataGrid.Order.Ascending) | 271 if (this._dataGrid.sortOrder() === DataGrid.DataGrid.Order.Ascending) |
| 283 this._waterfallColumnSortIcon.setIconType('smallicon-triangle-up'); | 272 this._waterfallColumnSortIcon.setIconType('smallicon-triangle-up'); |
| 284 else | 273 else |
| 285 this._waterfallColumnSortIcon.setIconType('smallicon-triangle-down'); | 274 this._waterfallColumnSortIcon.setIconType('smallicon-triangle-down'); |
| 286 | 275 |
| 287 var sortFunction = Network.NetworkRequestNode.RequestPropertyComparator.bi nd(null, this._activeWaterfallSortId); | 276 var sortFunction = Network.NetworkRequestNode.RequestPropertyComparator.bi nd(null, this._activeWaterfallSortId); |
| 288 this._dataGrid.sortNodes(sortFunction, !this._dataGrid.isSortOrderAscendin g()); | 277 this._dataGrid.sortNodes(sortFunction, !this._dataGrid.isSortOrderAscendin g()); |
| 289 this._networkLogView.dataGridSorted(); | 278 this._networkLogView.dataGridSorted(); |
| 290 return; | 279 return; |
| 291 } else if (columnId === 'product' && !this._productRegistryInstance) { | |
| 292 ProductRegistry.instance().then(productRegistry => { | |
| 293 this._productRegistryInstance = productRegistry; | |
| 294 var columnConfig = this._columns.find(columnConfig => columnConfig.id == = columnId); | |
| 295 if (!columnConfig) | |
| 296 return; | |
| 297 columnConfig.sortingFunction = Network.NetworkRequestNode.ProductCompara tor.bind(null, productRegistry); | |
| 298 if (this._dataGrid.sortColumnId() === 'product') | |
| 299 this._sortHandler(); | |
| 300 }); | |
| 301 return; | |
| 302 } | 280 } |
| 303 this._waterfallColumnSortIcon.setIconType(''); | 281 this._waterfallColumnSortIcon.setIconType(''); |
| 304 | 282 |
| 305 var columnConfig = this._columns.find(columnConfig => columnConfig.id === co lumnId); | 283 var columnConfig = this._columns.find(columnConfig => columnConfig.id === co lumnId); |
| 306 if (!columnConfig || !columnConfig.sortingFunction) | 284 if (!columnConfig || !columnConfig.sortingFunction) |
| 307 return; | 285 return; |
| 308 | 286 |
| 309 this._dataGrid.sortNodes(columnConfig.sortingFunction, !this._dataGrid.isSor tOrderAscending()); | 287 this._dataGrid.sortNodes(columnConfig.sortingFunction, !this._dataGrid.isSor tOrderAscending()); |
| 310 this._networkLogView.dataGridSorted(); | 288 this._networkLogView.dataGridSorted(); |
| 311 } | 289 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 366 this._persistantSettings.set(saveableSettings); | 344 this._persistantSettings.set(saveableSettings); |
| 367 } | 345 } |
| 368 | 346 |
| 369 _loadCustomColumnsAndSettings() { | 347 _loadCustomColumnsAndSettings() { |
| 370 var savedSettings = this._persistantSettings.get(); | 348 var savedSettings = this._persistantSettings.get(); |
| 371 var columnIds = Object.keys(savedSettings); | 349 var columnIds = Object.keys(savedSettings); |
| 372 for (var columnId of columnIds) { | 350 for (var columnId of columnIds) { |
| 373 var setting = savedSettings[columnId]; | 351 var setting = savedSettings[columnId]; |
| 374 var columnConfig = this._columns.find(columnConfig => columnConfig.id === columnId); | 352 var columnConfig = this._columns.find(columnConfig => columnConfig.id === columnId); |
| 375 if (!columnConfig) | 353 if (!columnConfig) |
| 376 columnConfig = this._addCustomHeader(setting.title, columnId); | 354 continue; |
|
allada
2017/05/11 23:58:36
This should still be needed.
pfeldman
2017/05/12 23:16:20
What does it do? I noticed that it only breaks thi
| |
| 377 if (columnConfig.hideable && typeof setting.visible === 'boolean') | 355 if (columnConfig.hideable && typeof setting.visible === 'boolean') |
| 378 columnConfig.visible = !!setting.visible; | 356 columnConfig.visible = !!setting.visible; |
| 379 if (typeof setting.title === 'string') | 357 if (typeof setting.title === 'string') |
| 380 columnConfig.title = setting.title; | 358 columnConfig.title = setting.title; |
| 381 } | 359 } |
| 382 } | 360 } |
| 383 | 361 |
| 384 /** | 362 /** |
| 385 * @param {string} title | 363 * @param {string} title |
| 386 * @param {string} subtitle | 364 * @param {string} subtitle |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 547 * @param {!Event} event | 525 * @param {!Event} event |
| 548 * @return {?UI.PopoverRequest} | 526 * @return {?UI.PopoverRequest} |
| 549 */ | 527 */ |
| 550 _getPopoverRequest(event) { | 528 _getPopoverRequest(event) { |
| 551 if (!this._gridMode) | 529 if (!this._gridMode) |
| 552 return null; | 530 return null; |
| 553 var hoveredNode = this._networkLogView.hoveredNode(); | 531 var hoveredNode = this._networkLogView.hoveredNode(); |
| 554 if (!hoveredNode) | 532 if (!hoveredNode) |
| 555 return null; | 533 return null; |
| 556 | 534 |
| 557 var anchor = event.target.enclosingNodeOrSelfWithClass('product-column'); | 535 if (hoveredNode instanceof Network.FrameGroupNode) { |
|
allada
2017/05/11 23:58:36
Lets only have the popover for the name column.
allada
2017/05/11 23:58:36
Also, can we add a TODO to not use instanceof and
pfeldman
2017/05/12 23:16:20
I'll have a new patch for the rest...
| |
| 558 if (anchor) { | 536 var frameNode = /** @type {!Network.FrameGroupNode} */ (hoveredNode); |
| 559 return { | 537 return {box: event.target.boxInWindow(), show: frameNode.handleProductPopo ver.bind(frameNode)}; |
| 560 box: anchor.boxInWindow(), | |
| 561 show: hoveredNode.handleProductPopover.bind(hoveredNode), | |
| 562 hide: this._popupLinkifier.reset.bind(this._popupLinkifier) | |
| 563 }; | |
| 564 } | 538 } |
| 565 | 539 |
| 566 anchor = event.target.enclosingNodeOrSelfWithClass('network-script-initiated '); | 540 var anchor = event.target.enclosingNodeOrSelfWithClass('network-script-initi ated'); |
| 567 if (!anchor) | 541 if (!anchor) |
| 568 return null; | 542 return null; |
| 569 var request = hoveredNode.request(); | 543 var request = hoveredNode.request(); |
| 570 var initiator = request ? request.initiator() : null; | 544 var initiator = request ? request.initiator() : null; |
| 571 if (!initiator || !initiator.stack) | 545 if (!initiator || !initiator.stack) |
| 572 return null; | 546 return null; |
| 573 return { | 547 return { |
| 574 box: anchor.boxInWindow(), | 548 box: anchor.boxInWindow(), |
| 575 show: popover => { | 549 show: popover => { |
| 576 var content = Components.DOMPresentationUtils.buildStackTracePreviewCont ents( | 550 var content = Components.DOMPresentationUtils.buildStackTracePreviewCont ents( |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 622 this._redrawWaterfallColumn(); | 596 this._redrawWaterfallColumn(); |
| 623 } | 597 } |
| 624 | 598 |
| 625 clearFilmStripFrame() { | 599 clearFilmStripFrame() { |
| 626 this._eventDividers.delete(Network.NetworkLogViewColumns._filmStripDividerCo lor); | 600 this._eventDividers.delete(Network.NetworkLogViewColumns._filmStripDividerCo lor); |
| 627 this._redrawWaterfallColumn(); | 601 this._redrawWaterfallColumn(); |
| 628 } | 602 } |
| 629 }; | 603 }; |
| 630 | 604 |
| 631 Network.NetworkLogViewColumns._initialSortColumn = 'waterfall'; | 605 Network.NetworkLogViewColumns._initialSortColumn = 'waterfall'; |
| 632 /** @type {?ProductRegistry.Registry} */ | |
| 633 Network.NetworkRequestNode._productRegistryInstance = null; | |
| 634 | 606 |
| 635 /** | 607 /** |
| 636 * @typedef {{ | 608 * @typedef {{ |
| 637 * id: string, | 609 * id: string, |
| 638 * title: string, | 610 * title: string, |
| 639 * titleDOMFragment: (!DocumentFragment|undefined), | 611 * titleDOMFragment: (!DocumentFragment|undefined), |
| 640 * subtitle: (string|null), | 612 * subtitle: (string|null), |
| 641 * visible: boolean, | 613 * visible: boolean, |
| 642 * weight: number, | 614 * weight: number, |
| 643 * hideable: boolean, | 615 * hideable: boolean, |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 836 /** | 808 /** |
| 837 * @enum {string} | 809 * @enum {string} |
| 838 */ | 810 */ |
| 839 Network.NetworkLogViewColumns.WaterfallSortIds = { | 811 Network.NetworkLogViewColumns.WaterfallSortIds = { |
| 840 StartTime: 'startTime', | 812 StartTime: 'startTime', |
| 841 ResponseTime: 'responseReceivedTime', | 813 ResponseTime: 'responseReceivedTime', |
| 842 EndTime: 'endTime', | 814 EndTime: 'endTime', |
| 843 Duration: 'duration', | 815 Duration: 'duration', |
| 844 Latency: 'latency' | 816 Latency: 'latency' |
| 845 }; | 817 }; |
| OLD | NEW |