From 24dc25391e0e82ed2896cc8f761b6dcac865a128 Mon Sep 17 00:00:00 2001 From: Francis Bouvier Date: Thu, 28 Sep 2023 17:49:07 +0200 Subject: [PATCH] node: add isSameNode method Signed-off-by: Francis Bouvier --- src/dom/node.zig | 11 +++++++++++ src/netsurf.zig | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/src/dom/node.zig b/src/dom/node.zig index c64ae630..1ff19242 100644 --- a/src/dom/node.zig +++ b/src/dom/node.zig @@ -169,6 +169,12 @@ pub const Node = struct { return parser.nodeIsEqualNode(self, other); } + pub fn _isSameNode(self: *parser.Node, other: *parser.Node) bool { + // TODO: other is not an optional parameter, but can be null. + // NOTE: there is no need to use isSameNode(); instead use the === strict equality operator + return parser.nodeIsSameNode(self, other); + } + pub fn _normalize(self: *parser.Node) void { return parser.nodeNormalize(self); } @@ -353,6 +359,11 @@ pub fn testExecFn( }; try checkCases(js_env, &node_is_equal_node); + var node_is_same_node = [_]Case{ + .{ .src = "document.body.isSameNode(document.body)", .ex = "true" }, + }; + try checkCases(js_env, &node_is_same_node); + var node_normalize = [_]Case{ // TODO: no test .{ .src = "link.normalize()", .ex = "undefined" }, diff --git a/src/netsurf.zig b/src/netsurf.zig index d78474eb..422476b3 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -377,6 +377,12 @@ pub fn nodeIsEqualNode(node: *Node, other: *Node) bool { return res; } +pub fn nodeIsSameNode(node: *Node, other: *Node) bool { + var res: bool = undefined; + _ = nodeVtable(node).dom_node_is_same.?(node, other, &res); + return res; +} + pub fn nodeNormalize(node: *Node) void { _ = nodeVtable(node).dom_node_normalize.?(node); }