Skip to content

Commit d39cada

Browse files
committed
support null referene node to Node.insertBefore
1 parent 7202d75 commit d39cada

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/browser/dom/node.zig

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,11 @@ pub const Node = struct {
289289
}
290290
}
291291

292-
pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node: *parser.Node) !*parser.Node {
293-
return try parser.nodeInsertBefore(self, new_node, ref_node);
292+
pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node_: ?*parser.Node) !Union {
293+
if (ref_node_) |ref_node| {
294+
return Node.toInterface(try parser.nodeInsertBefore(self, new_node, ref_node));
295+
}
296+
return _appendChild(self, new_node);
294297
}
295298

296299
pub fn _isDefaultNamespace(self: *parser.Node, namespace: ?[]const u8) !bool {
@@ -662,6 +665,10 @@ test "Browser.DOM.node" {
662665
.{ "let insertBefore = document.createElement('a')", "undefined" },
663666
.{ "link.insertBefore(insertBefore, text) !== undefined", "true" },
664667
.{ "link.firstChild.localName === 'a'", "true" },
668+
669+
.{ "let insertBefore2 = document.createElement('b')", null },
670+
.{ "link.insertBefore(insertBefore2, null).localName", "b" },
671+
.{ "link.childNodes[link.childNodes.length - 1].localName", "b" },
665672
}, .{});
666673

667674
try runner.testCases(&.{

0 commit comments

Comments
 (0)