diff --git a/src/browser/tests/element/html/source.html b/src/browser/tests/element/html/source.html index 29c93c343..461cb55ab 100644 --- a/src/browser/tests/element/html/source.html +++ b/src/browser/tests/element/html/source.html @@ -13,8 +13,8 @@ testing.expectEqual('100vw', s1.sizes); testing.expectEqual('(min-width: 600px)', s1.media); testing.expectEqual('video/webm', s1.type); - testing.expectEqual('640', s1.width); - testing.expectEqual('480', s1.height); + testing.expectEqual(640, s1.width); + testing.expectEqual(480, s1.height); const s2 = document.getElementById('s2'); testing.expectEqual('', s2.src); @@ -22,8 +22,8 @@ testing.expectEqual('', s2.sizes); testing.expectEqual('', s2.media); testing.expectEqual('', s2.type); - testing.expectEqual('', s2.width); - testing.expectEqual('', s2.height); + testing.expectEqual(0, s2.width); + testing.expectEqual(0, s2.height); } @@ -51,15 +51,17 @@ s.setAttribute('type', 'image/svg+xml'); testing.expectEqual('image/svg+xml', s.type); - s.width = '320'; + s.width = 320; testing.expectEqual('320', s.getAttribute('width')); s.setAttribute('width', '160'); - testing.expectEqual('160', s.width); + testing.expectEqual(160, s.width); + s.setAttribute('width', 'not-a-number'); + testing.expectEqual(0, s.width); - s.height = '240'; + s.height = 240; testing.expectEqual('240', s.getAttribute('height')); s.setAttribute('height', '120'); - testing.expectEqual('120', s.height); + testing.expectEqual(120, s.height); } diff --git a/src/browser/webapi/element/html/Source.zig b/src/browser/webapi/element/html/Source.zig index f654959d7..24c24042a 100644 --- a/src/browser/webapi/element/html/Source.zig +++ b/src/browser/webapi/element/html/Source.zig @@ -1,3 +1,4 @@ +const std = @import("std"); const js = @import("../../../js/js.zig"); const Frame = @import("../../../Frame.zig"); const Node = @import("../../Node.zig"); @@ -63,20 +64,24 @@ pub fn setType(self: *Source, value: []const u8, frame: *Frame) !void { try self.asElement().setAttributeSafe(comptime .wrap("type"), .wrap(value), frame); } -pub fn getWidth(self: *const Source) []const u8 { - return self.asConstElement().getAttributeSafe(comptime .wrap("width")) orelse ""; +pub fn getWidth(self: *const Source) u32 { + const attr = self.asConstElement().getAttributeSafe(comptime .wrap("width")) orelse return 0; + return std.fmt.parseUnsigned(u32, attr, 10) catch 0; } -pub fn setWidth(self: *Source, value: []const u8, frame: *Frame) !void { - try self.asElement().setAttributeSafe(comptime .wrap("width"), .wrap(value), frame); +pub fn setWidth(self: *Source, value: u32, frame: *Frame) !void { + const str = try std.fmt.allocPrint(frame.call_arena, "{d}", .{value}); + try self.asElement().setAttributeSafe(comptime .wrap("width"), .wrap(str), frame); } -pub fn getHeight(self: *const Source) []const u8 { - return self.asConstElement().getAttributeSafe(comptime .wrap("height")) orelse ""; +pub fn getHeight(self: *const Source) u32 { + const attr = self.asConstElement().getAttributeSafe(comptime .wrap("height")) orelse return 0; + return std.fmt.parseUnsigned(u32, attr, 10) catch 0; } -pub fn setHeight(self: *Source, value: []const u8, frame: *Frame) !void { - try self.asElement().setAttributeSafe(comptime .wrap("height"), .wrap(value), frame); +pub fn setHeight(self: *Source, value: u32, frame: *Frame) !void { + const str = try std.fmt.allocPrint(frame.call_arena, "{d}", .{value}); + try self.asElement().setAttributeSafe(comptime .wrap("height"), .wrap(str), frame); } pub const JsApi = struct {