aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-02-05 20:50:44 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-26 10:17:47 +0200
commit3bb50cc4795c3ac98d25e2b54d871ded2c3f3fed (patch)
tree736690ba430ac32c66157ca93a2d304c5a969820 /components/script/dom/node.rs
parent0d6bd24245df02e8e745a273e37cd53d70c19ce6 (diff)
downloadservo-3bb50cc4795c3ac98d25e2b54d871ded2c3f3fed.tar.gz
servo-3bb50cc4795c3ac98d25e2b54d871ded2c3f3fed.zip
ShadowRoot stylesheet list
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r--components/script/dom/node.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index b20f8cf037e..e1a40c13982 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -54,6 +54,7 @@ use crate::dom::nodelist::NodeList;
use crate::dom::processinginstruction::ProcessingInstruction;
use crate::dom::range::WeakRangeVec;
use crate::dom::shadowroot::ShadowRoot;
+use crate::dom::stylesheetlist::StyleSheetListOwner;
use crate::dom::svgsvgelement::{LayoutSVGSVGElementHelpers, SVGSVGElement};
use crate::dom::text::Text;
use crate::dom::virtualmethods::{vtable_for, VirtualMethods};
@@ -2786,6 +2787,22 @@ pub fn document_from_node<T: DerivedFrom<Node> + DomObject>(derived: &T) -> DomR
derived.upcast().owner_doc()
}
+pub fn shadow_root_from_node<T: DerivedFrom<Node> + DomObject>(
+ derived: &T,
+) -> Option<DomRoot<ShadowRoot>> {
+ derived.upcast().owner_shadow_root()
+}
+
+pub fn stylesheets_owner_from_node<T: DerivedFrom<Node> + DomObject>(
+ derived: &T,
+) -> Box<StyleSheetListOwner> {
+ if let Some(shadow_root) = shadow_root_from_node(derived) {
+ Box::new(Dom::from_ref(&*shadow_root))
+ } else {
+ Box::new(Dom::from_ref(&*document_from_node(derived)))
+ }
+}
+
pub fn window_from_node<T: DerivedFrom<Node> + DomObject>(derived: &T) -> DomRoot<Window> {
let document = document_from_node(derived);
DomRoot::from_ref(document.window())