mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
ShadowRoot stylesheet list
This commit is contained in:
parent
0d6bd24245
commit
3bb50cc479
8 changed files with 93 additions and 29 deletions
|
@ -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())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue