aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/element.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-03-06 15:34:25 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-26 11:31:19 +0200
commit6af4729f42fc7d663a6b6ede5588732ec80e7dc8 (patch)
treed0934ba9f9fd7804f32867aec81e1fc188760b82 /components/script/dom/element.rs
parent813b242419d41505641b433c3b38b0d0542c559d (diff)
downloadservo-6af4729f42fc7d663a6b6ede5588732ec80e7dc8.tar.gz
servo-6af4729f42fc7d663a6b6ede5588732ec80e7dc8.zip
Introduce NodeRareData and ElementRareData
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r--components/script/dom/element.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 9ba5f7c21a2..ce4a3ac5268 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -76,6 +76,7 @@ use crate::dom::node::{BindContext, NodeDamage, NodeFlags, UnbindContext};
use crate::dom::node::{ChildrenMutation, LayoutNodeHelpers, Node};
use crate::dom::nodelist::NodeList;
use crate::dom::promise::Promise;
+use crate::dom::raredata::ElementRareData;
use crate::dom::servoparser::ServoParser;
use crate::dom::shadowroot::ShadowRoot;
use crate::dom::text::Text;
@@ -172,10 +173,7 @@ pub struct Element {
custom_element_definition: DomRefCell<Option<Rc<CustomElementDefinition>>>,
/// <https://dom.spec.whatwg.org/#concept-element-custom-element-state>
custom_element_state: Cell<CustomElementState>,
- /// https://dom.spec.whatwg.org/#dom-element-shadowroot
- /// XXX This is currently not exposed to web content. Only for
- /// internal use.
- shadow_root: MutNullableDom<ShadowRoot>,
+ rare_data: Box<ElementRareData>,
}
impl fmt::Debug for Element {
@@ -310,7 +308,7 @@ impl Element {
custom_element_reaction_queue: Default::default(),
custom_element_definition: Default::default(),
custom_element_state: Cell::new(CustomElementState::Uncustomized),
- shadow_root: Default::default(),
+ rare_data: Default::default(),
}
}
@@ -452,7 +450,7 @@ impl Element {
}
pub fn is_shadow_host(&self) -> bool {
- self.shadow_root.get().is_some()
+ self.rare_data.shadow_root.get().is_some()
}
/// https://dom.spec.whatwg.org/#dom-element-attachshadow
@@ -496,6 +494,7 @@ impl Element {
// Steps 4, 5 and 6.
let shadow_root = self
+ .rare_data
.shadow_root
.or_init(|| ShadowRoot::new(self, &*self.node.owner_doc()));
@@ -1070,7 +1069,10 @@ impl LayoutElementHelpers for LayoutDom<Element> {
#[inline]
#[allow(unsafe_code)]
unsafe fn get_shadow_root_for_layout(&self) -> Option<LayoutDom<ShadowRoot>> {
- (*self.unsafe_get()).shadow_root.get_inner_as_layout()
+ (*self.unsafe_get())
+ .rare_data
+ .shadow_root
+ .get_inner_as_layout()
}
}
@@ -2847,7 +2849,7 @@ impl VirtualMethods for Element {
let doc = document_from_node(self);
- if let Some(shadow_root) = self.shadow_root.get() {
+ if let Some(shadow_root) = self.rare_data.shadow_root.get() {
doc.unregister_shadow_root(&shadow_root);
let shadow_root = shadow_root.upcast::<Node>();
shadow_root.set_flag(NodeFlags::IS_CONNECTED, false);