aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_thread/dom_wrapper.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-09-05 06:33:16 -0400
committerGitHub <noreply@github.com>2018-09-05 06:33:16 -0400
commitd05cebdc6b68b93a239e848fd9d63a95edf5f09a (patch)
treedcf078d44dae6388e542595b6ab4284a83241816 /components/layout_thread/dom_wrapper.rs
parent4d1801424130d6fc8ee60d187930a0de2b119152 (diff)
parent840e696ad9857705352a897ce8c233ae7ccef604 (diff)
downloadservo-d05cebdc6b68b93a239e848fd9d63a95edf5f09a.tar.gz
servo-d05cebdc6b68b93a239e848fd9d63a95edf5f09a.zip
Auto merge of #21613 - pyfisch:layout_thread-fmt, r=Manishearth
Rustfmt layout_thread crate Part of #21373. Checked all changes looks good. :tada: Manually removed two optional semicolons within unsafe so that it is formatted in one line. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21613) <!-- Reviewable:end -->
Diffstat (limited to 'components/layout_thread/dom_wrapper.rs')
-rw-r--r--components/layout_thread/dom_wrapper.rs368
1 files changed, 211 insertions, 157 deletions
diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs
index 4800704fca8..204ff023c97 100644
--- a/components/layout_thread/dom_wrapper.rs
+++ b/components/layout_thread/dom_wrapper.rs
@@ -133,17 +133,13 @@ impl<'ln> ServoLayoutNode<'ln> {
}
fn script_type_id(&self) -> NodeTypeId {
- unsafe {
- self.node.type_id_for_layout()
- }
+ unsafe { self.node.type_id_for_layout() }
}
}
impl<'ln> NodeInfo for ServoLayoutNode<'ln> {
fn is_element(&self) -> bool {
- unsafe {
- self.node.is_element_for_layout()
- }
+ unsafe { self.node.is_element_for_layout() }
}
fn is_text_node(&self) -> bool {
@@ -152,7 +148,7 @@ impl<'ln> NodeInfo for ServoLayoutNode<'ln> {
}
#[derive(Clone, Copy, PartialEq)]
-enum Impossible { }
+enum Impossible {}
#[derive(Clone, Copy, PartialEq)]
pub struct ShadowRoot<'lr>(Impossible, PhantomData<&'lr ()>);
@@ -161,18 +157,18 @@ impl<'lr> TShadowRoot for ShadowRoot<'lr> {
type ConcreteNode = ServoLayoutNode<'lr>;
fn as_node(&self) -> Self::ConcreteNode {
- match self.0 { }
+ match self.0 {}
}
fn host(&self) -> ServoLayoutElement<'lr> {
- match self.0 { }
+ match self.0 {}
}
fn style_data<'a>(&self) -> Option<&'a CascadeData>
where
Self: 'a,
{
- match self.0 { }
+ match self.0 {}
}
}
@@ -183,31 +179,41 @@ impl<'ln> TNode for ServoLayoutNode<'ln> {
fn parent_node(&self) -> Option<Self> {
unsafe {
- self.node.parent_node_ref().map(|node| self.new_with_this_lifetime(&node))
+ self.node
+ .parent_node_ref()
+ .map(|node| self.new_with_this_lifetime(&node))
}
}
fn first_child(&self) -> Option<Self> {
unsafe {
- self.node.first_child_ref().map(|node| self.new_with_this_lifetime(&node))
+ self.node
+ .first_child_ref()
+ .map(|node| self.new_with_this_lifetime(&node))
}
}
fn last_child(&self) -> Option<Self> {
unsafe {
- self.node.last_child_ref().map(|node| self.new_with_this_lifetime(&node))
+ self.node
+ .last_child_ref()
+ .map(|node| self.new_with_this_lifetime(&node))
}
}
fn prev_sibling(&self) -> Option<Self> {
unsafe {
- self.node.prev_sibling_ref().map(|node| self.new_with_this_lifetime(&node))
+ self.node
+ .prev_sibling_ref()
+ .map(|node| self.new_with_this_lifetime(&node))
}
}
fn next_sibling(&self) -> Option<Self> {
unsafe {
- self.node.next_sibling_ref().map(|node| self.new_with_this_lifetime(&node))
+ self.node
+ .next_sibling_ref()
+ .map(|node| self.new_with_this_lifetime(&node))
}
}
@@ -232,7 +238,9 @@ impl<'ln> TNode for ServoLayoutNode<'ln> {
}
fn as_document(&self) -> Option<ServoLayoutDocument<'ln>> {
- self.node.downcast().map(ServoLayoutDocument::from_layout_js)
+ self.node
+ .downcast()
+ .map(ServoLayoutDocument::from_layout_js)
}
fn as_shadow_root(&self) -> Option<ShadowRoot<'ln>> {
@@ -257,8 +265,7 @@ impl<'ln> LayoutNode for ServoLayoutNode<'ln> {
unsafe fn initialize_data(&self) {
if self.get_raw_data().is_none() {
- let ptr: *mut StyleAndLayoutData =
- Box::into_raw(Box::new(StyleAndLayoutData::new()));
+ let ptr: *mut StyleAndLayoutData = Box::into_raw(Box::new(StyleAndLayoutData::new()));
let opaque = OpaqueStyleAndLayoutData {
ptr: NonNull::new_unchecked(ptr as *mut StyleData),
};
@@ -277,9 +284,7 @@ impl<'ln> LayoutNode for ServoLayoutNode<'ln> {
impl<'ln> GetLayoutData for ServoLayoutNode<'ln> {
fn get_style_and_layout_data(&self) -> Option<OpaqueStyleAndLayoutData> {
- unsafe {
- self.get_jsmanaged().get_style_and_layout_data()
- }
+ unsafe { self.get_jsmanaged().get_style_and_layout_data() }
}
}
@@ -334,20 +339,26 @@ impl<'ld> TDocument for ServoLayoutDocument<'ld> {
impl<'ld> ServoLayoutDocument<'ld> {
pub fn root_element(&self) -> Option<ServoLayoutElement<'ld>> {
- self.as_node().dom_children().flat_map(|n| n.as_element()).next()
+ self.as_node()
+ .dom_children()
+ .flat_map(|n| n.as_element())
+ .next()
}
pub fn drain_pending_restyles(&self) -> Vec<(ServoLayoutElement<'ld>, PendingRestyle)> {
- let elements = unsafe { self.document.drain_pending_restyles() };
- elements.into_iter().map(|(el, snapshot)| (ServoLayoutElement::from_layout_js(el), snapshot)).collect()
+ let elements = unsafe { self.document.drain_pending_restyles() };
+ elements
+ .into_iter()
+ .map(|(el, snapshot)| (ServoLayoutElement::from_layout_js(el), snapshot))
+ .collect()
}
pub fn needs_paint_from_layout(&self) {
- unsafe { self.document.needs_paint_from_layout(); }
+ unsafe { self.document.needs_paint_from_layout() }
}
pub fn will_paint(&self) {
- unsafe { self.document.will_paint(); }
+ unsafe { self.document.will_paint() }
}
pub fn style_shared_lock(&self) -> &StyleSharedRwLock {
@@ -407,7 +418,9 @@ impl<'le> TElement for ServoLayoutElement<'le> {
fn style_attribute(&self) -> Option<ArcBorrow<StyleLocked<PropertyDeclarationBlock>>> {
unsafe {
- (*self.element.style_attribute()).as_ref().map(|x| x.borrow_arc())
+ (*self.element.style_attribute())
+ .as_ref()
+ .map(|x| x.borrow_arc())
}
}
@@ -422,13 +435,14 @@ impl<'le> TElement for ServoLayoutElement<'le> {
#[inline]
fn id(&self) -> Option<&Atom> {
- unsafe {
- (*self.element.id_attribute()).as_ref()
- }
+ unsafe { (*self.element.id_attribute()).as_ref() }
}
#[inline(always)]
- fn each_class<F>(&self, mut callback: F) where F: FnMut(&Atom) {
+ fn each_class<F>(&self, mut callback: F)
+ where
+ F: FnMut(&Atom),
+ {
unsafe {
if let Some(ref classes) = self.element.get_classes_for_layout() {
for class in *classes {
@@ -439,7 +453,11 @@ impl<'le> TElement for ServoLayoutElement<'le> {
}
fn has_dirty_descendants(&self) -> bool {
- unsafe { self.as_node().node.get_flag(NodeFlags::HAS_DIRTY_DESCENDANTS) }
+ unsafe {
+ self.as_node()
+ .node
+ .get_flag(NodeFlags::HAS_DIRTY_DESCENDANTS)
+ }
}
fn has_snapshot(&self) -> bool {
@@ -451,26 +469,37 @@ impl<'le> TElement for ServoLayoutElement<'le> {
}
unsafe fn set_handled_snapshot(&self) {
- self.as_node().node.set_flag(NodeFlags::HANDLED_SNAPSHOT, true);
+ self.as_node()
+ .node
+ .set_flag(NodeFlags::HANDLED_SNAPSHOT, true);
}
unsafe fn set_dirty_descendants(&self) {
debug_assert!(self.as_node().is_in_document());
- self.as_node().node.set_flag(NodeFlags::HAS_DIRTY_DESCENDANTS, true)
+ self.as_node()
+ .node
+ .set_flag(NodeFlags::HAS_DIRTY_DESCENDANTS, true)
}
unsafe fn unset_dirty_descendants(&self) {
- self.as_node().node.set_flag(NodeFlags::HAS_DIRTY_DESCENDANTS, false)
+ self.as_node()
+ .node
+ .set_flag(NodeFlags::HAS_DIRTY_DESCENDANTS, false)
}
fn store_children_to_process(&self, n: isize) {
let data = self.get_style_data().unwrap();
- data.parallel.children_to_process.store(n, Ordering::Relaxed);
+ data.parallel
+ .children_to_process
+ .store(n, Ordering::Relaxed);
}
fn did_process_child(&self) -> isize {
let data = self.get_style_data().unwrap();
- let old_value = data.parallel.children_to_process.fetch_sub(1, Ordering::Relaxed);
+ let old_value = data
+ .parallel
+ .children_to_process
+ .fetch_sub(1, Ordering::Relaxed);
debug_assert!(old_value >= 1);
old_value - 1
}
@@ -488,9 +517,8 @@ impl<'le> TElement for ServoLayoutElement<'le> {
fn get_data(&self) -> Option<&AtomicRefCell<ElementData>> {
unsafe {
- self.get_style_and_layout_data().map(|d| {
- &(*(d.ptr.as_ptr() as *mut StyleData)).element_data
- })
+ self.get_style_and_layout_data()
+ .map(|d| &(*(d.ptr.as_ptr() as *mut StyleData)).element_data)
}
}
@@ -566,12 +594,12 @@ impl<'le> TElement for ServoLayoutElement<'le> {
&self,
_visited_handling: VisitedHandlingMode,
hints: &mut V,
- )
- where
+ ) where
V: Push<ApplicableDeclarationBlock>,
{
unsafe {
- self.element.synthesize_presentational_hints_for_legacy_attributes(hints);
+ self.element
+ .synthesize_presentational_hints_for_legacy_attributes(hints);
}
}
@@ -608,26 +636,25 @@ impl<'le> ServoLayoutElement<'le> {
#[inline]
fn get_attr_enum(&self, namespace: &Namespace, name: &LocalName) -> Option<&AttrValue> {
- unsafe {
- (*self.element.unsafe_get()).get_attr_for_layout(namespace, name)
- }
+ unsafe { (*self.element.unsafe_get()).get_attr_for_layout(namespace, name) }
}
#[inline]
fn get_attr(&self, namespace: &Namespace, name: &LocalName) -> Option<&str> {
- unsafe {
- (*self.element.unsafe_get()).get_attr_val_for_layout(namespace, name)
- }
+ unsafe { (*self.element.unsafe_get()).get_attr_val_for_layout(namespace, name) }
}
fn get_style_data(&self) -> Option<&StyleData> {
unsafe {
- self.get_style_and_layout_data().map(|d| &*(d.ptr.as_ptr() as *mut StyleData))
+ self.get_style_and_layout_data()
+ .map(|d| &*(d.ptr.as_ptr() as *mut StyleData))
}
}
pub unsafe fn unset_snapshot_flags(&self) {
- self.as_node().node.set_flag(NodeFlags::HAS_SNAPSHOT | NodeFlags::HANDLED_SNAPSHOT, false);
+ self.as_node()
+ .node
+ .set_flag(NodeFlags::HAS_SNAPSHOT | NodeFlags::HANDLED_SNAPSHOT, false);
}
pub unsafe fn set_has_snapshot(&self) {
@@ -662,9 +689,7 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
}
fn parent_element(&self) -> Option<ServoLayoutElement<'le>> {
- unsafe {
- self.element.upcast().parent_node_ref().and_then(as_element)
- }
+ unsafe { self.element.upcast().parent_node_ref().and_then(as_element) }
}
fn parent_node_is_shadow_root(&self) -> bool {
@@ -679,7 +704,7 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
let mut node = self.as_node();
while let Some(sibling) = node.prev_sibling() {
if let Some(element) = sibling.as_element() {
- return Some(element)
+ return Some(element);
}
node = sibling;
}
@@ -690,52 +715,51 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
let mut node = self.as_node();
while let Some(sibling) = node.next_sibling() {
if let Some(element) = sibling.as_element() {
- return Some(element)
+ return Some(element);
}
node = sibling;
}
None
}
- fn attr_matches(&self,
- ns: &NamespaceConstraint<&Namespace>,
- local_name: &LocalName,
- operation: &AttrSelectorOperation<&String>)
- -> bool {
+ fn attr_matches(
+ &self,
+ ns: &NamespaceConstraint<&Namespace>,
+ local_name: &LocalName,
+ operation: &AttrSelectorOperation<&String>,
+ ) -> bool {
match *ns {
- NamespaceConstraint::Specific(ref ns) => {
- self.get_attr_enum(ns, local_name)
- .map_or(false, |value| value.eval_selector(operation))
- }
+ NamespaceConstraint::Specific(ref ns) => self
+ .get_attr_enum(ns, local_name)
+ .map_or(false, |value| value.eval_selector(operation)),
NamespaceConstraint::Any => {
- let values = unsafe {
- (*self.element.unsafe_get()).get_attr_vals_for_layout(local_name)
- };
+ let values =
+ unsafe { (*self.element.unsafe_get()).get_attr_vals_for_layout(local_name) };
values.iter().any(|value| value.eval_selector(operation))
- }
+ },
}
}
fn is_root(&self) -> bool {
match self.as_node().parent_node() {
None => false,
- Some(node) => {
- match node.script_type_id() {
- NodeTypeId::Document(_) => true,
- _ => false
- }
+ Some(node) => match node.script_type_id() {
+ NodeTypeId::Document(_) => true,
+ _ => false,
},
}
}
fn is_empty(&self) -> bool {
- self.as_node().dom_children().all(|node| match node.script_type_id() {
- NodeTypeId::Element(..) => false,
- NodeTypeId::CharacterData(CharacterDataTypeId::Text) => unsafe {
- node.node.downcast().unwrap().data_for_layout().is_empty()
- },
- _ => true
- })
+ self.as_node()
+ .dom_children()
+ .all(|node| match node.script_type_id() {
+ NodeTypeId::Element(..) => false,
+ NodeTypeId::CharacterData(CharacterDataTypeId::Text) => unsafe {
+ node.node.downcast().unwrap().data_for_layout().is_empty()
+ },
+ _ => true,
+ })
}
#[inline]
@@ -767,24 +791,26 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
{
match *pseudo_class {
// https://github.com/servo/servo/issues/8718
- NonTSPseudoClass::Link |
- NonTSPseudoClass::AnyLink => self.is_link(),
+ NonTSPseudoClass::Link | NonTSPseudoClass::AnyLink => self.is_link(),
NonTSPseudoClass::Visited => false,
NonTSPseudoClass::Lang(ref lang) => self.match_element_lang(None, &*lang),
NonTSPseudoClass::ServoNonZeroBorder => unsafe {
- match (*self.element.unsafe_get()).get_attr_for_layout(&ns!(), &local_name!("border")) {
+ match (*self.element.unsafe_get())
+ .get_attr_for_layout(&ns!(), &local_name!("border"))
+ {
None | Some(&AttrValue::UInt(_, 0)) => false,
_ => true,
}
},
- NonTSPseudoClass::ServoCaseSensitiveTypeAttr(ref expected_value) => {
- self.get_attr_enum(&ns!(), &local_name!("type"))
- .map_or(false, |attr| attr == expected_value)
- }
- NonTSPseudoClass::ReadOnly =>
- !self.element.get_state_for_layout().contains(pseudo_class.state_flag()),
+ NonTSPseudoClass::ServoCaseSensitiveTypeAttr(ref expected_value) => self
+ .get_attr_enum(&ns!(), &local_name!("type"))
+ .map_or(false, |attr| attr == expected_value),
+ NonTSPseudoClass::ReadOnly => !self
+ .element
+ .get_state_for_layout()
+ .contains(pseudo_class.state_flag()),
NonTSPseudoClass::Active |
NonTSPseudoClass::Focus |
@@ -796,8 +822,10 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
NonTSPseudoClass::Indeterminate |
NonTSPseudoClass::ReadWrite |
NonTSPseudoClass::PlaceholderShown |
- NonTSPseudoClass::Target =>
- self.element.get_state_for_layout().contains(pseudo_class.state_flag())
+ NonTSPseudoClass::Target => self
+ .element
+ .get_state_for_layout()
+ .contains(pseudo_class.state_flag()),
}
}
@@ -806,10 +834,17 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
unsafe {
match self.as_node().script_type_id() {
// https://html.spec.whatwg.org/multipage/#selector-link
- NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAnchorElement)) |
- NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAreaElement)) |
- NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLinkElement)) =>
- (*self.element.unsafe_get()).get_attr_val_for_layout(&ns!(), &local_name!("href")).is_some(),
+ NodeTypeId::Element(ElementTypeId::HTMLElement(
+ HTMLElementTypeId::HTMLAnchorElement,
+ )) |
+ NodeTypeId::Element(ElementTypeId::HTMLElement(
+ HTMLElementTypeId::HTMLAreaElement,
+ )) |
+ NodeTypeId::Element(ElementTypeId::HTMLElement(
+ HTMLElementTypeId::HTMLLinkElement,
+ )) => (*self.element.unsafe_get())
+ .get_attr_val_for_layout(&ns!(), &local_name!("href"))
+ .is_some(),
_ => false,
}
}
@@ -826,16 +861,11 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
#[inline]
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
- unsafe {
- self.element.has_class_for_layout(name, case_sensitivity)
- }
+ unsafe { self.element.has_class_for_layout(name, case_sensitivity) }
}
fn is_html_slot_element(&self) -> bool {
- unsafe {
- self.element.is_html_element() &&
- self.local_name() == &local_name!("slot")
- }
+ unsafe { self.element.is_html_element() && self.local_name() == &local_name!("slot") }
}
fn is_html_element_in_html_document(&self) -> bool {
@@ -868,18 +898,23 @@ impl<'a> PartialEq for ServoThreadSafeLayoutNode<'a> {
impl<'ln> DangerousThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
unsafe fn dangerous_first_child(&self) -> Option<Self> {
- self.get_jsmanaged().first_child_ref()
- .map(|node| self.new_with_this_lifetime(&node))
+ self.get_jsmanaged()
+ .first_child_ref()
+ .map(|node| self.new_with_this_lifetime(&node))
}
unsafe fn dangerous_next_sibling(&self) -> Option<Self> {
- self.get_jsmanaged().next_sibling_ref()
- .map(|node| self.new_with_this_lifetime(&node))
+ self.get_jsmanaged()
+ .next_sibling_ref()
+ .map(|node| self.new_with_this_lifetime(&node))
}
}
impl<'ln> ServoThreadSafeLayoutNode<'ln> {
/// Creates a new layout node with the same lifetime as this layout node.
- pub unsafe fn new_with_this_lifetime(&self, node: &LayoutDom<Node>) -> ServoThreadSafeLayoutNode<'ln> {
+ pub unsafe fn new_with_this_lifetime(
+ &self,
+ node: &LayoutDom<Node>,
+ ) -> ServoThreadSafeLayoutNode<'ln> {
ServoThreadSafeLayoutNode {
node: self.node.new_with_this_lifetime(node),
pseudo: PseudoElementType::Normal,
@@ -944,10 +979,12 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
}
fn as_element(&self) -> Option<ServoThreadSafeLayoutElement<'ln>> {
- self.node.as_element().map(|el| ServoThreadSafeLayoutElement {
- element: el,
- pseudo: self.pseudo,
- })
+ self.node
+ .as_element()
+ .map(|el| ServoThreadSafeLayoutElement {
+ element: el,
+ pseudo: self.pseudo,
+ })
}
fn get_style_and_layout_data(&self) -> Option<OpaqueStyleAndLayoutData> {
@@ -958,11 +995,11 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
unsafe {
let text: LayoutDom<Text> = match self.get_jsmanaged().downcast() {
Some(text) => text,
- None => return false
+ None => return false,
};
if !is_whitespace(text.upcast().data_for_layout()) {
- return false
+ return false;
}
// NB: See the rules for `white-space` here:
@@ -971,7 +1008,11 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
//
// If you implement other values for this property, you will almost certainly
// want to update this check.
- !self.style(context).get_inherited_text().white_space.preserve_newlines()
+ !self
+ .style(context)
+ .get_inherited_text()
+ .white_space
+ .preserve_newlines()
}
}
@@ -988,8 +1029,10 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
let this = unsafe { self.get_jsmanaged() };
this.selection().map(|range| {
- Range::new(ByteIndex(range.start as isize),
- ByteIndex(range.len() as isize))
+ Range::new(
+ ByteIndex(range.start as isize),
+ ByteIndex(range.len() as isize),
+ )
})
}
@@ -1022,13 +1065,19 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
fn get_colspan(&self) -> u32 {
unsafe {
- self.get_jsmanaged().downcast::<Element>().unwrap().get_colspan()
+ self.get_jsmanaged()
+ .downcast::<Element>()
+ .unwrap()
+ .get_colspan()
}
}
fn get_rowspan(&self) -> u32 {
unsafe {
- self.get_jsmanaged().downcast::<Element>().unwrap().get_rowspan()
+ self.get_jsmanaged()
+ .downcast::<Element>()
+ .unwrap()
+ .get_rowspan()
}
}
}
@@ -1039,16 +1088,17 @@ pub struct ThreadSafeLayoutNodeChildrenIterator<ConcreteNode: ThreadSafeLayoutNo
}
impl<ConcreteNode> ThreadSafeLayoutNodeChildrenIterator<ConcreteNode>
- where ConcreteNode: DangerousThreadSafeLayoutNode {
+where
+ ConcreteNode: DangerousThreadSafeLayoutNode,
+{
pub fn new(parent: ConcreteNode) -> Self {
let first_child: Option<ConcreteNode> = match parent.get_pseudo_element_type() {
- PseudoElementType::Normal => {
- parent.get_before_pseudo().or_else(|| parent.get_details_summary_pseudo()).or_else(|| {
- unsafe { parent.dangerous_first_child() }
- })
- },
- PseudoElementType::DetailsContent | PseudoElementType::DetailsSummary => {
- unsafe { parent.dangerous_first_child() }
+ PseudoElementType::Normal => parent
+ .get_before_pseudo()
+ .or_else(|| parent.get_details_summary_pseudo())
+ .or_else(|| unsafe { parent.dangerous_first_child() }),
+ PseudoElementType::DetailsContent | PseudoElementType::DetailsSummary => unsafe {
+ parent.dangerous_first_child()
},
_ => None,
};
@@ -1060,7 +1110,9 @@ impl<ConcreteNode> ThreadSafeLayoutNodeChildrenIterator<ConcreteNode>
}
impl<ConcreteNode> Iterator for ThreadSafeLayoutNodeChildrenIterator<ConcreteNode>
- where ConcreteNode: DangerousThreadSafeLayoutNode {
+where
+ ConcreteNode: DangerousThreadSafeLayoutNode,
+{
type Item = ConcreteNode;
fn next(&mut self) -> Option<ConcreteNode> {
use ::selectors::Element;
@@ -1073,7 +1125,8 @@ impl<ConcreteNode> Iterator for ThreadSafeLayoutNodeChildrenIterator<ConcreteNod
let next_node = if let Some(ref node) = current_node {
if let Some(element) = node.as_element() {
if element.local_name() == &local_name!("summary") &&
- element.namespace() == &ns!(html) {
+ element.namespace() == &ns!(html)
+ {
self.current_node = None;
return Some(node.clone());
}
@@ -1081,18 +1134,19 @@ impl<ConcreteNode> Iterator for ThreadSafeLayoutNodeChildrenIterator<ConcreteNod
unsafe { node.dangerous_next_sibling() }
} else {
self.current_node = None;
- return None
+ return None;
};
current_node = next_node;
}
- }
+ },
PseudoElementType::DetailsContent => {
let node = self.current_node.clone();
let node = node.and_then(|node| {
if node.is_element() &&
- node.as_element().unwrap().local_name() == &local_name!("summary") &&
- node.as_element().unwrap().namespace() == &ns!(html) {
+ node.as_element().unwrap().local_name() == &local_name!("summary") &&
+ node.as_element().unwrap().namespace() == &ns!(html)
+ {
unsafe { node.dangerous_next_sibling() }
} else {
Some(node)
@@ -1100,28 +1154,28 @@ impl<ConcreteNode> Iterator for ThreadSafeLayoutNodeChildrenIterator<ConcreteNod
});
self.current_node = node.and_then(|node| unsafe { node.dangerous_next_sibling() });
node
- }
+ },
PseudoElementType::Normal => {
let node = self.current_node.clone();
if let Some(ref node) = node {
self.current_node = match node.get_pseudo_element_type() {
- PseudoElementType::Before => {
- self.parent_node.get_details_summary_pseudo()
- .or_else(|| unsafe { self.parent_node.dangerous_first_child() })
- .or_else(|| self.parent_node.get_after_pseudo())
+ PseudoElementType::Before => self
+ .parent_node
+ .get_details_summary_pseudo()
+ .or_else(|| unsafe { self.parent_node.dangerous_first_child() })
+ .or_else(|| self.parent_node.get_after_pseudo()),
+ PseudoElementType::Normal => unsafe { node.dangerous_next_sibling() }
+ .or_else(|| self.parent_node.get_after_pseudo()),
+ PseudoElementType::DetailsSummary => {
+ self.parent_node.get_details_content_pseudo()
},
- PseudoElementType::Normal => {
- unsafe { node.dangerous_next_sibling() }.or_else(|| self.parent_node.get_after_pseudo())
- },
- PseudoElementType::DetailsSummary => self.parent_node.get_details_content_pseudo(),
PseudoElementType::DetailsContent => self.parent_node.get_after_pseudo(),
PseudoElementType::After => None,
};
}
node
- }
-
+ },
}
}
}
@@ -1176,7 +1230,8 @@ impl<'le> ThreadSafeLayoutElement for ServoThreadSafeLayoutElement<'le> {
}
fn style_data(&self) -> AtomicRef<ElementData> {
- self.element.get_data()
+ self.element
+ .get_data()
.expect("Unstyled layout node?")
.borrow()
}
@@ -1201,7 +1256,6 @@ impl<'le> ::selectors::Element for ServoThreadSafeLayoutElement<'le> {
::selectors::OpaqueElement::new(self.as_node().opaque().0 as *const ())
}
-
fn parent_element(&self) -> Option<Self> {
warn!("ServoThreadSafeLayoutElement::parent_element called");
None
@@ -1249,27 +1303,27 @@ impl<'le> ::selectors::Element for ServoThreadSafeLayoutElement<'le> {
fn match_pseudo_element(
&self,
_pseudo: &PseudoElement,
- _context: &mut MatchingContext<Self::Impl>
+ _context: &mut MatchingContext<Self::Impl>,
) -> bool {
false
}
- fn attr_matches(&self,
- ns: &NamespaceConstraint<&Namespace>,
- local_name: &LocalName,
- operation: &AttrSelectorOperation<&String>)
- -> bool {
+ fn attr_matches(
+ &self,
+ ns: &NamespaceConstraint<&Namespace>,
+ local_name: &LocalName,
+ operation: &AttrSelectorOperation<&String>,
+ ) -> bool {
match *ns {
- NamespaceConstraint::Specific(ref ns) => {
- self.get_attr_enum(ns, local_name)
- .map_or(false, |value| value.eval_selector(operation))
- }
+ NamespaceConstraint::Specific(ref ns) => self
+ .get_attr_enum(ns, local_name)
+ .map_or(false, |value| value.eval_selector(operation)),
NamespaceConstraint::Any => {
let values = unsafe {
(*self.element.element.unsafe_get()).get_attr_vals_for_layout(local_name)
};
values.iter().any(|v| v.eval_selector(operation))
- }
+ },
}
}