diff --git a/src/browser/tests/element/html/ol.html b/src/browser/tests/element/html/ol.html index 8036e470..f999f80f 100644 --- a/src/browser/tests/element/html/ol.html +++ b/src/browser/tests/element/html/ol.html @@ -46,6 +46,6 @@ testing.expectEqual('1', ol1.type); const ol2 = document.getElementById('ol2'); - testing.expectEqual('', ol2.type); + testing.expectEqual('1', ol2.type); } diff --git a/src/browser/tests/element/html/tablecell.html b/src/browser/tests/element/html/tablecell.html index d1667288..5070ceeb 100644 --- a/src/browser/tests/element/html/tablecell.html +++ b/src/browser/tests/element/html/tablecell.html @@ -18,6 +18,14 @@ const td2 = document.getElementById('td2'); testing.expectEqual(1, td2.colSpan); + + // colSpan 0 clamps to 1 + td2.colSpan = 0; + testing.expectEqual(1, td2.colSpan); + + // colSpan > 1000 clamps to 1000 + td2.colSpan = 9999; + testing.expectEqual(1000, td2.colSpan); } @@ -31,5 +39,13 @@ const td2 = document.getElementById('td2'); testing.expectEqual(1, td2.rowSpan); + + // rowSpan 0 is valid per spec (span remaining rows) + td2.rowSpan = 0; + testing.expectEqual(0, td2.rowSpan); + + // rowSpan > 65534 clamps to 65534 + td2.rowSpan = 99999; + testing.expectEqual(65534, td2.rowSpan); } diff --git a/src/browser/webapi/element/html/OL.zig b/src/browser/webapi/element/html/OL.zig index 7001ae24..78baf5a9 100644 --- a/src/browser/webapi/element/html/OL.zig +++ b/src/browser/webapi/element/html/OL.zig @@ -56,7 +56,7 @@ pub fn setReversed(self: *OL, value: bool, page: *Page) !void { } pub fn getType(self: *OL) []const u8 { - return self.asElement().getAttributeSafe(comptime .wrap("type")) orelse ""; + return self.asElement().getAttributeSafe(comptime .wrap("type")) orelse "1"; } pub fn setType(self: *OL, value: []const u8, page: *Page) !void { diff --git a/src/browser/webapi/element/html/TableCell.zig b/src/browser/webapi/element/html/TableCell.zig index b8ddccca..d57b70ff 100644 --- a/src/browser/webapi/element/html/TableCell.zig +++ b/src/browser/webapi/element/html/TableCell.zig @@ -21,7 +21,9 @@ pub fn asNode(self: *TableCell) *Node { pub fn getColSpan(self: *TableCell) u32 { const attr = self.asElement().getAttributeSafe(comptime .wrap("colspan")) orelse return 1; - return std.fmt.parseUnsigned(u32, attr, 10) catch 1; + const v = std.fmt.parseUnsigned(u32, attr, 10) catch return 1; + if (v == 0) return 1; + return @min(v, 1000); } pub fn setColSpan(self: *TableCell, value: u32, page: *Page) !void { @@ -31,7 +33,8 @@ pub fn setColSpan(self: *TableCell, value: u32, page: *Page) !void { pub fn getRowSpan(self: *TableCell) u32 { const attr = self.asElement().getAttributeSafe(comptime .wrap("rowspan")) orelse return 1; - return std.fmt.parseUnsigned(u32, attr, 10) catch 1; + const v = std.fmt.parseUnsigned(u32, attr, 10) catch return 1; + return @min(v, 65534); } pub fn setRowSpan(self: *TableCell, value: u32, page: *Page) !void {