Summary: Show async stack traces for workers. Both the single- and multi-threaded UI paths in DebuggerSidebarPanel need to account for async stack traces. Note: When showing multiple call stacks in the sidebar, styles for async boundary call frames need to account for different indentation levels.
<rdar://problem/29450172>
Created attachment 295796 [details] [Image] Updated UI
Created attachment 295821 [details] Patch
When I apply this I get errors: [Error] TypeError: this._updateSingleThreadCallStacks is not a function. (In 'this._updateSingleThreadCallStacks()', 'this._updateSingleThreadCallStacks' is undefined) _debuggerCallFramesDidChange — DebuggerSidebarPanel.js:682 dispatch — Object.js:170 dispatchEventToListeners — Object.js:177 debuggerDidPause — DebuggerManager.js:643 paused — DebuggerObserver.js:68 dispatchEvent — InspectorBackend.js:287 _dispatchEvent — Connection.js:193 dispatch — Connection.js:71 dispatch — InspectorBackend.js:151 dispatchNextQueuedMessageFromBackend — MessageDispatcher.js:42 This appears to be legit.
Comment on attachment 295821 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=295821&action=review r=me It seems _debuggerCallFramesDidChange's update single thread call stacks logic can now be eliminated! > Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.css:47 > +.tree-outline > .children > .item.call-frame.async-boundary { Maybe the .children here is not needed? > Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.css:52 > +.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary { Here it seems it might be. > Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:631 > + this._mainTargetTreeElement.selectable = !singleThreadShowing; Very clever and elegant!
Comment on attachment 295821 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=295821&action=review >> Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.css:47 >> +.tree-outline > .children > .item.call-frame.async-boundary { > > Maybe the .children here is not needed? CallFrameTreeElements are always parented by a ThreadTreeElement now. This level of specificity might be unnecessary though. >> Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js:631 >> + this._mainTargetTreeElement.selectable = !singleThreadShowing; > > Very clever and elegant! I didn't see the need for line 631 until I tried out the change and noticed what happened to keyboard navigation!
Created attachment 295890 [details] Patch for landing
Comment on attachment 295890 [details] Patch for landing Clearing flags on attachment: 295890 Committed r209213: <http://trac.webkit.org/changeset/209213>
All reviewed patches have been landed. Closing bug.