aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_thread/dom_wrapper.rs
diff options
context:
space:
mode:
authorbors-servo <servo-ops@mozilla.com>2020-06-16 03:25:29 -0400
committerGitHub <noreply@github.com>2020-06-16 03:25:29 -0400
commitba5568a0a60cbd4bbedd3b766b7182824d75b131 (patch)
treeebf1b7c38ff7d98f195b331c81fbcb88287393f0 /components/layout_thread/dom_wrapper.rs
parent19c1f72eb2fe5178311161b6c85a67956a5a69b3 (diff)
parent4a3995bb375d43d53666a348ec0c08065784f6ea (diff)
downloadservo-ba5568a0a60cbd4bbedd3b766b7182824d75b131.tar.gz
servo-ba5568a0a60cbd4bbedd3b766b7182824d75b131.zip
Auto merge of #26921 - mrobinson:animation-set-key, r=jdm
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. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes do not require tests because they should not change behavior. <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Diffstat (limited to 'components/layout_thread/dom_wrapper.rs')
-rw-r--r--components/layout_thread/dom_wrapper.rs55
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]