mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-28 06:33:29 +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);
|
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();
|
const tags = comptime parser.Tag.all();
|
||||||
comptime var createElements: [(tags.len) * 2]Case = undefined;
|
comptime var createElements: [(tags.len) * 2]Case = undefined;
|
||||||
inline for (tags, 0..) |tag, i| {
|
inline for (tags, 0..) |tag, i| {
|
||||||
|
|||||||
@@ -65,6 +65,18 @@ inline fn stringFromData(data: []const u8) *String {
|
|||||||
return s.?;
|
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
|
// Tag
|
||||||
|
|
||||||
pub const Tag = enum(u8) {
|
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 {
|
pub fn elementHasClass(elem: *Element, class: []const u8) bool {
|
||||||
var res: bool = undefined;
|
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;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div id='content'>
|
<div id='content'>
|
||||||
<a id='link' href='foo'>OK</a>
|
<a id='link' href='foo' class='ok'>OK</a>
|
||||||
<p id='para-empty'>
|
<p id='para-empty' class='ok empty'>
|
||||||
<span id='para-empty-child'></span>
|
<span id='para-empty-child'></span>
|
||||||
</p>
|
</p>
|
||||||
<p id='para'> And</p>
|
<p id='para'> And</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user