Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions src/browser/html/elements.zig
Original file line number Diff line number Diff line change
Expand Up @@ -757,13 +757,21 @@ pub const HTMLLinkElement = struct {
pub const prototype = *HTMLElement;
pub const subtype = .node;

pub fn get_rel(self: *parser.Link) ![]const u8 {
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);
}
};

Expand Down
13 changes: 13 additions & 0 deletions src/browser/netsurf.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1934,6 +1934,19 @@ 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 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);
Expand Down
9 changes: 9 additions & 0 deletions src/tests/dom/element.html
Original file line number Diff line number Diff line change
Expand Up @@ -280,3 +280,12 @@
divElement.dir = "auto";
testing.expectEqual("auto", divElement.dir);
</script>

<script id=linkRel>
const linkElement = document.createElement("link");
// A newly created link element must have it's rel set to empty string.
testing.expectEqual("", linkElement.rel);

linkElement.rel = "stylesheet";
testing.expectEqual("stylesheet", linkElement.rel);
</script>