From 68585c883791a7646f4ba73e3e326f83cf879685 Mon Sep 17 00:00:00 2001 From: nikneym Date: Mon, 22 Sep 2025 15:08:07 +0300 Subject: [PATCH 1/3] add `rel` getter to `HTMLLinkElement` --- src/browser/html/elements.zig | 4 ++++ src/browser/netsurf.zig | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/browser/html/elements.zig b/src/browser/html/elements.zig index 8d3f2bc6..9e7e0472 100644 --- a/src/browser/html/elements.zig +++ b/src/browser/html/elements.zig @@ -757,6 +757,10 @@ pub const HTMLLinkElement = struct { pub const prototype = *HTMLElement; pub const subtype = .node; + pub fn get_rel(self: *parser.Link) ![]const u8 { + return try parser.linkGetRel(self); + } + pub fn get_href(self: *parser.Link) ![]const u8 { return try parser.linkGetHref(self); } diff --git a/src/browser/netsurf.zig b/src/browser/netsurf.zig index b87c6ff8..be3e711f 100644 --- a/src/browser/netsurf.zig +++ b/src/browser/netsurf.zig @@ -1934,6 +1934,14 @@ pub fn anchorSetRel(a: *Anchor, rel: []const u8) !void { // HTMLLinkElement +pub fn linkGetRel(link: *Link) ![]const u8 { + var res: ?*String = null; + const err = c.dom_html_link_element_get_rel(link, &res); + try DOMErr(err); + if (res == null) return ""; + return strToData(res.?); +} + pub fn linkGetHref(link: *Link) ![]const u8 { var res: ?*String = null; const err = c.dom_html_link_element_get_href(link, &res); From 907a94179589a2cc73fe4eabf95b18a31354f77f Mon Sep 17 00:00:00 2001 From: nikneym Date: Mon, 22 Sep 2025 16:34:37 +0300 Subject: [PATCH 2/3] add `rel` setter to `HTMLLinkElement` --- src/browser/html/elements.zig | 10 +++++++--- src/browser/netsurf.zig | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/browser/html/elements.zig b/src/browser/html/elements.zig index 9e7e0472..47cf0306 100644 --- a/src/browser/html/elements.zig +++ b/src/browser/html/elements.zig @@ -758,16 +758,20 @@ pub const HTMLLinkElement = struct { pub const subtype = .node; pub fn get_rel(self: *parser.Link) ![]const u8 { - return try parser.linkGetRel(self); + return parser.linkGetRel(self); + } + + pub fn set_rel(self: *parser.Link, rel: []const u8) !void { + return parser.linkSetRel(self, rel); } pub fn get_href(self: *parser.Link) ![]const u8 { - return try parser.linkGetHref(self); + return parser.linkGetHref(self); } pub fn set_href(self: *parser.Link, href: []const u8, page: *const Page) !void { const full = try urlStitch(page.call_arena, href, page.url.raw, .{}); - return try parser.linkSetHref(self, full); + return parser.linkSetHref(self, full); } }; diff --git a/src/browser/netsurf.zig b/src/browser/netsurf.zig index be3e711f..a391950b 100644 --- a/src/browser/netsurf.zig +++ b/src/browser/netsurf.zig @@ -1942,6 +1942,11 @@ pub fn linkGetRel(link: *Link) ![]const u8 { return strToData(res.?); } +pub fn linkSetRel(link: *Link, rel: []const u8) !void { + const err = c.dom_html_link_element_set_rel(link, try strFromData(rel)); + return DOMErr(err); +} + pub fn linkGetHref(link: *Link) ![]const u8 { var res: ?*String = null; const err = c.dom_html_link_element_get_href(link, &res); From 71bc624a741fdcb1641e90cf40f393de35debac1 Mon Sep 17 00:00:00 2001 From: nikneym Date: Mon, 22 Sep 2025 16:35:06 +0300 Subject: [PATCH 3/3] add a link element test --- src/tests/dom/element.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tests/dom/element.html b/src/tests/dom/element.html index 8c4060f9..f656d5ca 100644 --- a/src/tests/dom/element.html +++ b/src/tests/dom/element.html @@ -280,3 +280,12 @@ divElement.dir = "auto"; testing.expectEqual("auto", divElement.dir); + +