RESOLVED FIXED 234614
Web Inspector: Sources: expanding a grouping of blackboxed call frames should be persistent
https://bugs.webkit.org/show_bug.cgi?id=234614
Summary Web Inspector: Sources: expanding a grouping of blackboxed call frames should...
Devin Rousso
Reported 2021-12-22 12:52:34 PST
# STEPS TO REPRODUCE 1. inspect <http://bogojoker.com/shell/> 2. create a "click" global Event Breakpoint 3. blackbox the <http://bogojoker.com/shell/js/jquery.js> script 4. click on the down arrow in the page -> should pause on <http://bogojoker.com/shell/js/easySlider.min.js:64> with two blackboxed call frames 5. click on the "Blackboxed - 2 call frames" to expand -> should see two call frames in jquery.js 6. Step into ## EXPECTED the two jquery call frames remain as they are (i.e. are not re-collapsed) ## ACTUAL the two jquery call frames are re-collapsed # DISCUSSION If the developer has explicitly decided to show blackboxed call frames, we should respect that decision. Requiring them to re-expand after _every_ debugger action is very hostile. I think so long as the blackboxed call frames remain the same we should persist the expansion. Only if the location of those blackboxed frames changes should we re-collapse.
Attachments
Patch (15.00 KB, patch)
2022-01-04 12:38 PST, Devin Rousso
no flags
Patch (15.27 KB, patch)
2022-01-04 13:25 PST, Devin Rousso
pangle: review+
Patch (15.27 KB, patch)
2022-01-04 13:46 PST, Devin Rousso
no flags
Radar WebKit Bug Importer
Comment 1 2021-12-29 12:53:16 PST
Devin Rousso
Comment 2 2022-01-04 12:38:08 PST
Patrick Angle
Comment 3 2022-01-04 13:08:12 PST
Comment on attachment 448324 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=448324&action=review > Source/WebInspectorUI/ChangeLog:30 > + (WI.ThreadTreeElement.prototype.refresh): Can you add a line or two here describing the refactoring you did so that it is easier to understand at a quick glance what is happening now. > Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:556 > + for (let blackboxedCallFrameGroupToAutoExpand of this._blackboxedCallFrameGroupsToAutoExpand) { > + if (blackboxedCallFrameGroupToAutoExpand.length !== blackboxedCallFrameGroup.length) > + continue; > + > + for (let i = 0; i < blackboxedCallFrameGroupToAutoExpand.length; ++i) { > + if (!blackboxedCallFrameGroupToAutoExpand[i].isEqual(blackboxedCallFrameGroup[i])) > + return false; > + } > + > + return true; > + } This doesn't look quite right...If we have expanded two sets of blackboxed frames, each with the same number of frames, we will do the right thing for the first set of frames, but for the second set of frames my understanding here is that we would pass the check on :547 when comparing the second set of frames with the remembered first set of frames, and then proceed to check that the frames match between the two sets, and when they don't we end up returning instead of checking the second set of remembered frames. I think :552 needs to continue the outer loop with some additional piece of state.
Devin Rousso
Comment 4 2022-01-04 13:13:23 PST
Comment on attachment 448324 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=448324&action=review >> Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:556 >> + } > > This doesn't look quite right...If we have expanded two sets of blackboxed frames, each with the same number of frames, we will do the right thing for the first set of frames, but for the second set of frames my understanding here is that we would pass the check on :547 when comparing the second set of frames with the remembered first set of frames, and then proceed to check that the frames match between the two sets, and when they don't we end up returning instead of checking the second set of remembered frames. I think :552 needs to continue the outer loop with some additional piece of state. Oh wow great catch. Yeah I think :552 should be a `continue`.
Devin Rousso
Comment 5 2022-01-04 13:25:41 PST
Patrick Angle
Comment 6 2022-01-04 13:37:51 PST
Comment on attachment 448330 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=448330&action=review rs=me > Source/WebInspectorUI/ChangeLog:40 > + Add a convenience function to compare two `WI.CallFrame`. Right now it just looks as the Nit: s/as/at
Devin Rousso
Comment 7 2022-01-04 13:46:00 PST
EWS
Comment 8 2022-01-04 14:52:29 PST
Committed r287590 (245719@main): <https://commits.webkit.org/245719@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 448334 [details].
Note You need to log in before you can comment on or make changes to this bug.