RESOLVED FIXED 162642
Web Inspector: TimelineDataGridNode assertions when refreshing page
https://bugs.webkit.org/show_bug.cgi?id=162642
Summary Web Inspector: TimelineDataGridNode assertions when refreshing page
Matt Baker
Reported 2016-09-27 16:07:29 PDT
Summary: TimelineDataGridNode assertions when refreshing page. NetworkSidebarPanel is marking NetworkGridContentView visible when the network timeline resets. Once marked visible, the view will try to create data grid nodes for incoming timeline records, causing layouts and causing a flood of assertions. Note: ElementsTabContentView also attempts to show a DOM tree content view when the main frame navigates. Steps to Reproduce: 1. Open Inspector 2. Make active tab something other than Network 3. Reload inspected page => Inspector² shows hundreds of asserts: [Error] Assertion Failed refreshGraph (TimelineDataGridNode.js:230) refreshGraph and: [Error] Assertion Failed refresh (TimelineRecordBar.js:238) createBar (TimelineDataGridNode.js:243) createBar createCombinedBars (TimelineRecordBar.js:87) refreshGraph (TimelineDataGridNode.js:284) refreshGraph
Attachments
Patch (11.03 KB, patch)
2016-10-01 16:20 PDT, Matt Baker
no flags
Patch for landing (11.21 KB, patch)
2016-11-18 13:28 PST, Matt Baker
no flags
Radar WebKit Bug Importer
Comment 1 2016-09-27 16:07:56 PDT
Matt Baker
Comment 2 2016-10-01 16:20:33 PDT
Timothy Hatcher
Comment 3 2016-10-05 10:38:59 PDT
Comment on attachment 290447 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=290447&action=review > Source/WebInspectorUI/ChangeLog:15 > + * UserInterface/Views/ElementsTabContentView.js: > + (WebInspector.ElementsTabContentView): > + (WebInspector.ElementsTabContentView.prototype.shown): > + Drive-by fix: defer showing the DOM content view until the tab is shown. I worry this might have some side effects. The view might need to be created eagerly to get event listeners set up early. Can you look into this more or split it out for further consideration? > Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.js:145 > + this._dataGrid.updateLayout(WebInspector.View.LayoutReason.Resize); Is this needed because the DataGrid isn't added as a subview?
Matt Baker
Comment 4 2016-11-18 12:14:45 PST
Comment on attachment 290447 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=290447&action=review >> Source/WebInspectorUI/ChangeLog:15 >> + Drive-by fix: defer showing the DOM content view until the tab is shown. > > I worry this might have some side effects. The view might need to be created eagerly to get event listeners set up early. Can you look into this more or split it out for further consideration? FrameDOMTreeContentView will be lazily created, and so will its DOMTree.Event.RootDOMNodeInvalidated listener. This is fine because the handler for the listener just requests a new DOM root node, which is always done when the content view is constructed anyway. >> Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.js:145 >> + this._dataGrid.updateLayout(WebInspector.View.LayoutReason.Resize); > > Is this needed because the DataGrid isn't added as a subview? The grid is added as a subview, this is needed because View doesn't have a shown/hidden concept.
Matt Baker
Comment 5 2016-11-18 13:28:00 PST
Created attachment 295184 [details] Patch for landing
WebKit Commit Bot
Comment 6 2016-11-18 14:04:16 PST
Comment on attachment 295184 [details] Patch for landing Clearing flags on attachment: 295184 Committed r208895: <http://trac.webkit.org/changeset/208895>
WebKit Commit Bot
Comment 7 2016-11-18 14:04:19 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.