browser: pass vm as argument

This commit is contained in:
Pierre Tachoire
2024-01-15 16:49:37 +01:00
parent 3f23f2e7ef
commit 4408c3dc5d
2 changed files with 9 additions and 13 deletions

View File

@@ -22,21 +22,17 @@ const log = std.log.scoped(.browser);
// Browser is an instance of the browser. // Browser is an instance of the browser.
// You can create multiple browser instances. // You can create multiple browser instances.
// It contains only one session but initVM() and deinitVM() must be called only // A browser contains only one session.
// once per main. // TODO allow multiple sessions per browser.
pub const Browser = struct { pub const Browser = struct {
allocator: std.mem.Allocator, allocator: std.mem.Allocator,
session: *Session = undefined, session: *Session = undefined,
var vm: jsruntime.VM = undefined; pub fn init(allocator: std.mem.Allocator, vm: jsruntime.VM) !Browser {
pub fn initVM() void { // We want to ensure the caller initialised a VM, but the browser
vm = jsruntime.VM.init(); // doesn't use it directly...
} _ = vm;
pub fn deinitVM() void {
vm.deinit();
}
pub fn init(allocator: std.mem.Allocator) !Browser {
return Browser{ return Browser{
.allocator = allocator, .allocator = allocator,
.session = try Session.init(allocator, "about:blank"), .session = try Session.init(allocator, "about:blank"),

View File

@@ -57,10 +57,10 @@ pub fn main() !void {
std.os.exit(1); std.os.exit(1);
} }
Browser.initVM(); const vm = jsruntime.VM.init();
defer Browser.deinitVM(); defer vm.deinit();
var browser = try Browser.init(allocator); var browser = try Browser.init(allocator, vm);
defer browser.deinit(); defer browser.deinit();
var page = try browser.currentSession().createPage(); var page = try browser.currentSession().createPage();