diff options
author | Martin Robinson <mrobinson@igalia.com> | 2020-06-15 09:21:35 +0200 |
---|---|---|
committer | Martin Robinson <mrobinson@igalia.com> | 2020-06-15 10:28:30 +0200 |
commit | 4a3995bb375d43d53666a348ec0c08065784f6ea (patch) | |
tree | 31d9e41a4f5a5d0aac67a4265f828e9793b6855e /components/layout_thread/dom_wrapper.rs | |
parent | 6b0d9afd6fdc28356ad44af0104ddd25a7b6438d (diff) | |
download | servo-4a3995bb375d43d53666a348ec0c08065784f6ea.tar.gz servo-4a3995bb375d43d53666a348ec0c08065784f6ea.zip |
Add DocumentAnimationSet and AnimationSetKey
This will be used in order to hold animations for pseudo elements in the
DocumentAnimationSet. Also no longer store the OpaqueNode in the
animation and transition data structures. This is already part of the
DocumentAnimationSet key.
Diffstat (limited to 'components/layout_thread/dom_wrapper.rs')
-rw-r--r-- | components/layout_thread/dom_wrapper.rs | 55 |
1 files changed, 15 insertions, 40 deletions
diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs index b477a653188..3d3f50317a9 100644 --- a/components/layout_thread/dom_wrapper.rs +++ b/components/layout_thread/dom_wrapper.rs @@ -72,6 +72,7 @@ use std::fmt::Debug; use std::hash::{Hash, Hasher}; use std::sync::atomic::Ordering; use std::sync::Arc as StdArc; +use style::animation::AnimationSetKey; use style::applicable_declarations::ApplicableDeclarationBlock; use style::attr::AttrValue; use style::context::SharedStyleContext; @@ -474,20 +475,11 @@ impl<'le> TElement for ServoLayoutElement<'le> { ) -> Option<Arc<StyleLocked<PropertyDeclarationBlock>>> { let node = self.as_node(); let document = node.owner_doc(); - context - .animation_states - .read() - .get(&node.opaque()) - .and_then(|set| { - set.get_value_map_for_active_animations(context.current_time_for_animations) - }) - .map(|map| { - Arc::new( - document - .style_shared_lock() - .wrap(PropertyDeclarationBlock::from_animation_value_map(&map)), - ) - }) + context.animations.get_animation_declarations( + &AnimationSetKey(node.opaque()), + context.current_time_for_animations, + document.style_shared_lock(), + ) } fn transition_rule( @@ -496,20 +488,11 @@ impl<'le> TElement for ServoLayoutElement<'le> { ) -> Option<Arc<StyleLocked<PropertyDeclarationBlock>>> { let node = self.as_node(); let document = node.owner_doc(); - context - .animation_states - .read() - .get(&node.opaque()) - .and_then(|set| { - set.get_value_map_for_active_transitions(context.current_time_for_animations) - }) - .map(|map| { - Arc::new( - document - .style_shared_lock() - .wrap(PropertyDeclarationBlock::from_animation_value_map(&map)), - ) - }) + context.animations.get_transition_declarations( + &AnimationSetKey(node.opaque()), + context.current_time_for_animations, + document.style_shared_lock(), + ) } fn state(&self) -> ElementState { @@ -634,21 +617,13 @@ impl<'le> TElement for ServoLayoutElement<'le> { } fn has_css_animations(&self, context: &SharedStyleContext) -> bool { - context - .animation_states - .read() - .get(&self.as_node().opaque()) - .map(|set| set.has_active_animation()) - .unwrap_or(false) + let key = AnimationSetKey(self.as_node().opaque()); + context.animations.has_active_animations(&key) } fn has_css_transitions(&self, context: &SharedStyleContext) -> bool { - context - .animation_states - .read() - .get(&self.as_node().opaque()) - .map(|set| set.has_active_transition()) - .unwrap_or(false) + let key = AnimationSetKey(self.as_node().opaque()); + context.animations.has_active_transitions(&key) } #[inline] |