diff --git a/build.zig.zon b/build.zig.zon index 9a7d4bff..736c94ec 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -6,7 +6,7 @@ .dependencies = .{ .v8 = .{ .url = "https://github.com/lightpanda-io/zig-v8-fork/archive/84cdca7cd9065f67c7933388f2091810fc485bc6.tar.gz", - .hash = "v8-0.0.0-xddH63bVAwBSEobaUok9J0er1FqsvEujCDDVy6I00", + .hash = "v8-0.0.0-xddH67vcAwCuN2gBsAO8TBzEw523KMroIKGrdZwc-Q-y", }, //.v8 = .{ .path = "../zig-v8-fork" } .@"ada-singleheader" = .{ diff --git a/src/browser/js/Inspector.zig b/src/browser/js/Inspector.zig index 264e1f0f..0b51152c 100644 --- a/src/browser/js/Inspector.zig +++ b/src/browser/js/Inspector.zig @@ -28,7 +28,14 @@ pub fn init(allocator: Allocator, isolate: v8.Isolate, ctx: anytype) !Inspector // If necessary, turn a void context into something we can safely ptrCast const safe_context: *anyopaque = if (ContextT == void) @ptrCast(@constCast(&{})) else ctx; - const channel = v8.InspectorChannel.init(safe_context, InspectorContainer.onInspectorResponse, InspectorContainer.onInspectorEvent, isolate); + const channel = v8.InspectorChannel.init( + safe_context, + InspectorContainer.onInspectorResponse, + InspectorContainer.onInspectorEvent, + InspectorContainer.onRunMessageLoopOnPause, + InspectorContainer.onQuitMessageLoopOnPause, + isolate, + ); const client = v8.InspectorClient.init(); @@ -109,6 +116,8 @@ pub fn getNodePtr(self: *const Inspector, allocator: Allocator, object_id: []con const NoopInspector = struct { pub fn onInspectorResponse(_: *anyopaque, _: u32, _: []const u8) void {} pub fn onInspectorEvent(_: *anyopaque, _: []const u8) void {} + pub fn onRunMessageLoopOnPause(_: *anyopaque, _: u32) void {} + pub fn onQuitMessageLoopOnPause(_: *anyopaque) void {} }; pub fn getTaggedAnyOpaque(value: v8.Value) ?*js.TaggedAnyOpaque { diff --git a/src/cdp/cdp.zig b/src/cdp/cdp.zig index d2557d5e..e5881807 100644 --- a/src/cdp/cdp.zig +++ b/src/cdp/cdp.zig @@ -632,6 +632,17 @@ pub fn BrowserContext(comptime CDP_T: type) type { }; } + // debugger events + pub fn onRunMessageLoopOnPause(_: *anyopaque, _: u32) void { + // onRunMessageLoopOnPause is called when a breakpoint is hit. + // Until quit pause, we must continue to run a nested message loop + // to interact with the the debugger ony (ie. Chrome DevTools). + } + + pub fn onQuitMessageLoopOnPause(_: *anyopaque) void { + // Quit breakpoint pause. + } + // This is hacky x 2. First, we create the JSON payload by gluing our // session_id onto it. Second, we're much more client/websocket aware than // we should be.