Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d46f6b0d75a462477d10ccff33b3efa6aa27db6c
      
https://github.com/WebKit/WebKit/commit/d46f6b0d75a462477d10ccff33b3efa6aa27db6c
  Author: Anuj Panta <[email protected]>
  Date:   2026-06-23 (Tue, 23 Jun 2026)

  Changed paths:
    A 
LayoutTests/http/tests/site-isolation/inspector/dom/editing-commands-frame-target-expected.txt
    A 
LayoutTests/http/tests/site-isolation/inspector/dom/editing-commands-frame-target.html
    M Source/JavaScriptCore/inspector/protocol/DOM.json
    M Source/WebCore/inspector/agents/frame/FrameDOMAgent.cpp
    M Source/WebCore/inspector/agents/frame/FrameDOMAgent.h
    M Source/WebCore/inspector/agents/frame/FrameDOMAgentStubs.cpp
    M Source/WebInspectorUI/UserInterface/Models/DOMNode.js

  Log Message:
  -----------
  Web Inspector: [SI] implement DOM editing commands for FrameDOMAgent
https://bugs.webkit.org/show_bug.cgi?id=315590
rdar://177974230

Reviewed by Qianlang Chen.

Port nine DOM editing commands from InspectorDOMAgent onto FrameDOMAgent
— setNodeName, setNodeValue, removeNode, setAttributeValue,
setAttributesAsText, removeAttribute, setOuterHTML, insertAdjacentHTML,
and moveTo. Each operates on the frame's local Document via the DOMEditor
+ InspectorHistory, so cross-origin iframe edits
are recorded on the frame's per-process undo stack and reversed by the
existing undo/redo commands. setOuterHTML with nodeId == 0 patches the
frame's whole document via DOMPatchSupport. CSS notifications after
attribute edits are skipped until FrameCSSAgent exists.

On the frontend, the cross-origin guards are removed
from the editing methods on DOMNode. Each routes through `owningTarget
|| WI.assumingMainTarget()` with `backendNodeId`, matching the pattern
used for querySelector. moveTo rejects cross-target moves up front since
nodeIds cannot resolve across processes.

Test: http/tests/site-isolation/inspector/dom/editing-commands-frame-target.html

* 
LayoutTests/http/tests/site-isolation/inspector/dom/editing-commands-frame-target-expected.txt:
 Added.
* 
LayoutTests/http/tests/site-isolation/inspector/dom/editing-commands-frame-target.html:
 Added.
* Source/JavaScriptCore/inspector/protocol/DOM.json:
* Source/WebCore/inspector/agents/frame/FrameDOMAgent.cpp:
(WebCore::FrameDOMAgent::assertEditableNode):
(WebCore::FrameDOMAgent::assertEditableElement):
(WebCore::FrameDOMAgent::setAttributeValue):
(WebCore::FrameDOMAgent::setAttributesAsText):
(WebCore::FrameDOMAgent::removeAttribute):
(WebCore::FrameDOMAgent::removeNode):
(WebCore::FrameDOMAgent::setNodeName):
(WebCore::FrameDOMAgent::setOuterHTML):
(WebCore::FrameDOMAgent::insertAdjacentHTML):
(WebCore::FrameDOMAgent::setNodeValue):
(WebCore::FrameDOMAgent::moveTo):
* Source/WebCore/inspector/agents/frame/FrameDOMAgent.h:
* Source/WebCore/inspector/agents/frame/FrameDOMAgentStubs.cpp:
(WebCore::FrameDOMAgent::setNodeName): Deleted.
(WebCore::FrameDOMAgent::setNodeValue): Deleted.
(WebCore::FrameDOMAgent::removeNode): Deleted.
(WebCore::FrameDOMAgent::setAttributeValue): Deleted.
(WebCore::FrameDOMAgent::setAttributesAsText): Deleted.
(WebCore::FrameDOMAgent::removeAttribute): Deleted.
(WebCore::FrameDOMAgent::setOuterHTML): Deleted.
(WebCore::FrameDOMAgent::insertAdjacentHTML): Deleted.
(WebCore::FrameDOMAgent::moveTo): Deleted.
* Source/WebInspectorUI/UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.setNodeName):
(WI.DOMNode.prototype.setNodeValue):
(WI.DOMNode.prototype.setAttribute):
(WI.DOMNode.prototype.setAttributeValue):
(WI.DOMNode.prototype.removeAttribute):
(WI.DOMNode.prototype.setOuterHTML):
(WI.DOMNode.prototype.insertAdjacentHTML):
(WI.DOMNode.prototype.removeNode):
(WI.DOMNode.prototype.moveTo):

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



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

Reply via email to