diff --git a/src/browser/Factory.zig b/src/browser/Factory.zig
index bd04da75..b1b41f9d 100644
--- a/src/browser/Factory.zig
+++ b/src/browser/Factory.zig
@@ -10,6 +10,7 @@ const Page = @import("Page.zig");
const Node = @import("webapi/Node.zig");
const Event = @import("webapi/Event.zig");
const Element = @import("webapi/Element.zig");
+const Document = @import("webapi/Document.zig");
const EventTarget = @import("webapi/EventTarget.zig");
const XMLHttpRequestEventTarget = @import("webapi/net/XMLHttpRequestEventTarget.zig");
@@ -98,6 +99,16 @@ pub fn node(self: *Factory, child: anytype) !*@TypeOf(child) {
return child_ptr;
}
+pub fn document(self: *Factory, child: anytype) !*@TypeOf(child) {
+ const child_ptr = try self.createT(@TypeOf(child));
+ child_ptr.* = child;
+ child_ptr._proto = try self.node(Document{
+ ._proto = undefined,
+ ._type = unionInit(Document.Type, child_ptr),
+ });
+ return child_ptr;
+}
+
pub fn element(self: *Factory, child: anytype) !*@TypeOf(child) {
const child_ptr = try self.createT(@TypeOf(child));
child_ptr.* = child;
diff --git a/src/browser/Page.zig b/src/browser/Page.zig
index 1851bdc2..b44dfb3c 100644
--- a/src/browser/Page.zig
+++ b/src/browser/Page.zig
@@ -136,7 +136,7 @@ fn reset(self: *Page, comptime initializing: bool) !void {
self.version = 0;
self.url = "about/blank";
- self.document = try self._factory.node(Document{ ._proto = undefined });
+ self.document = (try self._factory.document(Node.Document.HTMLDocument{ ._proto = undefined })).asDocument();
const storage_bucket = try self._factory.create(storage.Bucket{});
self.window = try self._factory.eventTarget(Window{
diff --git a/src/browser/js/bridge.zig b/src/browser/js/bridge.zig
index 1e9e9739..6928a495 100644
--- a/src/browser/js/bridge.zig
+++ b/src/browser/js/bridge.zig
@@ -417,6 +417,7 @@ pub const JsApis = flattenTypes(&.{
@import("../webapi/css/CSSStyleDeclaration.zig"),
@import("../webapi/css/CSSStyleProperties.zig"),
@import("../webapi/Document.zig"),
+ @import("../webapi/HTMLDocument.zig"),
@import("../webapi/DocumentFragment.zig"),
@import("../webapi/DOMException.zig"),
@import("../webapi/DOMTreeWalker.zig"),
diff --git a/src/browser/tests/page/meta.html b/src/browser/tests/page/meta.html
index fe2d3269..bf310c41 100644
--- a/src/browser/tests/page/meta.html
+++ b/src/browser/tests/page/meta.html
@@ -1,7 +1,8 @@
diff --git a/src/browser/tests/page/module.html b/src/browser/tests/page/module.html
index 4a431b1f..f3dae6d1 100644
--- a/src/browser/tests/page/module.html
+++ b/src/browser/tests/page/module.html
@@ -1,7 +1,7 @@
-
@@ -33,7 +33,7 @@
import { increment, getCount } from "./modules/shared.js";
testing.expectEqual(2, increment());
testing.expectEqual(2, getCount());
-
+ -->
-
@@ -145,7 +145,7 @@
testing.expectEqual('from-base', m.importedValue);
testing.expectEqual('local', m.localValue);
})();
-
+ -->