diff --git a/src/browser/tests/frames/cross_origin_message_source.html b/src/browser/tests/frames/cross_origin_message_source.html
new file mode 100644
index 000000000..87f553bf6
--- /dev/null
+++ b/src/browser/tests/frames/cross_origin_message_source.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
diff --git a/src/browser/tests/frames/support/post_to_parent.html b/src/browser/tests/frames/support/post_to_parent.html
new file mode 100644
index 000000000..8de6a0c43
--- /dev/null
+++ b/src/browser/tests/frames/support/post_to_parent.html
@@ -0,0 +1,4 @@
+
+
diff --git a/src/browser/webapi/event/MessageEvent.zig b/src/browser/webapi/event/MessageEvent.zig
index 2bd071472..47188f3b6 100644
--- a/src/browser/webapi/event/MessageEvent.zig
+++ b/src/browser/webapi/event/MessageEvent.zig
@@ -21,6 +21,7 @@ const lp = @import("lightpanda");
const js = @import("../../js/js.zig");
const Page = @import("../../Page.zig");
+const Frame = @import("../../Frame.zig");
const Event = @import("../Event.zig");
const MessagePort = @import("../MessagePort.zig");
@@ -116,8 +117,9 @@ pub fn getOrigin(self: *const MessageEvent) []const u8 {
return self._origin;
}
-pub fn getSource(self: *const MessageEvent) ?*Window {
- return self._source;
+pub fn getSource(self: *const MessageEvent, frame: *Frame) ?Window.Access {
+ const source = self._source orelse return null;
+ return Window.Access.init(frame.window, source);
}
pub fn getPorts(self: *const MessageEvent) []const *MessagePort {