From f38a0d2d67842830f1a4693923d215b7437031f9 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Mon, 7 Apr 2025 13:51:50 +0800 Subject: [PATCH] Remove BrowserContext URL Add BrowserContext.getURL which gets the URL from the session.page. --- src/cdp/cdp.zig | 8 +++++--- src/cdp/domains/page.zig | 5 ++--- src/cdp/domains/target.zig | 5 ++--- src/cdp/testing.zig | 7 ++++--- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/cdp/cdp.zig b/src/cdp/cdp.zig index 15a81c76..45d4c63c 100644 --- a/src/cdp/cdp.zig +++ b/src/cdp/cdp.zig @@ -284,8 +284,6 @@ pub fn BrowserContext(comptime CDP_T: type) type { // we should reject it. session_id: ?[]const u8, - // State - url: []const u8, loader_id: []const u8, security_origin: []const u8, page_life_cycle_events: bool, @@ -306,7 +304,6 @@ pub fn BrowserContext(comptime CDP_T: type) type { .cdp = cdp, .target_id = null, .session_id = null, - .url = URL_BASE, .security_origin = URL_BASE, .secure_context_type = "Secure", // TODO = enum .loader_id = LOADER_ID, @@ -336,6 +333,11 @@ pub fn BrowserContext(comptime CDP_T: type) type { }; } + pub fn getURL(self: *const Self) ?[]const u8 { + const page = self.session.currentPage() orelse return null; + return page.rawuri; + } + pub fn onInspectorResponse(ctx: *anyopaque, _: u32, msg: []const u8) void { if (std.log.defaultLogEnabled(.debug)) { // msg should be {"id":,... diff --git a/src/cdp/domains/page.zig b/src/cdp/domains/page.zig index b74b8878..02134cd2 100644 --- a/src/cdp/domains/page.zig +++ b/src/cdp/domains/page.zig @@ -61,10 +61,10 @@ fn getFrameTree(cmd: anytype) !void { return cmd.sendResult(.{ .frameTree = .{ .frame = Frame{ - .url = bc.url, .id = target_id, .loaderId = bc.loader_id, .securityOrigin = bc.security_origin, + .url = bc.getURL() orelse "about:blank", .secureContextType = bc.secure_context_type, }, }, @@ -154,7 +154,6 @@ pub fn navigateToUrl(cmd: anytype, url: []const u8, send_result: bool) !void { // change state bc.reset(); - bc.url = url; bc.loader_id = cmd.cdp.loader_id_gen.next(); const LifecycleEvent = struct { @@ -285,7 +284,7 @@ test "cdp.page: getFrameTree" { .frame = .{ .id = "TID-3", .loaderId = bc.loader_id, - .url = bc.url, + .url = "about:blank", .domainAndRegistry = "", .securityOrigin = bc.security_origin, .mimeType = "text/html", diff --git a/src/cdp/domains/target.zig b/src/cdp/domains/target.zig index e94284c9..6c4fd442 100644 --- a/src/cdp/domains/target.zig +++ b/src/cdp/domains/target.zig @@ -132,7 +132,6 @@ fn createTarget(cmd: anytype) !void { _ = try bc.session.createPage(aux_data); // change CDP state - bc.url = "about:blank"; bc.security_origin = "://"; bc.secure_context_type = "InsecureScheme"; bc.loader_id = LOADER_ID; @@ -142,11 +141,11 @@ fn createTarget(cmd: anytype) !void { // has been enabled? try cmd.sendEvent("Target.targetCreated", .{ .targetInfo = TargetInfo{ - .url = bc.url, + .attached = false, .targetId = target_id, .title = "about:blank", .browserContextId = bc.id, - .attached = false, + .url = "about:blank", }, }, .{}); diff --git a/src/cdp/testing.zig b/src/cdp/testing.zig index 296e33eb..c9ce2ebb 100644 --- a/src/cdp/testing.zig +++ b/src/cdp/testing.zig @@ -85,6 +85,7 @@ const Session = struct { return error.MockBrowserPageAlreadyExists; } self.page = .{ + .rawuri = "", .session = self, .aux_data = try self.arena.dupe(u8, aux_data orelse ""), }; @@ -103,6 +104,7 @@ const Session = struct { const Page = struct { session: *Session, + rawuri: []const u8, aux_data: []const u8 = "", doc: ?*parser.Document = null, @@ -111,10 +113,9 @@ const Page = struct { _ = aux_data; } + const MouseEvent = @import("../browser/browser.zig").Page.MouseEvent; const ClickResult = @import("../browser/browser.zig").Page.ClickResult; - pub fn click(_: *Page, _: Allocator, x: u32, y: u32) !?ClickResult { - _ = x; - _ = y; + pub fn mouseEvent(_: *Page, _: Allocator, _: MouseEvent) !?ClickResult { return null; } };