diff --git a/src/browser/Page.zig b/src/browser/Page.zig
index 19dd7f78..e9eda3f2 100644
--- a/src/browser/Page.zig
+++ b/src/browser/Page.zig
@@ -176,6 +176,8 @@ pub fn deinit(self: *Page) void {
log.debug(.page, "page.deinit", .{ .url = self.url });
}
self.js.deinit();
+ self._script_manager.shutdown = true;
+ self._session.browser.http_client.abort();
self._script_manager.deinit();
}
diff --git a/src/browser/tests/navigator.html b/src/browser/tests/navigator.html
deleted file mode 100644
index 7547b016..00000000
--- a/src/browser/tests/navigator.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
diff --git a/src/browser/webapi/Console.zig b/src/browser/webapi/Console.zig
index e3e856ab..3563f1c5 100644
--- a/src/browser/webapi/Console.zig
+++ b/src/browser/webapi/Console.zig
@@ -22,6 +22,7 @@ const js = @import("../js/js.zig");
const logger = @import("../../log.zig");
const Console = @This();
+_pad: bool = false,
pub const init: Console = .{};
diff --git a/src/browser/webapi/Crypto.zig b/src/browser/webapi/Crypto.zig
index 069715b8..e8f987b5 100644
--- a/src/browser/webapi/Crypto.zig
+++ b/src/browser/webapi/Crypto.zig
@@ -20,6 +20,9 @@ const std = @import("std");
const js = @import("../js/js.zig");
const Crypto = @This();
+_pad: bool = false,
+
+pub const init: Crypto = .{};
// We take a js.Value, because we want to return the same instance, not a new
// TypedArray
diff --git a/src/browser/webapi/Navigator.zig b/src/browser/webapi/Navigator.zig
index 981fc2e1..63b4cfc9 100644
--- a/src/browser/webapi/Navigator.zig
+++ b/src/browser/webapi/Navigator.zig
@@ -20,6 +20,7 @@ const builtin = @import("builtin");
const js = @import("../js/js.zig");
const Navigator = @This();
+_pad: bool = false,
pub const init: Navigator = .{};
@@ -120,7 +121,3 @@ pub const JsApi = struct {
pub const javaEnabled = bridge.function(Navigator.javaEnabled, .{});
};
-const testing = @import("../../testing.zig");
-test "WebApi: Navigator" {
- try testing.htmlRunner("navigator.html", .{});
-}
diff --git a/src/browser/webapi/Window.zig b/src/browser/webapi/Window.zig
index 1379f4ad..ecf3793d 100644
--- a/src/browser/webapi/Window.zig
+++ b/src/browser/webapi/Window.zig
@@ -34,12 +34,15 @@ const EventTarget = @import("EventTarget.zig");
const ErrorEvent = @import("event/ErrorEvent.zig");
const MediaQueryList = @import("css/MediaQueryList.zig");
const storage = @import("storage/storage.zig");
+const Element = @import("Element.zig");
+const CSSStyleDeclaration = @import("css/CSSStyleDeclaration.zig");
const CustomElementRegistry = @import("CustomElementRegistry.zig");
const Window = @This();
_proto: *EventTarget,
_document: *Document,
+_crypto: Crypto = .init,
_console: Console = .init,
_navigator: Navigator = .init,
_performance: Performance,
@@ -67,16 +70,17 @@ pub fn getDocument(self: *Window) *Document {
return self._document;
}
-pub fn getConsole(_: *const Window) Console {
- return .{};
+pub fn getConsole(self: *Window) *Console {
+ std.debug.print("getConsole\n", .{});
+ return &self._console;
}
-pub fn getNavigator(_: *const Window) Navigator {
- return .{};
+pub fn getNavigator(self: *Window) *Navigator {
+ return &self._navigator;
}
-pub fn getCrypto(_: *const Window) Crypto {
- return .{};
+pub fn getCrypto(self: *Window) *Crypto {
+ return &self._crypto;
}
pub fn getPerformance(self: *Window) *Performance {
@@ -210,6 +214,10 @@ pub fn matchMedia(_: *const Window, query: []const u8, page: *Page) !*MediaQuery
});
}
+pub fn getComputedStyle(_: *const Window, _: *Element, page: *Page) !@import("css/CSSStyleDeclaration.zig") {
+ return CSSStyleDeclaration.init(null, page);
+}
+
pub fn btoa(_: *const Window, input: []const u8, page: *Page) ![]const u8 {
const encoded_len = std.base64.standard.Encoder.calcSize(input.len);
const encoded = try page.call_arena.alloc(u8, encoded_len);
@@ -223,6 +231,7 @@ pub fn atob(_: *const Window, input: []const u8, page: *Page) ![]const u8 {
return decoded;
}
+
const ScheduleOpts = struct {
repeat: bool,
params: []js.Object,
@@ -384,6 +393,7 @@ pub const JsApi = struct {
return 1080;
}
}.wrap, null, .{ .cache = "innerHeight" });
+ pub const getComputedStyle = bridge.function(Window.getComputedStyle, .{});
};
const testing = @import("../../testing.zig");
diff --git a/src/browser/webapi/encoding/TextEncoder.zig b/src/browser/webapi/encoding/TextEncoder.zig
index c7066d5e..614187cd 100644
--- a/src/browser/webapi/encoding/TextEncoder.zig
+++ b/src/browser/webapi/encoding/TextEncoder.zig
@@ -20,6 +20,7 @@ const std = @import("std");
const js = @import("../../js/js.zig");
const TextEncoder = @This();
+_pad: bool = false,
pub fn init() TextEncoder {
return .{};