Skip to content

Commit 9fe1074

Browse files
Merge pull request #476 from karlseguin/implicit_browser_context
Implicitly create BrowserContext on createTarget if one doesn't exist
2 parents 4a4d9a9 + 4307799 commit 9fe1074

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/cdp/target.zig

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,11 @@ fn createTarget(cmd: anytype) !void {
100100
// forTab: ?bool = null,
101101
})) orelse return error.InvalidParams;
102102

103-
const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;
103+
const bc = cmd.browser_context orelse cmd.createBrowserContext() catch |err| switch (err) {
104+
error.AlreadyExists => unreachable,
105+
else => return err,
106+
};
107+
104108
if (bc.target_id != null) {
105109
return error.TargetAlreadyLoaded;
106110
}
@@ -459,18 +463,19 @@ test "cdp.target: disposeBrowserContext" {
459463
}
460464

461465
test "cdp.target: createTarget" {
462-
var ctx = testing.context();
463-
defer ctx.deinit();
464-
465466
{
466-
try testing.expectError(error.BrowserContextNotLoaded, ctx.processMessage(.{
467-
.id = 10,
468-
.method = "Target.createTarget",
469-
.params = struct {}{},
470-
}));
471-
try ctx.expectSentError(-31998, "BrowserContextNotLoaded", .{ .id = 10 });
467+
var ctx = testing.context();
468+
defer ctx.deinit();
469+
try ctx.processMessage(.{ .id = 10, .method = "Target.createTarget", .params = .{ .url = "about/blank" } });
470+
471+
// should create a browser context
472+
const bc = ctx.cdp().browser_context.?;
473+
try ctx.expectSentEvent("Target.targetCreated", .{ .targetInfo = .{ .url = "about:blank", .title = "about:blank", .attached = false, .type = "page", .canAccessOpener = false, .browserContextId = bc.id, .targetId = bc.target_id.? } }, .{});
474+
try ctx.expectSentEvent("Target.attachedToTarget", .{ .sessionId = bc.session_id.?, .targetInfo = .{ .url = "chrome://newtab/", .title = "about:blank", .attached = true, .type = "page", .canAccessOpener = false, .browserContextId = bc.id, .targetId = bc.target_id.? } }, .{});
472475
}
473476

477+
var ctx = testing.context();
478+
defer ctx.deinit();
474479
const bc = try ctx.loadBrowserContext(.{ .id = "BID-9" });
475480
{
476481
try testing.expectError(error.UnknownBrowserContextId, ctx.processMessage(.{ .id = 10, .method = "Target.createTarget", .params = .{ .browserContextId = "BID-8" } }));

0 commit comments

Comments
 (0)