aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2017-11-10 13:04:58 +0100
committerEmilio Cobos Álvarez <emilio@crisal.io>2017-11-10 13:12:24 +0100
commitc9d9304912d1b23a9ccd5baee6e6625022d643af (patch)
treeef3050092298130f8eeee4fb289a5a55c07c6380 /components/script/dom/node.rs
parenta3f2fae561de26fefb0ac0d569ce2c7a2942eee5 (diff)
downloadservo-c9d9304912d1b23a9ccd5baee6e6625022d643af.tar.gz
servo-c9d9304912d1b23a9ccd5baee6e6625022d643af.zip
script: Call content_and_heritage_changed from children_changed instead of add_child / remove_child.
add_child / remove_child aren't called when a node character data changed. This is important for finer grained invalidation. The only test that tests this is now wallpapered, but won't be after #19164.
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r--components/script/dom/node.rs6
1 files changed, 1 insertions, 5 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 8f29298a496..ff69e2ae2b3 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -266,8 +266,6 @@ impl Node {
debug_assert!(!node.get_flag(NodeFlags::HAS_DIRTY_DESCENDANTS));
vtable_for(&&*node).bind_to_tree(parent_in_doc);
}
- let document = new_child.owner_doc();
- document.content_and_heritage_changed(new_child, NodeDamage::OtherNodeDamage);
}
/// Removes the given child from this node's list of children.
@@ -318,9 +316,6 @@ impl Node {
ScriptThread::enqueue_callback_reaction(&*element, CallbackReaction::Disconnected, None);
}
}
-
- self.owner_doc().content_and_heritage_changed(self, NodeDamage::OtherNodeDamage);
- child.owner_doc().content_and_heritage_changed(child, NodeDamage::OtherNodeDamage);
}
pub fn to_untrusted_node_address(&self) -> UntrustedNodeAddress {
@@ -2504,6 +2499,7 @@ impl VirtualMethods for Node {
if let Some(list) = self.child_list.get() {
list.as_children_list().children_changed(mutation);
}
+ self.owner_doc().content_and_heritage_changed(self, NodeDamage::OtherNodeDamage);
}
// This handles the ranges mentioned in steps 2-3 when removing a node.