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 .{};