aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/element.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-03-05 18:01:59 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-26 11:31:18 +0200
commit813b242419d41505641b433c3b38b0d0542c559d (patch)
treeb0620df09b19e2a271e9d09994520349ba1e9a53 /components/script/dom/element.rs
parent740aae06bad9e5ff864c914117cab1e74a727614 (diff)
downloadservo-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.rs23
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);