mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-27 22:23:28 +00:00
dom: implement lwc_string
and unit tests for document.GetElementByClassName
This commit is contained in:
@@ -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| {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user