diff options
Diffstat (limited to 'components/selectors/tree.rs')
-rw-r--r-- | components/selectors/tree.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/components/selectors/tree.rs b/components/selectors/tree.rs index 42659bfc615..689d5c2359c 100644 --- a/components/selectors/tree.rs +++ b/components/selectors/tree.rs @@ -5,9 +5,9 @@ //! Traits that nodes must implement. Breaks the otherwise-cyclic dependency between layout and //! style. -use attr::AttrSelectorOperation; +use attr::{AttrSelectorOperation, NamespaceConstraint}; use matching::{ElementSelectorFlags, MatchingContext}; -use parser::{NamespaceConstraint, SelectorImpl}; +use parser::SelectorImpl; pub trait Element: Sized { type Impl: SelectorImpl; @@ -22,26 +22,29 @@ pub trait Element: Sized { self.parent_element() } - // Skips non-element nodes + /// Skips non-element nodes fn first_child_element(&self) -> Option<Self>; - // Skips non-element nodes + /// Skips non-element nodes fn last_child_element(&self) -> Option<Self>; - // Skips non-element nodes + /// Skips non-element nodes fn prev_sibling_element(&self) -> Option<Self>; - // Skips non-element nodes + /// Skips non-element nodes fn next_sibling_element(&self) -> Option<Self>; fn is_html_element_in_html_document(&self) -> bool; + fn get_local_name(&self) -> &<Self::Impl as SelectorImpl>::BorrowedLocalName; + + /// Empty string for no namespace fn get_namespace(&self) -> &<Self::Impl as SelectorImpl>::BorrowedNamespaceUrl; fn attr_matches(&self, - ns: &NamespaceConstraint<Self::Impl>, + ns: &NamespaceConstraint<&<Self::Impl as SelectorImpl>::NamespaceUrl>, local_name: &<Self::Impl as SelectorImpl>::LocalName, - operation: &AttrSelectorOperation<Self::Impl>) + operation: &AttrSelectorOperation<&<Self::Impl as SelectorImpl>::AttrValue>) -> bool; fn match_non_ts_pseudo_class<F>(&self, @@ -56,6 +59,7 @@ pub trait Element: Sized { -> bool; fn get_id(&self) -> Option<<Self::Impl as SelectorImpl>::Identifier>; + fn has_class(&self, name: &<Self::Impl as SelectorImpl>::ClassName) -> bool; /// Returns whether this element matches `:empty`. |