From 47e52b8217461546b2215fcfbda1ec9d9b307628 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Sun, 19 Nov 2023 08:48:10 +0100 Subject: [PATCH] dom: implement lwc_string and unit tests for document.GetElementByClassName --- src/dom/document.zig | 10 ++++++++++ src/netsurf.zig | 14 +++++++++++++- test.html | 4 ++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/dom/document.zig b/src/dom/document.zig index 2524be9b..83f17893 100644 --- a/src/dom/document.zig +++ b/src/dom/document.zig @@ -96,6 +96,16 @@ pub fn testExecFn( }; try checkCases(js_env, &getElementsByTagName); + var getElementsByClassName = [_]Case{ + .{ .src = "let ok = document.getElementsByClassName('ok')", .ex = "undefined" }, + .{ .src = "ok.length", .ex = "2" }, + .{ .src = "let empty = document.getElementsByClassName('empty')", .ex = "undefined" }, + .{ .src = "empty.length", .ex = "1" }, + .{ .src = "let emptyok = document.getElementsByClassName('empty ok')", .ex = "undefined" }, + .{ .src = "emptyok.length", .ex = "1" }, + }; + try checkCases(js_env, &getElementsByClassName); + const tags = comptime parser.Tag.all(); comptime var createElements: [(tags.len) * 2]Case = undefined; inline for (tags, 0..) |tag, i| { diff --git a/src/netsurf.zig b/src/netsurf.zig index c0f9bd5b..c9af70a2 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -65,6 +65,18 @@ inline fn stringFromData(data: []const u8) *String { return s.?; } +const LWCString = c.lwc_string; + +// TODO implement lwcStringToData +// inline fn lwcStringToData(s: *LWCString) []const u8 { +// } + +inline fn lwcStringFromData(data: []const u8) *LWCString { + var s: ?*LWCString = undefined; + _ = c.lwc_intern_string(data.ptr, data.len, &s); + return s.?; +} + // Tag pub const Tag = enum(u8) { @@ -628,7 +640,7 @@ pub fn elementGetAttribute(elem: *Element, name: []const u8) ?[]const u8 { pub fn elementHasClass(elem: *Element, class: []const u8) bool { var res: bool = undefined; - _ = elementVtable(elem).dom_element_has_class.?(elem, stringFromData(class), &res); + _ = elementVtable(elem).dom_element_has_class.?(elem, lwcStringFromData(class), &res); return res; } diff --git a/test.html b/test.html index cb54107e..7a0d7b77 100644 --- a/test.html +++ b/test.html @@ -1,6 +1,6 @@
- OK -

+ OK +

And