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; +};