diff --git a/src/dom/character_data.zig b/src/dom/character_data.zig index cf53136c..fefd77f7 100644 --- a/src/dom/character_data.zig +++ b/src/dom/character_data.zig @@ -19,6 +19,12 @@ pub const CharacterData = struct { // JS funcs // -------- + // Read attributes + + pub fn get_length(self: *parser.CharacterData) u32 { + return parser.characterDataLength(self); + } + // Read/Write attributes pub fn get_data(self: *parser.CharacterData) []const u8 { @@ -58,4 +64,9 @@ pub fn testExecFn( .{ .src = "cdata_t.data = 'OK'", .ex = "OK" }, }; try checkCases(js_env, &set_data); + + var get_length = [_]Case{ + .{ .src = "cdata_t.length === 2", .ex = "true" }, + }; + try checkCases(js_env, &get_length); } diff --git a/src/netsurf.zig b/src/netsurf.zig index 8409cf2f..26eac06e 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -435,6 +435,12 @@ pub fn characterDataSetData(cdata: *CharacterData, data: []const u8) void { _ = characterDataVtable(cdata).dom_characterdata_set_data.?(cdata, s); } +pub fn characterDataLength(cdata: *CharacterData) u32 { + var n: u32 = undefined; + _ = characterDataVtable(cdata).dom_characterdata_get_length.?(cdata, &n); + return n; +} + // Text pub const Text = c.dom_text;