Skip to content

Commit 7f732c9

Browse files
committed
add HTMLElementLink get/set href
1 parent bdc49a6 commit 7f732c9

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/browser/html/elements.zig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,15 @@ pub const HTMLLinkElement = struct {
895895
pub fn constructor(page: *Page, js_this: Env.JsThis) !*parser.Element {
896896
return constructHtmlElement(page, js_this);
897897
}
898+
899+
pub fn get_href(self: *parser.Link) ![]const u8 {
900+
return try parser.linkGetHref(self);
901+
}
902+
903+
pub fn set_href(self: *parser.Link, href: []const u8, page: *const Page) !void {
904+
const full = try urlStitch(page.call_arena, href, page.url.raw, .{});
905+
return try parser.linkSetHref(self, full);
906+
}
898907
};
899908

900909
pub const HTMLMapElement = struct {
@@ -1581,6 +1590,12 @@ test "Browser.HTML.Element" {
15811590
.{ "document.createElement('a').focus()", null },
15821591
.{ "document.activeElement === focused", "true" },
15831592
}, .{});
1593+
1594+
try runner.testCases(&.{
1595+
.{ "let l2 = document.createElement('link');", null },
1596+
.{ "l2.href = 'https://lightpanda.io/'", null },
1597+
.{ "l2.href", "https://lightpanda.io/" },
1598+
}, .{});
15841599
}
15851600

15861601
test "Browser.HTML.Element.DataSet" {

src/browser/netsurf.zig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,6 +1830,21 @@ pub fn anchorSetRel(a: *Anchor, rel: []const u8) !void {
18301830
try DOMErr(err);
18311831
}
18321832

1833+
// HTMLLinkElement
1834+
1835+
pub fn linkGetHref(link: *Link) ![]const u8 {
1836+
var res: ?*String = undefined;
1837+
const err = c.dom_html_link_element_get_href(link, &res);
1838+
try DOMErr(err);
1839+
if (res == null) return "";
1840+
return strToData(res.?);
1841+
}
1842+
1843+
pub fn linkSetHref(link: *Link, href: []const u8) !void {
1844+
const err = c.dom_html_link_element_set_href(link, try strFromData(href));
1845+
try DOMErr(err);
1846+
}
1847+
18331848
// ElementsHTML
18341849

18351850
pub const MediaElement = struct { base: *c.dom_html_element };

0 commit comments

Comments
 (0)