diff --git a/src/browser/html/elements.zig b/src/browser/html/elements.zig index 2714c1b5..3ce70361 100644 --- a/src/browser/html/elements.zig +++ b/src/browser/html/elements.zig @@ -1369,9 +1369,7 @@ test "Browser.HTML.HtmlInputElement.propeties.form" { try runner.testCases(&.{ .{ "let elem_input = document.querySelector('input')", null }, - }, .{}); - try runner.testCases(&.{.{ "elem_input.form", "[object HTMLFormElement]" }}, .{}); // Initial value - try runner.testCases(&.{ + .{ "elem_input.form", "[object HTMLFormElement]" }, // Initial value .{ "elem_input.form = 'foo'", null }, .{ "elem_input.form", "[object HTMLFormElement]" }, // Invalid }, .{}); diff --git a/src/cdp/domains/network.zig b/src/cdp/domains/network.zig index 3c0c985d..a161f589 100644 --- a/src/cdp/domains/network.zig +++ b/src/cdp/domains/network.zig @@ -85,13 +85,15 @@ fn putAssumeCapacity(headers: *std.ArrayListUnmanaged(std.http.Header), extra: s } pub fn httpRequestFail(arena: Allocator, bc: anytype, request: *const Notification.RequestFail) !void { + // It's possible that the request failed because we aborted when the client + // sent Target.closeTarget. In that case, bc.session_id will be cleared + // already, and we can skip sending these messages to the client. + const session_id = bc.session_id orelse return; + // Isn't possible to do a network request within a Browser (which our // notification is tied to), without a page. std.debug.assert(bc.session.page != null); - // all unreachable because we _have_ to have a page. - const session_id = bc.session_id orelse unreachable; - // We're missing a bunch of fields, but, for now, this seems like enough try bc.cdp.sendEvent("Network.loadingFailed", .{ .requestId = try std.fmt.allocPrint(arena, "REQ-{d}", .{request.id}), diff --git a/src/cdp/domains/page.zig b/src/cdp/domains/page.zig index f5a72831..5ed9dd13 100644 --- a/src/cdp/domains/page.zig +++ b/src/cdp/domains/page.zig @@ -163,6 +163,11 @@ pub fn pageNavigate(arena: Allocator, bc: anytype, event: *const Notification.Pa std.debug.assert(bc.session.page != null); var cdp = bc.cdp; + + if (event.opts.reason != .address_bar) { + bc.loader_id = bc.cdp.loader_id_gen.next(); + } + const loader_id = bc.loader_id; const target_id = bc.target_id orelse unreachable; const session_id = bc.session_id orelse unreachable;