haikuwebkit/LayoutTests/inspector/dom-debugger/resources
Devin Rousso 8c41c7286d Web Inspector: allow DOM breakpoints to be configured
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
2020-09-05 20:06:22 +00:00
..
dataFetch.json
dataXHR.json
dom-breakpoint-utilities.js Web Inspector: allow DOM breakpoints to be configured 2020-09-05 20:06:22 +00:00
event-breakpoint-utilities.js Web Inspector: allow url breakpoints to be configured 2020-09-03 20:07:39 +00:00
url-breakpoint-utilities.js Web Inspector: allow url breakpoints to be configured 2020-09-03 20:07:39 +00:00