diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs
index d1f6d8e957f..f311d022470 100644
--- a/components/script/dom/htmllinkelement.rs
+++ b/components/script/dom/htmllinkelement.rs
@@ -22,6 +22,7 @@ use dom::eventtarget::EventTarget;
use dom::globalscope::GlobalScope;
use dom::htmlelement::HTMLElement;
use dom::node::{Node, document_from_node, window_from_node};
+use dom::stylesheet::StyleSheet as DOMStyleSheet;
use dom::virtualmethods::VirtualMethods;
use encoding::EncodingRef;
use encoding::all::UTF_8;
@@ -452,4 +453,9 @@ impl HTMLLinkElementMethods for HTMLLinkElement {
// https://html.spec.whatwg.org/multipage/#dom-link-target
make_setter!(SetTarget, "target");
+
+ // https://drafts.csswg.org/cssom/#dom-linkstyle-sheet
+ fn GetSheet(&self) -> Option> {
+ self.get_cssom_stylesheet().map(Root::upcast)
+ }
}
diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs
index d65153bee31..6a20bf06cdd 100644
--- a/components/script/dom/htmlstyleelement.rs
+++ b/components/script/dom/htmlstyleelement.rs
@@ -5,6 +5,7 @@
use cssparser::Parser as CssParser;
use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::HTMLStyleElementBinding;
+use dom::bindings::codegen::Bindings::HTMLStyleElementBinding::HTMLStyleElementMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
@@ -14,6 +15,7 @@ use dom::document::Document;
use dom::element::Element;
use dom::htmlelement::HTMLElement;
use dom::node::{ChildrenMutation, Node, document_from_node, window_from_node};
+use dom::stylesheet::StyleSheet as DOMStyleSheet;
use dom::virtualmethods::VirtualMethods;
use html5ever_atoms::LocalName;
use script_layout_interface::message::Msg;
@@ -117,3 +119,10 @@ impl VirtualMethods for HTMLStyleElement {
}
}
}
+
+impl HTMLStyleElementMethods for HTMLStyleElement {
+ // https://drafts.csswg.org/cssom/#dom-linkstyle-sheet
+ fn GetSheet(&self) -> Option> {
+ self.get_cssom_stylesheet().map(Root::upcast)
+ }
+}
diff --git a/components/script/dom/webidls/HTMLLinkElement.webidl b/components/script/dom/webidls/HTMLLinkElement.webidl
index 8c1bf496590..e7bec059efe 100644
--- a/components/script/dom/webidls/HTMLLinkElement.webidl
+++ b/components/script/dom/webidls/HTMLLinkElement.webidl
@@ -15,7 +15,7 @@ interface HTMLLinkElement : HTMLElement {
// also has obsolete members
};
-//HTMLLinkElement implements LinkStyle;
+HTMLLinkElement implements LinkStyle;
// https://html.spec.whatwg.org/multipage/#HTMLLinkElement-partial
partial interface HTMLLinkElement {
diff --git a/components/script/dom/webidls/HTMLStyleElement.webidl b/components/script/dom/webidls/HTMLStyleElement.webidl
index dd766f41d22..78926c2c1a8 100644
--- a/components/script/dom/webidls/HTMLStyleElement.webidl
+++ b/components/script/dom/webidls/HTMLStyleElement.webidl
@@ -8,4 +8,4 @@ interface HTMLStyleElement : HTMLElement {
// attribute DOMString type;
// attribute boolean scoped;
};
-//HTMLStyleElement implements LinkStyle;
+HTMLStyleElement implements LinkStyle;
diff --git a/components/script/dom/webidls/StyleSheet.webidl b/components/script/dom/webidls/StyleSheet.webidl
index a63e2a41f01..336bc6b282c 100644
--- a/components/script/dom/webidls/StyleSheet.webidl
+++ b/components/script/dom/webidls/StyleSheet.webidl
@@ -15,3 +15,9 @@ interface StyleSheet {
// [SameObject, PutForwards=mediaText] readonly attribute MediaList media;
// attribute boolean disabled;
};
+
+// https://drafts.csswg.org/cssom/#the-linkstyle-interface
+[NoInterfaceObject]
+interface LinkStyle {
+ readonly attribute StyleSheet? sheet;
+};