mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #5674 - nox:get_unsound_ref_forever-misc, r=Ms2ger
This commit is contained in:
commit
2dfa28f186
1 changed files with 15 additions and 15 deletions
|
@ -826,19 +826,16 @@ impl<'a> NodeHelpers for JSRef<'a, Node> {
|
||||||
unsafe fn query_selector_iter(self, selectors: DOMString)
|
unsafe fn query_selector_iter(self, selectors: DOMString)
|
||||||
-> Fallible<QuerySelectorIterator> {
|
-> Fallible<QuerySelectorIterator> {
|
||||||
// Step 1.
|
// Step 1.
|
||||||
let nodes;
|
|
||||||
let root = self.ancestors().last().root()
|
|
||||||
.map(|node| node.get_unsound_ref_forever())
|
|
||||||
.unwrap_or(self.clone());
|
|
||||||
match parse_author_origin_selector_list_from_str(selectors.as_slice()) {
|
match parse_author_origin_selector_list_from_str(selectors.as_slice()) {
|
||||||
// Step 2.
|
// Step 2.
|
||||||
Err(()) => return Err(Syntax),
|
Err(()) => Err(Syntax),
|
||||||
// Step 3.
|
// Step 3.
|
||||||
Ok(selectors) => {
|
Ok(selectors) => {
|
||||||
nodes = QuerySelectorIterator::new(root.traverse_preorder(), selectors);
|
let root = self.ancestors().last().root();
|
||||||
|
let root = root.r().unwrap_or(self);
|
||||||
|
Ok(QuerySelectorIterator::new(root.traverse_preorder(), selectors))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
Ok(nodes)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#dom-parentnode-queryselectorall
|
// https://dom.spec.whatwg.org/#dom-parentnode-queryselectorall
|
||||||
|
@ -1437,9 +1434,10 @@ impl Node {
|
||||||
|
|
||||||
// Step 7-8.
|
// Step 7-8.
|
||||||
let reference_child = match child {
|
let reference_child = match child {
|
||||||
Some(child) if child == node => node.next_sibling().map(|node| node.root().get_unsound_ref_forever()),
|
Some(child) if child == node => node.next_sibling(),
|
||||||
_ => child
|
_ => None
|
||||||
};
|
}.root();
|
||||||
|
let reference_child = reference_child.r().or(child);
|
||||||
|
|
||||||
// Step 9.
|
// Step 9.
|
||||||
let document = document_from_node(parent).root();
|
let document = document_from_node(parent).root();
|
||||||
|
@ -2040,10 +2038,12 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 7-8.
|
// Step 7-8.
|
||||||
let next_sibling = child.next_sibling().map(|node| node.root().get_unsound_ref_forever());
|
let child_next_sibling = child.next_sibling().root();
|
||||||
let reference_child = match next_sibling {
|
let node_next_sibling = node.next_sibling().root();
|
||||||
Some(sibling) if sibling == node => node.next_sibling().map(|node| node.root().get_unsound_ref_forever()),
|
let reference_child = if child_next_sibling.r() == Some(node) {
|
||||||
_ => next_sibling
|
node_next_sibling.r()
|
||||||
|
} else {
|
||||||
|
child_next_sibling.r()
|
||||||
};
|
};
|
||||||
|
|
||||||
// Step 9.
|
// Step 9.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue