Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3602ddd766aa6c9b752da5d6eaf03282cb3b5cb9
      
https://github.com/WebKit/WebKit/commit/3602ddd766aa6c9b752da5d6eaf03282cb3b5cb9
  Author: Devin Rousso <[email protected]>
  Date:   2026-10-13 (Tue, 13 Oct 2026)

  Changed paths:
    M 
LayoutTests/http/tests/site-isolation/inspector/dom/custom-elements-and-pseudo-elements-frame-target.html
    M 
LayoutTests/http/tests/site-isolation/inspector/dom/dom-mutation-events-frame-target.html
    M 
LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-cross-frame-isolation-frame-target.html
    M 
LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-pushed-frame-target.html
    M LayoutTests/inspector/css/setLayoutContextTypeChangedMode.html
    M LayoutTests/inspector/dom/attachedNodes.html
    M LayoutTests/inspector/dom/moveBefore.html
    M LayoutTests/inspector/dom/pseudo-element-dynamic.html
    M LayoutTests/inspector/dom/pseudo-element-request-node.html
    M Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js
    M Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js
    M Source/WebInspectorUI/UserInterface/Models/DOMNode.js
    M Source/WebInspectorUI/UserInterface/Models/DOMTree.js
    M Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js
    M Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js
    M Source/WebInspectorUI/UserInterface/Views/DOMTreeUpdater.js
    M Source/WebInspectorUI/UserInterface/Views/LayoutDetailsSidebarPanel.js

  Log Message:
  -----------
  Web Inspector: move node-specific `WI.DOMManager.Event` to `WI.DOMNode.Event`
https://bugs.webkit.org/show_bug.cgi?id=319461

Reviewed by Timothy Hatcher.

Rather than having the `WI.DOMNode` be part of `event.data`, it should be the 
`event.target`.
`WI.Object` already supports listening for specific instances or any instance 
(via the constructor).
As such, moving to `WI.DOMNode.Event` allows observers that only need a 
specific instance to do that.

Also skip including some related data in the `event.data` as it's already 
available on the `WI.DOMNode`.
An inserted node's current parent is available as `event.target.parentNode`.
Removals that happen after detachment retain the previous parent in 
`event.data`.

* Source/WebInspectorUI/UserInterface/Models/DOMNode.js:
(WI.DOMNode.Event):
* Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype._trySpliceFrameDocumentIntoNode):
(WI.DOMManager.prototype._cleanupFrameTarget):
(WI.DOMManager.prototype._frameTargetAttributeModified):
(WI.DOMManager.prototype._frameTargetAttributeRemoved):
(WI.DOMManager.prototype._loadFrameTargetNodeAttributes):
(WI.DOMManager.prototype._frameTargetCharacterDataModified):
(WI.DOMManager.prototype._frameTargetChildNodeCountUpdated):
(WI.DOMManager.prototype._frameTargetChildNodeInserted):
(WI.DOMManager.prototype._frameTargetChildNodeRemoved):
(WI.DOMManager.prototype._frameTargetShadowRootPushed):
(WI.DOMManager.prototype._frameTargetShadowRootPopped):
(WI.DOMManager.prototype._frameTargetWillDestroyDOMNode):
(WI.DOMManager.prototype._frameTargetCustomElementStateChanged):
(WI.DOMManager.prototype._frameTargetPseudoElementAdded):
(WI.DOMManager.prototype._frameTargetPseudoElementRemoved):
(WI.DOMManager.prototype.willDestroyDOMNode):
(WI.DOMManager.prototype._attributeModified):
(WI.DOMManager.prototype._attributeRemoved):
(WI.DOMManager.prototype._loadNodeAttributes):
(WI.DOMManager.prototype._characterDataModified):
(WI.DOMManager.prototype._setChildNodes):
(WI.DOMManager.prototype._childNodeCountUpdated):
(WI.DOMManager.prototype._childNodeInserted):
(WI.DOMManager.prototype._childNodeRemoved):
(WI.DOMManager.prototype._customElementStateChanged):
(WI.DOMManager.prototype._pseudoElementAdded):
(WI.DOMManager.prototype._pseudoElementRemoved):
(WI.DOMManager.Event):
* Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype._nodeInserted):
(WI.DOMDebuggerManager.prototype._nodeRemoved):

* Source/WebInspectorUI/UserInterface/Models/DOMTree.js:
(WI.DOMTree):
(WI.DOMTree.prototype.disconnect):
(WI.DOMTree.prototype.invalidate):
(WI.DOMTree.prototype._requestRootDOMNode):
(WI.DOMTree.prototype._setRootDOMNode): Added.
(WI.DOMTree.prototype._nodeRemoved):
* Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype.closed):
(WI.DOMTreeContentView.prototype._domNodeChanged):
* Source/WebInspectorUI/UserInterface/Views/DOMTreeUpdater.js:
(WI.DOMTreeUpdater):
(WI.DOMTreeUpdater.prototype.close):
(WI.DOMTreeUpdater.prototype._attributesUpdated):
(WI.DOMTreeUpdater.prototype._characterDataModified):
(WI.DOMTreeUpdater.prototype._nodeInserted):
(WI.DOMTreeUpdater.prototype._nodeRemoved):
(WI.DOMTreeUpdater.prototype._childNodeCountUpdated):
* Source/WebInspectorUI/UserInterface/Views/LayoutDetailsSidebarPanel.js:
(WI.LayoutDetailsSidebarPanel.prototype.attached):
(WI.LayoutDetailsSidebarPanel.prototype.detached):
(WI.LayoutDetailsSidebarPanel.prototype._handleNodeRemoved):
Update listeners to use `WI.DOMNode.Event`.

* Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
(WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Added.
(WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Added.
(WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
(WI.DOMNodeDetailsSidebarPanel.prototype._attributesChanged):
(WI.DOMNodeDetailsSidebarPanel.prototype._characterDataModified):
(WI.DOMNodeDetailsSidebarPanel.prototype._customElementStateChanged):
(WI.DOMNodeDetailsSidebarPanel.prototype.closed): Deleted.
`addEventListeners` and `attached` can be called before `initialLayout` so 
additional `didInitialLayout` checks are needed for now.
Drive-by: `closed` is not actually called by anything.

* 
LayoutTests/http/tests/site-isolation/inspector/dom/custom-elements-and-pseudo-elements-frame-target.html:
* 
LayoutTests/http/tests/site-isolation/inspector/dom/dom-mutation-events-frame-target.html:
* 
LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-cross-frame-isolation-frame-target.html:
* 
LayoutTests/http/tests/site-isolation/inspector/dom/shadow-root-pushed-frame-target.html:
* LayoutTests/inspector/css/setLayoutContextTypeChangedMode.html:
* LayoutTests/inspector/dom/attachedNodes.html:
* LayoutTests/inspector/dom/moveBefore.html:
* LayoutTests/inspector/dom/pseudo-element-dynamic.html:
* LayoutTests/inspector/dom/pseudo-element-request-node.html:

Canonical link: https://commits.webkit.org/323656@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to