Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions src/cdp/cdp.zig
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ const log = std.log.scoped(.cdp);

pub const URL_BASE = "chrome://newtab/";
pub const LOADER_ID = "LOADERID24DD2FD56CF1EF33C965C79C";
pub const FRAME_ID = "FRAMEIDD8AED408A0467AC93100BCDBE";

pub const TimestampEvent = struct {
timestamp: f64,
Expand Down Expand Up @@ -282,7 +281,6 @@ pub fn BrowserContext(comptime CDP_T: type) type {

// State
url: []const u8,
frame_id: []const u8,
loader_id: []const u8,
security_origin: []const u8,
page_life_cycle_events: bool,
Expand All @@ -301,7 +299,6 @@ pub fn BrowserContext(comptime CDP_T: type) type {
.target_id = null,
.session_id = null,
.url = URL_BASE,
.frame_id = FRAME_ID,
.security_origin = URL_BASE,
.secure_context_type = "Secure", // TODO = enum
.loader_id = LOADER_ID,
Expand Down
21 changes: 11 additions & 10 deletions src/cdp/page.zig
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,13 @@ const Frame = struct {

fn getFrameTree(cmd: anytype) !void {
const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;
const target_id = bc.target_id orelse return error.TargetNotLoaded;

return cmd.sendResult(.{
.frameTree = .{
.frame = Frame{
.url = bc.url,
.id = bc.frame_id,
.id = target_id,
.loaderId = bc.loader_id,
.securityOrigin = bc.security_origin,
.secureContextType = bc.secure_context_type,
Expand Down Expand Up @@ -132,7 +133,7 @@ fn navigate(cmd: anytype) !void {
const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;

// didn't create?
_ = bc.target_id orelse return error.TargetIdNotLoaded;
const target_id = bc.target_id orelse return error.TargetIdNotLoaded;

// didn't attach?
const session_id = bc.session_id orelse return error.SessionIdNotLoaded;
Expand Down Expand Up @@ -163,7 +164,7 @@ fn navigate(cmd: anytype) !void {
};

var life_event = LifecycleEvent{
.frameId = bc.frame_id,
.frameId = target_id,
.loaderId = bc.loader_id,
.name = "init",
.timestamp = 343721.796037,
Expand All @@ -172,7 +173,7 @@ fn navigate(cmd: anytype) !void {
// frameStartedLoading event
// TODO: event partially hard coded
try cmd.sendEvent("Page.frameStartedLoading", .{
.frameId = bc.frame_id,
.frameId = target_id,
}, .{ .session_id = session_id });

if (bc.page_life_cycle_events) {
Expand All @@ -181,7 +182,7 @@ fn navigate(cmd: anytype) !void {

// output
try cmd.sendResult(.{
.frameId = bc.frame_id,
.frameId = target_id,
.loaderId = bc.loader_id,
}, .{});

Expand All @@ -195,7 +196,7 @@ fn navigate(cmd: anytype) !void {
cmd.arena,
// NOTE: we assume this is the default web page
"{{\"isDefault\":true,\"type\":\"default\",\"frameId\":\"{s}\"}}",
.{bc.frame_id},
.{target_id},
);

var page = bc.session.currentPage().?;
Expand All @@ -217,7 +218,7 @@ fn navigate(cmd: anytype) !void {
try cmd.sendEvent("Page.frameNavigated", .{
.type = "Navigation",
.frame = Frame{
.id = bc.frame_id,
.id = target_id,
.url = bc.url,
.securityOrigin = bc.security_origin,
.secureContextType = bc.secure_context_type,
Expand Down Expand Up @@ -259,7 +260,7 @@ fn navigate(cmd: anytype) !void {

// frameStoppedLoading
return cmd.sendEvent("Page.frameStoppedLoading", .{
.frameId = bc.frame_id,
.frameId = target_id,
}, .{ .session_id = session_id });
}

Expand All @@ -273,13 +274,13 @@ test "cdp.page: getFrameTree" {
try ctx.expectSentError(-31998, "BrowserContextNotLoaded", .{ .id = 10 });
}

const bc = try ctx.loadBrowserContext(.{ .id = "BID-9" });
const bc = try ctx.loadBrowserContext(.{ .id = "BID-9", .target_id = "TID-3" });
{
try ctx.processMessage(.{ .id = 11, .method = "Page.getFrameTree" });
try ctx.expectSentResult(.{
.frameTree = .{
.frame = .{
.id = bc.frame_id,
.id = "TID-3",
.loaderId = bc.loader_id,
.url = bc.url,
.domainAndRegistry = "",
Expand Down
2 changes: 1 addition & 1 deletion src/cdp/runtime.zig
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ pub const ExecutionContextCreated = struct {
pub const AuxData = struct {
isDefault: bool = true,
type: []const u8 = "default",
frameId: []const u8 = cdp.FRAME_ID,
frameId: []const u8,
};
};

Expand Down
13 changes: 7 additions & 6 deletions src/cdp/target.zig
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ fn getTargetInfo(cmd: anytype) !void {
}

return cmd.sendResult(.{
.targetInfo = .{
.targetInfo = TargetInfo{
.targetId = target_id,
.type = "page",
.title = "",
Expand All @@ -243,7 +243,8 @@ fn getTargetInfo(cmd: anytype) !void {
}

return cmd.sendResult(.{
.targetInfo = .{
.targetInfo = TargetInfo{
.targetId = "TID-STARTUP-B",
.type = "browser",
.title = "",
.url = "",
Expand Down Expand Up @@ -342,9 +343,9 @@ fn setAutoAttach(cmd: anytype) !void {
try cmd.sendEvent("Target.attachedToTarget", AttachToTarget{
.sessionId = "STARTUP",
.targetInfo = TargetInfo{
.type = "browser",
.targetId = "TID-STARTUP",
.title = "about:blank",
.type = "page",
.targetId = "TID-STARTUP-P",
.title = "New Private Tab",
.url = "chrome://newtab/",
.browserContextId = "BID-STARTUP",
},
Expand Down Expand Up @@ -382,7 +383,7 @@ const TargetInfo = struct {
attached: bool = true,
type: []const u8 = "page",
canAccessOpener: bool = false,
browserContextId: []const u8,
browserContextId: ?[]const u8 = null,
};

const testing = @import("testing.zig");
Expand Down
5 changes: 5 additions & 0 deletions src/cdp/testing.zig
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ const TestContext = struct {

const BrowserContextOpts = struct {
id: ?[]const u8 = null,
target_id: ?[]const u8 = null,
session_id: ?[]const u8 = null,
};
pub fn loadBrowserContext(self: *TestContext, opts: BrowserContextOpts) !*main.BrowserContext(TestCDP) {
Expand All @@ -163,6 +164,10 @@ const TestContext = struct {
bc.id = id;
}

if (opts.target_id) |tid| {
bc.target_id = tid;
}

if (opts.session_id) |sid| {
bc.session_id = sid;
}
Expand Down