Merge pull request #923 from lightpanda-io/doc-owner-next
Some checks failed
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled

node: don't call owner twice in _insertBefore
This commit is contained in:
Pierre Tachoire
2025-08-05 15:59:16 +02:00
committed by GitHub

View File

@@ -307,6 +307,10 @@ pub const Node = struct {
} }
pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node_: ?*parser.Node) !Union { pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node_: ?*parser.Node) !Union {
if (ref_node_ == null) {
return _appendChild(self, new_node);
}
const self_owner = try parser.nodeOwnerDocument(self); const self_owner = try parser.nodeOwnerDocument(self);
const new_node_owner = try parser.nodeOwnerDocument(new_node); const new_node_owner = try parser.nodeOwnerDocument(new_node);
@@ -324,10 +328,7 @@ pub const Node = struct {
} }
} }
if (ref_node_) |ref_node| { return Node.toInterface(try parser.nodeInsertBefore(self, new_node, ref_node_.?));
return Node.toInterface(try parser.nodeInsertBefore(self, new_node, ref_node));
}
return _appendChild(self, new_node);
} }
pub fn _isDefaultNamespace(self: *parser.Node, namespace: ?[]const u8) !bool { pub fn _isDefaultNamespace(self: *parser.Node, namespace: ?[]const u8) !bool {
@@ -770,12 +771,9 @@ test "Browser.DOM.node.owner" {
.{ .{
\\ const parser = new DOMParser(); \\ const parser = new DOMParser();
\\ const newDoc = parser.parseFromString('<div id="new-node"><p>Hey</p><span>Marked</span></div>', 'text/html'); \\ const newDoc = parser.parseFromString('<div id="new-node"><p>Hey</p><span>Marked</span></div>', 'text/html');
\\ const newNode = newDoc.getElementById('new-node'); \\ const newNode = newDoc.getElementById('new-node');
\\ const parent = document.getElementById('target-container'); \\ const parent = document.getElementById('target-container');
\\ const referenceNode = document.getElementById('reference-node'); \\ const referenceNode = document.getElementById('reference-node');
\\ parent.insertBefore(newNode, referenceNode); \\ parent.insertBefore(newNode, referenceNode);
\\ const k = document.getElementById('new-node'); \\ const k = document.getElementById('new-node');
\\ const ptag = k.querySelector('p'); \\ const ptag = k.querySelector('p');