Changeset 243722 in webkit
- Timestamp:
- Apr 1, 2019, 4:38:45 PM (7 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 6 edited
-
ChangeLog (modified) (1 diff)
-
UserInterface/Controllers/DOMDebuggerManager.js (modified) (1 diff)
-
UserInterface/Controllers/DOMManager.js (modified) (4 diffs)
-
UserInterface/Views/ContextMenuUtilities.js (modified) (1 diff)
-
UserInterface/Views/DOMNodeTreeElement.js (modified) (1 diff)
-
UserInterface/Views/EventBreakpointTreeElement.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r243720 r243722 1 2019-04-01 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: DOMDebugger: disabling a breakpoint for a specific event listener removes it from the UI 4 https://bugs.webkit.org/show_bug.cgi?id=196453 5 <rdar://problem/49489318> 6 7 Reviewed by Joseph Pecoraro. 8 9 Allow breakpoints for specific event listeners to be disabled, rather than immeditately 10 removing/deleting them when they are about to become disabled. This preserves the existing 11 functionality, but now allows for the tree element to stay in the UI in a disabled state. 12 13 * UserInterface/Controllers/DOMManager.js: 14 (WI.DOMManager): 15 (WI.DOMManager.prototype.setBreakpointForEventListener): 16 (WI.DOMManager.prototype.removeBreakpointForEventListener): 17 (WI.DOMManager.prototype.removeEventListenerBreakpointsForNode): Added. 18 (WI.DOMManager.prototype._updateEventBreakpoint): Added. 19 (WI.DOMManager.prototype._handleEventBreakpointDisabledStateChanged): Added. 20 21 * UserInterface/Controllers/DOMDebuggerManager.js: 22 (WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): 23 24 * UserInterface/Views/EventBreakpointTreeElement.js: 25 (WI.EventBreakpointTreeElement.prototype.populateContextMenu): 26 (WI.EventBreakpointTreeElement.prototype._toggleBreakpoint): 27 28 * UserInterface/Views/ContextMenuUtilities.js: 29 (WI.appendContextMenuItemsForDOMNodeBreakpoints): 30 31 * UserInterface/Views/DOMNodeTreeElement.js: 32 (WI.DOMNodeTreeElement.prototype.ondelete): 33 1 34 2019-04-01 Devin Rousso <drousso@apple.com> 2 35 -
trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js
r242765 r243722 555 555 { 556 556 let breakpoint = event.target; 557 558 // Specific event listener breakpoints are handled by `DOMManager`. 559 if (breakpoint.eventListener) 560 return; 561 557 562 for (let target of WI.targets) { 558 563 if (target.DOMDebuggerAgent) -
trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js
r243214 r243722 51 51 this._pendingDocumentRequestCallbacks = null; 52 52 53 WI.EventBreakpoint.addEventListener(WI.EventBreakpoint.Event.DisabledStateChanged, this._handleEventBreakpointDisabledStateChanged, this); 54 53 55 WI.Frame.addEventListener(WI.Frame.Event.MainResourceDidChange, this._mainResourceDidChange, this); 54 56 } … … 593 595 setBreakpointForEventListener(eventListener) 594 596 { 595 let breakpoint = new WI.EventBreakpoint(WI.EventBreakpoint.Type.Listener, eventListener.type, {eventListener}); 597 let breakpoint = this._breakpointsForEventListeners.get(eventListener.eventListenerId); 598 if (breakpoint) { 599 console.assert(breakpoint.disabled); 600 breakpoint.disabled = false; 601 return; 602 } 603 604 breakpoint = new WI.EventBreakpoint(WI.EventBreakpoint.Type.Listener, eventListener.type, {eventListener}); 605 console.assert(!breakpoint.disabled); 606 596 607 this._breakpointsForEventListeners.set(eventListener.eventListenerId, breakpoint); 597 608 598 DOMAgent.setBreakpointForEventListener(eventListener.eventListenerId, (error) => { 599 if (error) { 600 console.error(error); 601 return; 602 } 603 604 WI.domDebuggerManager.dispatchEventToListeners(WI.DOMDebuggerManager.Event.EventBreakpointAdded, {breakpoint}); 605 }); 609 for (let target of WI.targets) { 610 if (target.DOMAgent) 611 this._updateEventBreakpoint(breakpoint, target); 612 } 613 614 WI.domDebuggerManager.dispatchEventToListeners(WI.DOMDebuggerManager.Event.EventBreakpointAdded, {breakpoint}); 606 615 } 607 616 608 617 removeBreakpointForEventListener(eventListener) 609 618 { 610 let breakpoint = this._breakpointsForEventListeners. get(eventListener.eventListenerId);619 let breakpoint = this._breakpointsForEventListeners.take(eventListener.eventListenerId); 611 620 console.assert(breakpoint); 612 621 613 this._breakpointsForEventListeners.delete(eventListener.eventListenerId); 614 615 DOMAgent.removeBreakpointForEventListener(eventListener.eventListenerId, (error) => { 616 if (error) { 617 console.error(error); 618 return; 619 } 620 621 WI.domDebuggerManager.dispatchEventToListeners(WI.DOMDebuggerManager.Event.EventBreakpointRemoved, {breakpoint}); 622 }); 622 for (let target of WI.targets) { 623 if (target.DOMAgent) 624 target.DOMAgent.removeBreakpointForEventListener(eventListener.eventListenerId); 625 } 626 627 WI.domDebuggerManager.dispatchEventToListeners(WI.DOMDebuggerManager.Event.EventBreakpointRemoved, {breakpoint}); 628 } 629 630 removeEventListenerBreakpointsForNode(domNode) 631 { 632 for (let breakpoint of Array.from(this._breakpointsForEventListeners.values())) { 633 let eventListener = breakpoint.eventListener; 634 if (eventListener.nodeId === domNode.id) 635 this.removeBreakpointForEventListener(eventListener); 636 } 623 637 } 624 638 … … 627 641 return this._breakpointsForEventListeners.get(eventListenerId) || null; 628 642 } 643 644 // Private 629 645 630 646 _buildHighlightConfig(mode = "all") … … 647 663 } 648 664 649 // Private 665 _updateEventBreakpoint(breakpoint, target) 666 { 667 let eventListener = breakpoint.eventListener; 668 console.assert(eventListener); 669 670 if (breakpoint.disabled) 671 target.DOMAgent.removeBreakpointForEventListener(eventListener.eventListenerId); 672 else 673 target.DOMAgent.setBreakpointForEventListener(eventListener.eventListenerId); 674 } 675 676 _handleEventBreakpointDisabledStateChanged(event) 677 { 678 let breakpoint = event.target; 679 680 // Non-specific event listener breakpoints are handled by `DOMDebuggerManager`. 681 if (!breakpoint.eventListener) 682 return; 683 684 for (let target of WI.targets) { 685 if (target.DOMAgent) 686 this._updateEventBreakpoint(breakpoint, target); 687 } 688 } 650 689 651 690 _mainResourceDidChange(event) -
trunk/Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js
r243355 r243722 307 307 contextMenu.appendItem(WI.UIString("Delete Breakpoints"), function() { 308 308 WI.domDebuggerManager.removeDOMBreakpointsForNode(domNode); 309 WI.domManager.removeEventListenerBreakpointsForNode(domNode); 309 310 }); 310 311 } -
trunk/Source/WebInspectorUI/UserInterface/Views/DOMNodeTreeElement.js
r236766 r243722 47 47 48 48 WI.domDebuggerManager.removeDOMBreakpointsForNode(this.representedObject); 49 50 for (let treeElement of this.children) { 51 if (treeElement instanceof WI.EventBreakpointTreeElement) 52 treeElement.ondelete(); 53 } 49 WI.domManager.removeEventListenerBreakpointsForNode(this.representedObject); 54 50 55 51 return true; -
trunk/Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js
r242318 r243722 111 111 { 112 112 let breakpoint = this.representedObject; 113 if (!breakpoint.eventListener) { 114 let label = breakpoint.disabled ? WI.UIString("Enable Breakpoint") : WI.UIString("Disable Breakpoint"); 115 contextMenu.appendItem(label, this._toggleBreakpoint.bind(this)); 116 } 113 114 let label = breakpoint.disabled ? WI.UIString("Enable Breakpoint") : WI.UIString("Disable Breakpoint"); 115 contextMenu.appendItem(label, this._toggleBreakpoint.bind(this)); 117 116 118 117 contextMenu.appendSeparator(); … … 147 146 _toggleBreakpoint() 148 147 { 149 if (this.representedObject.eventListener) {150 WI.domManager.removeBreakpointForEventListener(this.representedObject.eventListener);151 return;152 }153 154 148 this.representedObject.disabled = !this.representedObject.disabled; 155 149 }
Note:
See TracChangeset
for help on using the changeset viewer.