diff --git a/src/browser/tests/element/html/style.html b/src/browser/tests/element/html/style.html
index c5fa9247..713d8e2e 100644
--- a/src/browser/tests/element/html/style.html
+++ b/src/browser/tests/element/html/style.html
@@ -38,6 +38,11 @@
testing.expectEqual(true, tempStyle.sheet instanceof CSSStyleSheet);
document.head.removeChild(tempStyle);
testing.expectEqual(null, tempStyle.sheet);
+
+ // ownerNode points back to the style element
+ const ownStyle = document.createElement('style');
+ document.head.appendChild(ownStyle);
+ testing.expectEqual(true, ownStyle.sheet.ownerNode === ownStyle);
}
diff --git a/src/browser/webapi/css/CSSStyleSheet.zig b/src/browser/webapi/css/CSSStyleSheet.zig
index 493e6506..5500f63c 100644
--- a/src/browser/webapi/css/CSSStyleSheet.zig
+++ b/src/browser/webapi/css/CSSStyleSheet.zig
@@ -1,6 +1,7 @@
const std = @import("std");
const js = @import("../../js/js.zig");
const Page = @import("../../Page.zig");
+const Element = @import("../Element.zig");
const CSSRuleList = @import("CSSRuleList.zig");
const CSSRule = @import("CSSRule.zig");
@@ -11,14 +12,18 @@ _title: []const u8 = "",
_disabled: bool = false,
_css_rules: ?*CSSRuleList = null,
_owner_rule: ?*CSSRule = null,
+_owner_node: ?*Element = null,
pub fn init(page: *Page) !*CSSStyleSheet {
return page._factory.create(CSSStyleSheet{});
}
-pub fn getOwnerNode(self: *const CSSStyleSheet) ?*CSSStyleSheet {
- _ = self;
- return null;
+pub fn initWithOwner(owner: *Element, page: *Page) !*CSSStyleSheet {
+ return page._factory.create(CSSStyleSheet{ ._owner_node = owner });
+}
+
+pub fn getOwnerNode(self: *const CSSStyleSheet) ?*Element {
+ return self._owner_node;
}
pub fn getHref(self: *const CSSStyleSheet) ?[]const u8 {
diff --git a/src/browser/webapi/element/html/Style.zig b/src/browser/webapi/element/html/Style.zig
index 3e489ed8..a46f1dde 100644
--- a/src/browser/webapi/element/html/Style.zig
+++ b/src/browser/webapi/element/html/Style.zig
@@ -92,7 +92,7 @@ pub fn getSheet(self: *Style, page: *Page) !?*CSSStyleSheet {
}
if (self._sheet) |sheet| return sheet;
- const sheet = try CSSStyleSheet.init(page);
+ const sheet = try CSSStyleSheet.initWithOwner(self.asElement(), page);
self._sheet = sheet;
return sheet;
}