diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-03-05 18:01:59 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-04-26 11:31:18 +0200 |
commit | 813b242419d41505641b433c3b38b0d0542c559d (patch) | |
tree | b0620df09b19e2a271e9d09994520349ba1e9a53 /components/script/dom/element.rs | |
parent | 740aae06bad9e5ff864c914117cab1e74a727614 (diff) | |
download | servo-813b242419d41505641b433c3b38b0d0542c559d.tar.gz servo-813b242419d41505641b433c3b38b0d0542c559d.zip |
Introduce BindContext with in_doc and connected flags
Fix some is_in_doc -> is_connected mistakes
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r-- | components/script/dom/element.rs | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 610df336541..9ba5f7c21a2 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -72,8 +72,8 @@ use crate::dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaEle use crate::dom::mutationobserver::{Mutation, MutationObserver}; use crate::dom::namednodemap::NamedNodeMap; use crate::dom::node::{document_from_node, window_from_node}; +use crate::dom::node::{BindContext, NodeDamage, NodeFlags, UnbindContext}; use crate::dom::node::{ChildrenMutation, LayoutNodeHelpers, Node}; -use crate::dom::node::{NodeDamage, NodeFlags, UnbindContext}; use crate::dom::nodelist::NodeList; use crate::dom::promise::Promise; use crate::dom::servoparser::ServoParser; @@ -2800,28 +2800,28 @@ impl VirtualMethods for Element { } } - fn bind_to_tree(&self, tree_connected: bool) { + fn bind_to_tree(&self, context: &BindContext) { if let Some(ref s) = self.super_type() { - s.bind_to_tree(tree_connected); + s.bind_to_tree(context); } if let Some(f) = self.as_maybe_form_control() { f.bind_form_control_to_tree(); } - if !tree_connected { - return; - } - if let Some(shadow_root) = self.upcast::<Node>().owner_shadow_root() { let shadow_root = shadow_root.upcast::<Node>(); - shadow_root.set_flag(NodeFlags::IS_CONNECTED, tree_connected); + shadow_root.set_flag(NodeFlags::IS_CONNECTED, context.tree_connected); for node in shadow_root.children() { - node.set_flag(NodeFlags::IS_CONNECTED, tree_connected); - node.bind_to_tree(tree_connected); + node.set_flag(NodeFlags::IS_CONNECTED, context.tree_connected); + node.bind_to_tree(context); } } + if !context.tree_connected { + return; + } + let doc = document_from_node(self); if let Some(ref value) = *self.id_attribute.borrow() { if let Some(shadow_root) = self.upcast::<Node>().owner_shadow_root() { @@ -2847,8 +2847,7 @@ impl VirtualMethods for Element { let doc = document_from_node(self); - if self.is_shadow_host() { - let shadow_root = self.shadow_root.get().unwrap(); + if let Some(shadow_root) = self.shadow_root.get() { doc.unregister_shadow_root(&shadow_root); let shadow_root = shadow_root.upcast::<Node>(); shadow_root.set_flag(NodeFlags::IS_CONNECTED, false); |