8c41c7286d
https://bugs.webkit.org/show_bug.cgi?id=215795 Reviewed by Brian Burg. Source/JavaScriptCore: * inspector/protocol/DOMDebugger.json: Add an `options` parameter to `DOMDebugger.setDOMBreakpoint` to allow configuration. Source/WebCore: Tests: inspector/dom-debugger/attribute-modified-style.html inspector/dom-debugger/dom-breakpoints.html inspector/dom-debugger/dom-breakpoint-attribute-modified.html inspector/dom-debugger/dom-breakpoint-node-removed-ancestor.html inspector/dom-debugger/dom-breakpoint-node-removed-direct.html inspector/dom-debugger/dom-breakpoint-subtree-modified-add.html inspector/dom-debugger/dom-breakpoint-subtree-modified-remove.html * inspector/agents/page/PageDOMDebuggerAgent.h: * inspector/agents/page/PageDOMDebuggerAgent.cpp: (WebCore::PageDOMDebuggerAgent::disable): (WebCore::PageDOMDebuggerAgent::setDOMBreakpoint): (WebCore::PageDOMDebuggerAgent::removeDOMBreakpoint): (WebCore::PageDOMDebuggerAgent::frameDocumentUpdated): (WebCore::calculateDistance): Added. (WebCore::PageDOMDebuggerAgent::willInsertDOMNode): (WebCore::PageDOMDebuggerAgent::willRemoveDOMNode): (WebCore::PageDOMDebuggerAgent::didRemoveDOMNode): (WebCore::PageDOMDebuggerAgent::willModifyDOMAttr): (WebCore::PageDOMDebuggerAgent::willInvalidateStyleAttr): (WebCore::PageDOMDebuggerAgent::buildPauseDataForDOMBreakpoint): Added. (WebCore::domTypeForName): Deleted. (WebCore::domTypeName): Deleted. (WebCore::PageDOMDebuggerAgent::didInsertDOMNode): Deleted. (WebCore::PageDOMDebuggerAgent::descriptionForDOMEvent): Deleted. (WebCore::PageDOMDebuggerAgent::updateSubtreeBreakpoints): Deleted. (WebCore::PageDOMDebuggerAgent::hasBreakpoint): Deleted. Replace the bitmask with separate `HashMap` for each type of DOM breakpoint. Instead of propagating the `SubtreeModified` bit to the entire subtree when new nodes are added (which means there's an entry in the `HashMap` for every descendant) and removing them all when that node is removed, only keep nodes in each `HashMap` if it directly has a DOM breakpoint. Walk up the ancestor chain when nodes are added/removed to determine if there is a nearby breakpoint to pause. When a node is removed, remove any existing DOM breakpoint if it's owner is part of the removed subtree. * inspector/agents/worker/WorkerDOMDebuggerAgent.h: * inspector/agents/worker/WorkerDOMDebuggerAgent.cpp: (WebCore::WorkerDOMDebuggerAgent::setDOMBreakpoint): * inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::didInsertDOMNodeImpl): Source/WebInspectorUI: * UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype._setChildNodes): Dispatch events for each new child node added and each existing child node removed so that any listeners can also know when new nodes are added via a full children payload update. * UserInterface/Controllers/DOMDebuggerManager.js: (WI.DOMDebuggerManager): (WI.DOMDebuggerManager.prototype.addDOMBreakpoint): (WI.DOMDebuggerManager.prototype.removeDOMBreakpoint): (WI.DOMDebuggerManager.prototype._detachDOMBreakpointsForFrame): Added. (WI.DOMDebuggerManager.prototype._speculativelyResolveDOMBreakpointsForURL): (WI.DOMDebuggerManager.prototype._speculativelyResolveDOMBreakpoint): Added. (WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint): (WI.DOMDebuggerManager.prototype._setDOMBreakpoint): Added. (WI.DOMDebuggerManager.prototype._removeDOMBreakpoint): Added. (WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged): (WI.DOMDebuggerManager.prototype._handleDOMBreakpointEditablePropertyChanged): Added. (WI.DOMDebuggerManager.prototype._handleDOMBreakpointActionsChanged): Added. (WI.DOMDebuggerManager.prototype._handleDOMBreakpointDOMNodeWillChange): Added. (WI.DOMDebuggerManager.prototype._handleDOMBreakpointDOMNodeDidChange): Added. (WI.DOMDebuggerManager.prototype._childFrameWasRemoved): (WI.DOMDebuggerManager.prototype._mainResourceDidChange): (WI.DOMDebuggerManager.prototype._nodeInserted): (WI.DOMDebuggerManager.prototype._nodeRemoved): (WI.DOMDebuggerManager.prototype._detachDOMBreakpoint): Deleted. (WI.DOMDebuggerManager.prototype._detachBreakpointsForFrame): Deleted. (WI.DOMDebuggerManager.prototype._updateDOMBreakpoint): Deleted. Recursively walk any added node's subtree to resolve and set any matching DOM breakpoints. Iterate all existing DOM breakpoints to see if the owner node is part of the subtree of any removed nodes and remove ot if so. * UserInterface/Models/DOMBreakpoint.js: (WI.DOMBreakpoint): (WI.DOMBreakpoint.displayNameForType): (WI.DOMBreakpoint.fromJSON): (WI.DOMBreakpoint.prototype.get editable): Added. (WI.DOMBreakpoint.prototype.get domNode): Added. (WI.DOMBreakpoint.prototype.set domNode): Added. (WI.DOMBreakpoint.prototype.get domNodeIdentifier): Deleted. (WI.DOMBreakpoint.prototype.set domNodeIdentifier): Deleted. * UserInterface/Views/DOMTreeContentView.js: (WI.DOMTreeContentView): (WI.DOMTreeContentView.prototype.closed): (WI.DOMTreeContentView.prototype._domTreeElementAdded): (WI.DOMTreeContentView.prototype._domBreakpointAddedOrRemoved): (WI.DOMTreeContentView.prototype._handleDOMBreakpointDisabledStateChanged): (WI.DOMTreeContentView.prototype._handleDOMBreakpointDOMNodeWillChange): Added. (WI.DOMTreeContentView.prototype._handleDOMBreakpointDOMNodeDidChange): Added. (WI.DOMTreeContentView.prototype._updateBreakpointStatus): (WI.DOMTreeContentView.prototype._restoreBreakpointsAfterUpdate): (WI.DOMTreeContentView.prototype._handleDOMBreakpointDOMNodeChanged): Deleted. * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel): (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection): (WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointDOMNodeWillChange): Added. (WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointDOMNodeDidChange): Added. (WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointDOMNodeChanged): Deleted. Use a `WI.DOMNode` instead of an identifier instead of fetching the node for the identifier each time and checking if is valid. LayoutTests: * inspector/debugger/resources/breakpoint-options-utilities.js: (TestPage.registerInitializer.InspectorTest.BreakpointOptions.addTestCases): * inspector/dom-debugger/resources/dom-breakpoint-utilities.js: Added. (TestPage.registerInitializer.InspectorTest.DOMBreakpoint.teardown): (TestPage.registerInitializer.InspectorTest.DOMBreakpoint.createBreakpoint): (TestPage.registerInitializer.InspectorTest.DOMBreakpoint.addBreakpoint): (TestPage.registerInitializer.InspectorTest.DOMBreakpoint.awaitQuerySelector): * inspector/dom-debugger/attribute-modified-style.html: * inspector/dom-debugger/attribute-modified-style-expected.txt: * inspector/dom-debugger/dom-breakpoints.html: * inspector/dom-debugger/dom-breakpoints-expected.txt: * inspector/dom-debugger/dom-breakpoint-attribute-modified.html: Added. * inspector/dom-debugger/dom-breakpoint-attribute-modified-expected.txt: Added. * inspector/dom-debugger/dom-breakpoint-node-removed-ancestor.html: Added. * inspector/dom-debugger/dom-breakpoint-node-removed-ancestor-expected.txt: Added. * inspector/dom-debugger/dom-breakpoint-node-removed-direct.html: Added. * inspector/dom-debugger/dom-breakpoint-node-removed-direct-expected.txt: Added. * inspector/dom-debugger/dom-breakpoint-subtree-modified-add.html: Added. * inspector/dom-debugger/dom-breakpoint-subtree-modified-remove-expected.txt: Added. * inspector/dom-debugger/dom-breakpoint-subtree-modified-remove.html: Added. * inspector/dom-debugger/dom-breakpoint-subtree-modified-add-expected.txt: Added. Canonical link: https://commits.webkit.org/229038@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266669 268f45cc-cd09-0410-ab3c-d52691b4dbfc |
||
---|---|---|
.. | ||
dataFetch.json | ||
dataXHR.json | ||
dom-breakpoint-utilities.js | ||
event-breakpoint-utilities.js | ||
url-breakpoint-utilities.js |