зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #2339 - Modify node traversal loop to avoid JS roots assertion. Fixes #2321 (from glennw:js-event-assert); r=jdm
Source-Repo: https://github.com/servo/servo Source-Revision: e9ac0d1e2cab62cbef2b23bd7ba93374b52f4c02
This commit is contained in:
Родитель
70403ec7f8
Коммит
4cc79f8a27
|
@ -1167,30 +1167,27 @@ impl ScriptTask {
|
|||
}
|
||||
|
||||
for node_address in node_address.iter() {
|
||||
let mut node =
|
||||
|
||||
let temp_node =
|
||||
node::from_untrusted_node_address(
|
||||
self.js_runtime.deref().ptr, *node_address).root();
|
||||
// Traverse node generations until a node that is an element is
|
||||
// found.
|
||||
while !node.is_element() {
|
||||
match node.parent_node() {
|
||||
Some(parent) => node = parent.root(),
|
||||
None => break,
|
||||
}
|
||||
}
|
||||
self.js_runtime.deref().ptr, *node_address);
|
||||
|
||||
if node.is_element() {
|
||||
node.set_hover_state(true);
|
||||
let maybe_node = temp_node.root().ancestors().find(|node| node.is_element());
|
||||
match maybe_node {
|
||||
Some(mut node) => {
|
||||
node.set_hover_state(true);
|
||||
|
||||
match *mouse_over_targets {
|
||||
Some(ref mouse_over_targets) => {
|
||||
if !target_compare {
|
||||
target_compare = !mouse_over_targets.contains(&node.unrooted());
|
||||
match *mouse_over_targets {
|
||||
Some(ref mouse_over_targets) => {
|
||||
if !target_compare {
|
||||
target_compare = !mouse_over_targets.contains(&node.unrooted());
|
||||
}
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
None => {}
|
||||
target_list.push(node.unrooted());
|
||||
}
|
||||
target_list.push(node.unrooted());
|
||||
None => {}
|
||||
}
|
||||
}
|
||||
match *mouse_over_targets {
|
||||
|
|
Загрузка…
Ссылка в новой задаче