From 74391d59a5fe1a4ac84ee8a351ad83d36e538363 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 17 Apr 2025 21:41:28 +0800 Subject: [PATCH 1/3] Add Node.$NODE_TYPE class attributes --- src/browser/dom/node.zig | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/browser/dom/node.zig b/src/browser/dom/node.zig index a0771b16..86c98da8 100644 --- a/src/browser/dom/node.zig +++ b/src/browser/dom/node.zig @@ -79,6 +79,18 @@ pub const Node = struct { }; } + // class attributes + + pub const _ELEMENT_NODE = @intFromEnum(parser.NodeType.element); + pub const _ATTRIBUTE_NODE = @intFromEnum(parser.NodeType.attribute); + pub const _TEXT_NODE = @intFromEnum(parser.NodeType.text); + pub const _CDATA_SECTION_NODE = @intFromEnum(parser.NodeType.cdata_section); + pub const _PROCESSING_INSTRUCTION_NODE = @intFromEnum(parser.NodeType.processing_instruction); + pub const _COMMENT_NODE = @intFromEnum(parser.NodeType.comment); + pub const _DOCUMENT_NODE = @intFromEnum(parser.NodeType.document); + pub const _DOCUMENT_TYPE_NODE = @intFromEnum(parser.NodeType.document_type); + pub const _DOCUMENT_FRAGMENT_NODE = @intFromEnum(parser.NodeType.document_fragment); + // JS funcs // -------- @@ -589,4 +601,16 @@ test "Browser.DOM.node" { .{ "let replace = document.createElement('div')", "undefined" }, .{ "link.replaceChild(replace, insertBefore) !== undefined", "true" }, }, .{}); + + try runner.testCases(&.{ + .{ "Node.ELEMENT_NODE", "1" }, + .{ "Node.ATTRIBUTE_NODE", "2" }, + .{ "Node.TEXT_NODE", "3" }, + .{ "Node.CDATA_SECTION_NODE", "4" }, + .{ "Node.PROCESSING_INSTRUCTION_NODE", "7" }, + .{ "Node.COMMENT_NODE", "8" }, + .{ "Node.DOCUMENT_NODE", "9" }, + .{ "Node.DOCUMENT_TYPE_NODE", "10" }, + .{ "Node.DOCUMENT_FRAGMENT_NODE", "11" }, + }, .{}); } From e3e3311dd0c72bdb0007c99a809592e362209fd6 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Fri, 18 Apr 2025 00:10:03 +0800 Subject: [PATCH 2/3] add deprecated node types (both Chrome and FF have them) --- src/browser/dom/node.zig | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/browser/dom/node.zig b/src/browser/dom/node.zig index 86c98da8..1fcd0df9 100644 --- a/src/browser/dom/node.zig +++ b/src/browser/dom/node.zig @@ -91,6 +91,11 @@ pub const Node = struct { pub const _DOCUMENT_TYPE_NODE = @intFromEnum(parser.NodeType.document_type); pub const _DOCUMENT_FRAGMENT_NODE = @intFromEnum(parser.NodeType.document_fragment); + // These 3 are deprecated, but both Chrome and Firefox still expose them + pub const _ENTITY_REFERENCE_NODE = @intFromEnum(parser.NodeType.entity_reference); + pub const _ENTITY_NODE = @intFromEnum(parser.NodeType.entity); + pub const _NOTATION_NODE = @intFromEnum(parser.NodeType.notation); + // JS funcs // -------- @@ -612,5 +617,8 @@ test "Browser.DOM.node" { .{ "Node.DOCUMENT_NODE", "9" }, .{ "Node.DOCUMENT_TYPE_NODE", "10" }, .{ "Node.DOCUMENT_FRAGMENT_NODE", "11" }, + .{ "Node.ENTITY_REFERENCE_NODE", "5"}, + .{ "Node.ENTITY_NODE", "6"}, + .{ "Node.NOTATION_NODE", "12"}, }, .{}); } From 361a1a21acf32ac831852abfb6e13cb3f5d7100d Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Fri, 18 Apr 2025 00:10:40 +0800 Subject: [PATCH 3/3] zig fmt :| --- src/browser/dom/node.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/browser/dom/node.zig b/src/browser/dom/node.zig index 1fcd0df9..af244383 100644 --- a/src/browser/dom/node.zig +++ b/src/browser/dom/node.zig @@ -617,8 +617,8 @@ test "Browser.DOM.node" { .{ "Node.DOCUMENT_NODE", "9" }, .{ "Node.DOCUMENT_TYPE_NODE", "10" }, .{ "Node.DOCUMENT_FRAGMENT_NODE", "11" }, - .{ "Node.ENTITY_REFERENCE_NODE", "5"}, - .{ "Node.ENTITY_NODE", "6"}, - .{ "Node.NOTATION_NODE", "12"}, + .{ "Node.ENTITY_REFERENCE_NODE", "5" }, + .{ "Node.ENTITY_NODE", "6" }, + .{ "Node.NOTATION_NODE", "12" }, }, .{}); }