aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-02-19 03:14:28 +0530
committerbors-servo <lbergstrom+bors@mozilla.com>2016-02-19 03:14:28 +0530
commit2374e9d30e015884e87305006ac61a77b7efd5ee (patch)
tree2076544187a54ed7262de2dbe7bd32ef305ea438
parent96d185359d78e82d2f41a56a1793f7e657c2d103 (diff)
parent4bb5cd1285ebceb9d2baca432995ab8f09648ba3 (diff)
downloadservo-2374e9d30e015884e87305006ac61a77b7efd5ee.tar.gz
servo-2374e9d30e015884e87305006ac61a77b7efd5ee.zip
Auto merge of #9526 - schuster:node-remove, r=nox
My updates so far for issue #8465. See comments there for more information. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9526) <!-- Reviewable:end -->
-rw-r--r--components/script/dom/node.rs9
-rw-r--r--components/script/dom/virtualmethods.rs2
2 files changed, 8 insertions, 3 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index c42635a3762..ac96158f7e5 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -1551,12 +1551,15 @@ impl Node {
Some(index)
}
};
- // Step 6.
+ // Step 6. pre-removing steps for node iterators
+ // Step 7.
let old_previous_sibling = node.GetPreviousSibling();
- // Steps 7-8: mutation observers.
- // Step 9.
+ // Step 8.
let old_next_sibling = node.GetNextSibling();
+ // Steps 9-10 are handled in unbind_from_tree.
parent.remove_child(node, cached_index);
+ // Step 11. transient registered observers
+ // Step 12.
if let SuppressObserver::Unsuppressed = suppress_observers {
vtable_for(&parent).children_changed(
&ChildrenMutation::replace(old_previous_sibling.r(),
diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs
index 2e8391671a8..e3def582ae4 100644
--- a/components/script/dom/virtualmethods.rs
+++ b/components/script/dom/virtualmethods.rs
@@ -83,6 +83,8 @@ pub trait VirtualMethods {
/// Called when a Node is removed from a tree, where 'tree_in_doc'
/// indicates whether the tree is part of a Document.
+ /// Implements removing steps:
+ /// https://dom.spec.whatwg.org/#concept-node-remove-ext
fn unbind_from_tree(&self, context: &UnbindContext) {
if let Some(ref s) = self.super_type() {
s.unbind_from_tree(context);