diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-02-25 16:04:25 +0100 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-02-26 14:50:57 +0100 |
commit | 33792db657e0053c415c26b761cbdc2cf5ae2060 (patch) | |
tree | f75a1d7788db37de241ad1ce78f8a5237a5bd5de /src/components/script/dom/node.rs | |
parent | 7ff35c0abedf6a339b9a0117aad85e06dc86555f (diff) | |
download | servo-33792db657e0053c415c26b761cbdc2cf5ae2060.tar.gz servo-33792db657e0053c415c26b761cbdc2cf5ae2060.zip |
Move ID management on binding to and unbinding from tree into Element.
Diffstat (limited to 'src/components/script/dom/node.rs')
-rw-r--r-- | src/components/script/dom/node.rs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index a0357c92ab4..419b02c844a 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -14,7 +14,7 @@ use dom::bindings::utils; use dom::characterdata::CharacterData; use dom::document::Document; use dom::documenttype::DocumentType; -use dom::element::{Element, ElementTypeId, HTMLAnchorElementTypeId}; +use dom::element::{Element, ElementTypeId, HTMLAnchorElementTypeId, IElement}; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::nodelist::{NodeList}; use dom::text::Text; @@ -396,11 +396,13 @@ impl NodeHelpers for JS<Node> { // http://dom.spec.whatwg.org/#node-is-inserted fn node_inserted(&self) { assert!(self.parent_node().is_some()); - let mut document = self.get().owner_doc(); + let document = self.get().owner_doc(); - // Register elements having "id" attribute to the owner doc. - if self.is_element() { - document.get_mut().register_nodes_with_id(&ElementCast::to(self)); + for node in self.traverse_preorder() { + if node.is_element() { + let element: JS<Element> = ElementCast::to(&node); + element.bind_to_tree_impl(); + } } document.get().content_changed(); @@ -409,11 +411,13 @@ impl NodeHelpers for JS<Node> { // http://dom.spec.whatwg.org/#node-is-removed fn node_removed(&self) { assert!(self.parent_node().is_none()); - let mut document = self.get().owner_doc(); + let document = self.get().owner_doc(); - // Unregister elements having "id". - if self.is_element() { - document.get_mut().unregister_nodes_with_id(&ElementCast::to(self)); + for node in self.traverse_preorder() { + if node.is_element() { + let element: JS<Element> = ElementCast::to(&node); + element.unbind_from_tree_impl(); + } } document.get().content_changed(); |