mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Extract out 'is the html body element' CSSOM concept.
This commit is contained in:
parent
5adf36231e
commit
2c9b00ef6b
2 changed files with 12 additions and 6 deletions
|
@ -47,6 +47,16 @@ impl HTMLBodyElement {
|
||||||
let element = HTMLBodyElement::new_inherited(localName, prefix, document);
|
let element = HTMLBodyElement::new_inherited(localName, prefix, document);
|
||||||
Node::reflect_node(box element, document, HTMLBodyElementBinding::Wrap)
|
Node::reflect_node(box element, document, HTMLBodyElementBinding::Wrap)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// https://drafts.csswg.org/cssom-view/#the-html-body-element
|
||||||
|
pub fn is_the_html_body_element(&self) -> bool {
|
||||||
|
let self_node = self.upcast::<Node>();
|
||||||
|
let root_elem = self.upcast::<Element>().root_element();
|
||||||
|
let root_node = root_elem.upcast::<Node>();
|
||||||
|
root_node.is_parent_of(self_node) &&
|
||||||
|
self_node.preceding_siblings().all(|n| !n.is::<HTMLBodyElement>())
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HTMLBodyElementMethods for HTMLBodyElement {
|
impl HTMLBodyElementMethods for HTMLBodyElement {
|
||||||
|
|
|
@ -594,12 +594,8 @@ impl Node {
|
||||||
|
|
||||||
let html_element = document.GetDocumentElement();
|
let html_element = document.GetDocumentElement();
|
||||||
|
|
||||||
let is_body_element = html_element.r().and_then(|root| {
|
let is_body_element = self.downcast::<HTMLBodyElement>()
|
||||||
let node = root.upcast::<Node>();
|
.map_or(false, |e| e.is_the_html_body_element());
|
||||||
node.children().find(|child| { child.is::<HTMLBodyElement>() }).map(|node| {
|
|
||||||
*node.r() == *self
|
|
||||||
})
|
|
||||||
}).unwrap_or(false);
|
|
||||||
|
|
||||||
let scroll_area = window.scroll_area_query(self.to_trusted_node_address());
|
let scroll_area = window.scroll_area_query(self.to_trusted_node_address());
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue