From bd65e4084cd199e444302df827adb4884e25dffe Mon Sep 17 00:00:00 2001 From: sjorsdonkers <72333389+sjorsdonkers@users.noreply.github.com> Date: Tue, 6 May 2025 20:30:42 +0200 Subject: [PATCH] renderer fix & url buffer --- src/browser/browser.zig | 8 ++++---- src/browser/dom/element.zig | 8 ++++---- src/browser/dom/intersection_observer.zig | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/browser/browser.zig b/src/browser/browser.zig index 339f354f..d5b1f5e6 100644 --- a/src/browser/browser.zig +++ b/src/browser/browser.zig @@ -193,7 +193,7 @@ pub const Session = struct { // can't use the page arena, because we're about to reset it // and don't want to use the session's arena, because that'll start to // look like a leak if we navigate from page to page a lot. - var buf: [1024]u8 = undefined; + var buf: [4096]u8 = undefined; var fba = std.heap.FixedBufferAllocator.init(&buf); const url = try self.page.?.url.resolve(fba.allocator(), url_string); @@ -818,8 +818,8 @@ const FlatRenderer = struct { const gop = try self.positions.getOrPut(self.allocator, @intFromPtr(e)); var x: u32 = gop.value_ptr.*; if (gop.found_existing == false) { - try elements.append(self.allocator, @intFromPtr(e)); x = @intCast(elements.items.len); + try elements.append(self.allocator, @intFromPtr(e)); gop.value_ptr.* = x; } @@ -841,7 +841,7 @@ const FlatRenderer = struct { } pub fn width(self: *const FlatRenderer) u32 { - return @intCast(self.elements.items.len + 1); // +1 since x starts at 1 (use len after append) + return @max(@as(u32, @intCast(self.elements.items.len)), 1); // At least 1 pixel even if empty } pub fn height(_: *const FlatRenderer) u32 { @@ -849,7 +849,7 @@ const FlatRenderer = struct { } pub fn getElementAtPosition(self: *const FlatRenderer, x: i32, y: i32) ?*parser.Element { - if (y != 1 or x < 0) { + if (y != 0 or x < 0) { return null; } diff --git a/src/browser/dom/element.zig b/src/browser/dom/element.zig index 8ee77de7..281c1349 100644 --- a/src/browser/dom/element.zig +++ b/src/browser/dom/element.zig @@ -500,24 +500,24 @@ test "Browser.DOM.Element" { .{ "document.getElementById('para').clientHeight", "1" }, .{ "let r1 = document.getElementById('para').getBoundingClientRect()", "undefined" }, - .{ "r1.x", "1" }, + .{ "r1.x", "0" }, .{ "r1.y", "0" }, .{ "r1.width", "1" }, .{ "r1.height", "1" }, .{ "let r2 = document.getElementById('content').getBoundingClientRect()", "undefined" }, - .{ "r2.x", "2" }, + .{ "r2.x", "1" }, .{ "r2.y", "0" }, .{ "r2.width", "1" }, .{ "r2.height", "1" }, .{ "let r3 = document.getElementById('para').getBoundingClientRect()", "undefined" }, - .{ "r3.x", "1" }, + .{ "r3.x", "0" }, .{ "r3.y", "0" }, .{ "r3.width", "1" }, .{ "r3.height", "1" }, - .{ "document.getElementById('para').clientWidth", "3" }, + .{ "document.getElementById('para').clientWidth", "2" }, .{ "document.getElementById('para').clientHeight", "1" }, }, .{}); diff --git a/src/browser/dom/intersection_observer.zig b/src/browser/dom/intersection_observer.zig index fb2937a7..81041d4c 100644 --- a/src/browser/dom/intersection_observer.zig +++ b/src/browser/dom/intersection_observer.zig @@ -247,16 +247,16 @@ test "Browser.DOM.IntersectionObserver" { try runner.testCases(&.{ .{ "let entry;", "undefined" }, .{ "new IntersectionObserver(entries => { entry = entries[0]; }).observe(document.createElement('div'));", "undefined" }, - .{ "entry.boundingClientRect.x;", "1" }, + .{ "entry.boundingClientRect.x;", "0" }, .{ "entry.intersectionRatio;", "1" }, - .{ "entry.intersectionRect.x;", "1" }, + .{ "entry.intersectionRect.x;", "0" }, .{ "entry.intersectionRect.y;", "0" }, .{ "entry.intersectionRect.width;", "1" }, .{ "entry.intersectionRect.height;", "1" }, .{ "entry.isIntersecting;", "true" }, .{ "entry.rootBounds.x;", "0" }, .{ "entry.rootBounds.y;", "0" }, - .{ "entry.rootBounds.width;", "2" }, + .{ "entry.rootBounds.width;", "1" }, .{ "entry.rootBounds.height;", "1" }, .{ "entry.target;", "[object HTMLDivElement]" }, }, .{}); @@ -273,6 +273,6 @@ test "Browser.DOM.IntersectionObserver" { "undefined", }, .{ "new_observer.observe(document.createElement('div'));", "undefined" }, - .{ "new_entry.rootBounds.x;", "2" }, + .{ "new_entry.rootBounds.x;", "1" }, }, .{}); }