diff options
10 files changed, 100 insertions, 361 deletions
diff --git a/components/script/animations.rs b/components/script/animations.rs index a666ac3ed84..91946853f22 100644 --- a/components/script/animations.rs +++ b/components/script/animations.rs @@ -113,7 +113,7 @@ impl Animations { transition.state = AnimationState::Finished; update.add_event( transition.node, - transition.property_animation.property_name().into(), + transition.property_animation.property_id().name().into(), TransitionOrAnimationEventType::TransitionEnd, transition.property_animation.duration, ); @@ -135,7 +135,7 @@ impl Animations { // according to https://drafts.csswg.org/css-transitions/#event-transitionevent update.add_event( transition.node, - transition.property_animation.property_name().into(), + transition.property_animation.property_id().name().into(), TransitionOrAnimationEventType::TransitionCancel, (now - transition.start_time).max(0.), ); @@ -157,7 +157,7 @@ impl Animations { // according to https://drafts.csswg.org/css-transitions/#event-transitionevent update.add_event( transition.node, - transition.property_animation.property_name().into(), + transition.property_animation.property_id().name().into(), TransitionOrAnimationEventType::TransitionRun, 0., ); diff --git a/components/style/animation.rs b/components/style/animation.rs index f76759abdfb..f52e9b42a51 100644 --- a/components/style/animation.rs +++ b/components/style/animation.rs @@ -11,13 +11,14 @@ use crate::bezier::Bezier; use crate::context::SharedStyleContext; use crate::dom::{OpaqueNode, TElement, TNode}; use crate::font_metrics::FontMetricsProvider; -use crate::properties::animated_properties::AnimatedProperty; +use crate::properties::animated_properties::AnimationValue; use crate::properties::longhands::animation_direction::computed_value::single_value::T as AnimationDirection; use crate::properties::longhands::animation_play_state::computed_value::single_value::T as AnimationPlayState; use crate::properties::LonghandIdSet; use crate::properties::{self, CascadeMode, ComputedValues, LonghandId}; use crate::stylesheets::keyframes_rule::{KeyframesAnimation, KeyframesStep, KeyframesStepValue}; use crate::stylesheets::Origin; +use crate::values::animated::{Animate, Procedure}; use crate::values::computed::Time; use crate::values::computed::TimingFunction; use crate::values::generics::box_::AnimationIterationCount; @@ -29,8 +30,11 @@ use std::fmt; /// Represents an animation for a given property. #[derive(Clone, Debug, MallocSizeOf)] pub struct PropertyAnimation { - /// An `AnimatedProperty` that this `PropertyAnimation` corresponds to. - property: AnimatedProperty, + /// The value we are animating from. + from: AnimationValue, + + /// The value we are animating to. + to: AnimationValue, /// The timing function of this `PropertyAnimation`. timing_function: TimingFunction, @@ -42,12 +46,8 @@ pub struct PropertyAnimation { impl PropertyAnimation { /// Returns the given property longhand id. pub fn property_id(&self) -> LonghandId { - self.property.id() - } - - /// Returns the given property name. - pub fn property_name(&self) -> &'static str { - self.property.name() + debug_assert_eq!(self.from.id(), self.to.id()); + self.from.id() } fn from_longhand( @@ -57,30 +57,33 @@ impl PropertyAnimation { old_style: &ComputedValues, new_style: &ComputedValues, ) -> Option<PropertyAnimation> { - let animated_property = AnimatedProperty::from_longhand(longhand, old_style, new_style)?; + // FIXME(emilio): Handle the case where old_style and new_style's writing mode differ. + let longhand = longhand.to_physical(new_style.writing_mode); + let from = AnimationValue::from_computed_values(longhand, old_style)?; + let to = AnimationValue::from_computed_values(longhand, new_style)?; + let duration = duration.seconds() as f64; + + if from == to || duration == 0.0 { + return None; + } - let property_animation = PropertyAnimation { - property: animated_property, + Some(PropertyAnimation { + from, + to, timing_function, - duration: duration.seconds() as f64, - }; - - if property_animation.does_animate() { - Some(property_animation) - } else { - None - } + duration, + }) } - /// Update the given animation at a given point of progress. - pub fn update(&self, style: &mut ComputedValues, time: f64) { + /// The output of the timing function given the progress ration of this animation. + fn timing_function_output(&self, progress: f64) -> f64 { let epsilon = 1. / (200. * self.duration); - let progress = match self.timing_function { + match self.timing_function { GenericTimingFunction::CubicBezier { x1, y1, x2, y2 } => { - Bezier::new(x1, y1, x2, y2).solve(time, epsilon) + Bezier::new(x1, y1, x2, y2).solve(progress, epsilon) }, GenericTimingFunction::Steps(steps, pos) => { - let mut current_step = (time * (steps as f64)).floor() as i32; + let mut current_step = (progress * (steps as f64)).floor() as i32; if pos == StepPosition::Start || pos == StepPosition::JumpStart || @@ -95,7 +98,7 @@ impl PropertyAnimation { // (i.e. Treat before_flag is unset,) // https://drafts.csswg.org/css-easing/#step-timing-function-algo - if time >= 0.0 && current_step < 0 { + if progress >= 0.0 && current_step < 0 { current_step = 0; } @@ -108,7 +111,7 @@ impl PropertyAnimation { StepPosition::End => steps, }; - if time <= 1.0 && current_step > jumps { + if progress <= 1.0 && current_step > jumps { current_step = jumps; } @@ -116,22 +119,19 @@ impl PropertyAnimation { }, GenericTimingFunction::Keyword(keyword) => { let (x1, x2, y1, y2) = keyword.to_bezier(); - Bezier::new(x1, x2, y1, y2).solve(time, epsilon) + Bezier::new(x1, x2, y1, y2).solve(progress, epsilon) }, - }; - - self.property.update(style, progress); - } - - #[inline] - fn does_animate(&self) -> bool { - self.property.does_animate() && self.duration != 0.0 + } } - /// Whether this animation has the same end value as another one. - #[inline] - pub fn has_the_same_end_value_as(&self, other: &Self) -> bool { - self.property.has_the_same_end_value_as(&other.property) + /// Update the given animation at a given point of progress. + fn update(&self, style: &mut ComputedValues, progress: f64) { + let procedure = Procedure::Interpolate { + progress: self.timing_function_output(progress), + }; + if let Ok(new_value) = self.from.animate(&self.to, procedure) { + new_value.set_in_style_for_servo(style); + } } } @@ -486,42 +486,23 @@ impl Animation { ); let mut new_style = (*style).clone(); - - for property in self.keyframes_animation.properties_changed.iter() { - debug!( - "Animation::update_style: scanning prop {:?} for animation \"{}\"", - property, self.name - ); - let animation = PropertyAnimation::from_longhand( - property, + let mut update_style_for_longhand = |longhand| { + let from = AnimationValue::from_computed_values(longhand, &from_style)?; + let to = AnimationValue::from_computed_values(longhand, &target_style)?; + PropertyAnimation { + from, + to, timing_function, - Time::from_seconds(relative_duration as f32), - &from_style, - &target_style, - ); - - match animation { - Some(property_animation) => { - debug!( - "Animation::update_style: got property animation for prop {:?}", - property - ); - debug!("Animation::update_style: {:?}", property_animation); - property_animation.update(&mut new_style, relative_progress); - }, - None => { - debug!( - "Animation::update_style: property animation {:?} not animating", - property - ); - }, + duration: relative_duration as f64, } + .update(&mut new_style, relative_progress); + None::<()> + }; + + for property in self.keyframes_animation.properties_changed.iter() { + update_style_for_longhand(property); } - debug!( - "Animation::update_style: got style change in animation \"{}\"", - self.name - ); *style = new_style; } } @@ -573,12 +554,9 @@ impl Transition { /// Whether this animation has the same end value as another one. #[inline] - fn has_same_end_value(&self, other_animation: &PropertyAnimation) -> bool { - if self.state == AnimationState::Canceled { - return false; - } - self.property_animation - .has_the_same_end_value_as(other_animation) + fn progress(&self, now: f64) -> f64 { + let progress = (now - self.start_time) / (self.property_animation.duration); + progress.min(1.0) } /// Update a style to the value specified by this `Transition` given a `SharedStyleContext`. @@ -588,9 +566,7 @@ impl Transition { return; } - let now = context.current_time_for_animations; - let progress = (now - self.start_time) / (self.property_animation.duration); - let progress = progress.min(1.0); + let progress = self.progress(context.current_time_for_animations); if progress >= 0.0 { self.property_animation.update(style, progress); } @@ -782,7 +758,8 @@ pub fn start_transitions_if_applicable( ) -> LonghandIdSet { // If the style of this element is display:none, then we don't start any transitions // and we cancel any currently running transitions by returning an empty LonghandIdSet. - if new_style.get_box().clone_display().is_none() { + let box_style = new_style.get_box(); + if box_style.clone_display().is_none() { return LonghandIdSet::new(); } @@ -797,12 +774,8 @@ pub fn start_transitions_if_applicable( let property_animation = match PropertyAnimation::from_longhand( transition.longhand_id, - new_style - .get_box() - .transition_timing_function_mod(transition.index), - new_style - .get_box() - .transition_duration_mod(transition.index), + box_style.transition_timing_function_mod(transition.index), + box_style.transition_duration_mod(transition.index), old_style, new_style, ) { @@ -812,12 +785,13 @@ pub fn start_transitions_if_applicable( // Per [1], don't trigger a new transition if the end state for that // transition is the same as that of a transition that's running or - // completed. + // completed. We don't take into account any canceled animations. // [1]: https://drafts.csswg.org/css-transitions/#starting if animation_state .transitions .iter() - .any(|transition| transition.has_same_end_value(&property_animation)) + .filter(|transition| transition.state != AnimationState::Canceled) + .any(|transition| transition.property_animation.to == property_animation.to) { continue; } diff --git a/components/style/properties/helpers/animated_properties.mako.rs b/components/style/properties/helpers/animated_properties.mako.rs index 2e9a53fc677..863da15d65c 100644 --- a/components/style/properties/helpers/animated_properties.mako.rs +++ b/components/style/properties/helpers/animated_properties.mako.rs @@ -57,132 +57,6 @@ impl From<nsCSSPropertyID> for TransitionProperty { } } -/// An animated property interpolation between two computed values for that -/// property. -#[derive(Clone, Debug, PartialEq)] -#[cfg_attr(feature = "servo", derive(MallocSizeOf))] -pub enum AnimatedProperty { - % for prop in data.longhands: - % if prop.animatable and not prop.logical: - <% - value_type = "longhands::{}::computed_value::T".format(prop.ident) - if not prop.is_animatable_with_computed_value: - value_type = "<{} as ToAnimatedValue>::AnimatedValue".format(value_type) - %> - /// ${prop.name} - ${prop.camel_case}(${value_type}, ${value_type}), - % endif - % endfor -} - -impl AnimatedProperty { - /// Get the id of the property we're animating. - pub fn id(&self) -> LonghandId { - match *self { - % for prop in data.longhands: - % if prop.animatable and not prop.logical: - AnimatedProperty::${prop.camel_case}(..) => LonghandId::${prop.camel_case}, - % endif - % endfor - } - } - - /// Get the name of this property. - pub fn name(&self) -> &'static str { - self.id().name() - } - - /// Whether this interpolation does animate, that is, whether the start and - /// end values are different. - pub fn does_animate(&self) -> bool { - match *self { - % for prop in data.longhands: - % if prop.animatable and not prop.logical: - AnimatedProperty::${prop.camel_case}(ref from, ref to) => from != to, - % endif - % endfor - } - } - - /// Whether an animated property has the same end value as another. - pub fn has_the_same_end_value_as(&self, other: &Self) -> bool { - match (self, other) { - % for prop in data.longhands: - % if prop.animatable and not prop.logical: - (&AnimatedProperty::${prop.camel_case}(_, ref this_end_value), - &AnimatedProperty::${prop.camel_case}(_, ref other_end_value)) => { - this_end_value == other_end_value - } - % endif - % endfor - _ => false, - } - } - - /// Update `style` with the proper computed style corresponding to this - /// animation at `progress`. - #[cfg_attr(feature = "gecko", allow(unused))] - pub fn update(&self, style: &mut ComputedValues, progress: f64) { - #[cfg(feature = "servo")] - { - match *self { - % for prop in data.longhands: - % if prop.animatable and not prop.logical: - AnimatedProperty::${prop.camel_case}(ref from, ref to) => { - // https://drafts.csswg.org/web-animations/#discrete-animation-type - % if prop.animation_value_type == "discrete": - let value = if progress < 0.5 { from.clone() } else { to.clone() }; - % else: - let value = match from.animate(to, Procedure::Interpolate { progress }) { - Ok(value) => value, - Err(()) => return, - }; - % endif - % if not prop.is_animatable_with_computed_value: - let value: longhands::${prop.ident}::computed_value::T = - ToAnimatedValue::from_animated_value(value); - % endif - style.mutate_${prop.style_struct.name_lower}().set_${prop.ident}(value); - } - % endif - % endfor - } - } - } - - /// Get an animatable value from a transition-property, an old style, and a - /// new style. - pub fn from_longhand( - property: LonghandId, - old_style: &ComputedValues, - new_style: &ComputedValues, - ) -> Option<AnimatedProperty> { - // FIXME(emilio): Handle the case where old_style and new_style's - // writing mode differ. - let property = property.to_physical(new_style.writing_mode); - Some(match property { - % for prop in data.longhands: - % if prop.animatable and not prop.logical: - LonghandId::${prop.camel_case} => { - let old_computed = old_style.clone_${prop.ident}(); - let new_computed = new_style.clone_${prop.ident}(); - AnimatedProperty::${prop.camel_case}( - % if prop.is_animatable_with_computed_value: - old_computed, - new_computed, - % else: - old_computed.to_animated_value(), - new_computed.to_animated_value(), - % endif - ) - } - % endif - % endfor - _ => return None, - }) - } -} - /// A collection of AnimationValue that were composed on an element. /// This HashMap stores the values that are the last AnimationValue to be /// composed for each TransitionProperty. @@ -192,11 +66,6 @@ pub type AnimationValueMap = FxHashMap<LonghandId, AnimationValue>; /// property in order to be interpolated with another one. When interpolating, /// both values need to belong to the same property. /// -/// This is different to AnimatedProperty in the sense that AnimatedProperty -/// also knows the final value to be used during the animation. -/// -/// This is to be used in Gecko integration code. -/// /// FIXME: We need to add a path for custom properties, but that's trivial after /// this (is a similar path to that of PropertyDeclaration). #[cfg_attr(feature = "servo", derive(MallocSizeOf))] @@ -546,6 +415,30 @@ impl AnimationValue { _ => return None, }) } + + /// Update `style` with the value of this `AnimationValue`. + /// + /// SERVO ONLY: This doesn't properly handle things like updating 'em' units + /// when animated font-size. + pub fn set_in_style_for_servo(&self, style: &mut ComputedValues) { + match self { + % for prop in data.longhands: + % if prop.animatable and not prop.logical: + AnimationValue::${prop.camel_case}(ref value) => { + % if not prop.is_animatable_with_computed_value: + let value: longhands::${prop.ident}::computed_value::T = + ToAnimatedValue::from_animated_value(value.clone()); + style.mutate_${prop.style_struct.name_lower}().set_${prop.ident}(value); + % else: + style.mutate_${prop.style_struct.name_lower}().set_${prop.ident}(value.clone()); + % endif + } + % else: + AnimationValue::${prop.camel_case}(..) => unreachable!(), + % endif + % endfor + } + } } fn animate_discrete<T: Clone>(this: &T, other: &T, procedure: Procedure) -> Result<T, ()> { diff --git a/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini b/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini index 20917a6c997..8e7e49200ea 100644 --- a/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini +++ b/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini @@ -47,9 +47,6 @@ [CSS Animations: property <line-height> from [14q\] to [normal\] at (0) should be [14q\]] expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [normal\] at (0.3) should be [normal\]] - expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [4\] at (0) should be [normal\]] expected: FAIL @@ -134,9 +131,6 @@ [Web Animations: property <line-height> from [14q\] to [normal\] at (0) should be [14q\]] expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [normal\] at (0) should be [normal\]] - expected: FAIL - [Web Animations: property <line-height> from [4\] to [14px\] at (0.5) should be [14px\]] expected: FAIL @@ -224,9 +218,6 @@ [Web Animations: property <line-height> from [normal\] to [14px\] at (0) should be [normal\]] expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [normal\] at (-0.3) should be [normal\]] - expected: FAIL - [Web Animations: property <line-height> from [4q\] to [14q\] at (-0.3) should be [1q\]] expected: FAIL @@ -323,9 +314,6 @@ [CSS Animations: property <line-height> from [14q\] to [normal\] at (0.3) should be [14q\]] expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [normal\] at (0.6) should be [normal\]] - expected: FAIL - [Web Animations: property <line-height> from [normal\] to [14px\] at (0.3) should be [normal\]] expected: FAIL @@ -407,15 +395,9 @@ [Web Animations: property <line-height> from [inherit\] to [20px\] at (1.5) should be [15px\]] expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [normal\] at (1) should be [normal\]] - expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [14px\] at (0.6) should be [14px\]] expected: FAIL - [CSS Animations: property <line-height> from [normal\] to [normal\] at (1.5) should be [normal\]] - expected: FAIL - [Web Animations: property <line-height> from [inherit\] to [20px\] at (0.3) should be [27px\]] expected: FAIL diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini deleted file mode 100644 index a647125277a..00000000000 --- a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[mix-blend-mode-animation.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini index 25e13e6d057..5d58a032ca7 100644 --- a/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini @@ -11,9 +11,6 @@ [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (1.5) should be [28.5px\]] expected: FAIL - [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (-0.3) should be [0px\]] - expected: FAIL - [Web Animations: property <border-left-width> from [unset\] to [20px\] at (0.3) should be [8.1px\]] expected: FAIL @@ -26,9 +23,6 @@ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (-2) should be [35px\]] expected: FAIL - [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (1.5) should be [0px\]] - expected: FAIL - [Web Animations: property <border-right-width> from [thin\] to [11px\] at (0.6) should be [7px\]] expected: FAIL @@ -41,15 +35,6 @@ [Web Animations: property <border-left-width> from neutral to [20px\] at (1) should be [20px\]] expected: FAIL - [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (-2) should be [0px\]] - expected: FAIL - - [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (0) should be [0px\]] - expected: FAIL - - [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (-2) should be [0px\]] - expected: FAIL - [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (0.6) should be [9px\]] expected: FAIL @@ -101,9 +86,6 @@ [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1.5) should be [35px 55px 75px 95px\]] expected: FAIL - [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (-0.3) should be [0px\]] - expected: FAIL - [CSS Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1.5) should be [35px 55px 75px 95px\]] expected: FAIL @@ -146,9 +128,6 @@ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (1.5) should be [16px\]] expected: FAIL - [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (-0.3) should be [0px\]] - expected: FAIL - [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (0.3) should be [4px\]] expected: FAIL @@ -218,9 +197,6 @@ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (1.5) should be [18px\]] expected: FAIL - [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (-2) should be [0px\]] - expected: FAIL - [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (1.5) should be [20px\]] expected: FAIL @@ -239,9 +215,6 @@ [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (0) should be [3px\]] expected: FAIL - [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (-0.3) should be [0px\]] - expected: FAIL - [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (-0.3) should be [2px\]] expected: FAIL @@ -347,9 +320,6 @@ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (-0.3) should be [0px\]] expected: FAIL - [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (0) should be [0px\]] - expected: FAIL - [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0) should be [20px 40px 60px 80px\]] expected: FAIL @@ -383,9 +353,6 @@ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (1) should be [5px\]] expected: FAIL - [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (-0.3) should be [0px\]] - expected: FAIL - [CSS Animations: property <border-left-width> from neutral to [20px\] at (1.5) should be [25px\]] expected: FAIL @@ -416,3 +383,6 @@ [Web Animations: property <border-left-width> from [0px\] to [10px\] at (1) should be [10px\]] expected: FAIL + [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (1) should be [10px\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini index 2bef4675376..ab3ca501f93 100644 --- a/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini @@ -92,12 +92,6 @@ [Web Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (-1) should be [0.22 -0.55 0.8 300deg\]] expected: FAIL - [CSS Animations: property <rotate> from [none\] to [none\] at (0) should be [none\]] - expected: FAIL - - [CSS Animations: property <rotate> from [none\] to [none\] at (2) should be [none\]] - expected: FAIL - [Web Animations: property <rotate> from neutral to [30deg\] at (1) should be [30deg\]] expected: FAIL @@ -146,12 +140,6 @@ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (0) should be [100deg\]] expected: FAIL - [CSS Animations: property <rotate> from [none\] to [none\] at (0.125) should be [none\]] - expected: FAIL - - [CSS Animations: property <rotate> from [none\] to [none\] at (1) should be [none\]] - expected: FAIL - [Web Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (-1) should be [0.5 -0.57 0.65 -400grad\]] expected: FAIL @@ -242,9 +230,6 @@ [Web Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0) should be [0 1 0 0deg\]] expected: FAIL - [CSS Animations: property <rotate> from [none\] to [none\] at (0.875) should be [none\]] - expected: FAIL - [Web Animations: property <rotate> from [unset\] to [30deg\] at (2) should be [60deg\]] expected: FAIL @@ -353,9 +338,6 @@ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (0.875) should be [170deg\]] expected: FAIL - [CSS Animations: property <rotate> from [none\] to [none\] at (-1) should be [none\]] - expected: FAIL - [Web Animations: property <rotate> from [100deg\] to [180deg\] at (1) should be [180deg\]] expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini index da388d7db86..4bb2092b5fb 100644 --- a/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini @@ -119,9 +119,6 @@ [CSS Animations: property <scale> from [inherit\] to [2 0.5 1\] at (-1) should be [-1 1.5 3\]] expected: FAIL - [CSS Animations: property <scale> from [none\] to [none\] at (0.875) should be [none\]] - expected: FAIL - [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (2) should be [3.5 0 0\]] expected: FAIL @@ -149,9 +146,6 @@ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (0.875) should be [5 3 2\]] expected: FAIL - [CSS Animations: property <scale> from [none\] to [none\] at (-1) should be [none\]] - expected: FAIL - [Web Animations: property <scale> from [none\] to [4 3 2\] at (1) should be [4 3 2\]] expected: FAIL @@ -167,9 +161,6 @@ [Web Animations: property <scale> from [2 0.5 1\] to [inherit\] at (2) should be [-1 1.5 3\]] expected: FAIL - [CSS Animations: property <scale> from [none\] to [none\] at (0.125) should be [none\]] - expected: FAIL - [Web Animations: property <scale> from [1\] to [10 -5 0\] at (1) should be [10 -5 0\]] expected: FAIL @@ -179,9 +170,6 @@ [Web Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (-1) should be [-6 -50 -400\]] expected: FAIL - [CSS Animations: property <scale> from [none\] to [none\] at (1) should be [none\]] - expected: FAIL - [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (0.125) should be [23 15 8\]] expected: FAIL @@ -194,9 +182,6 @@ [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (0) should be [0.5 1 2\]] expected: FAIL - [CSS Animations: property <scale> from [none\] to [none\] at (0) should be [none\]] - expected: FAIL - [Web Animations: property <scale> from [none\] to [none\] at (1) should be [none\]] expected: FAIL @@ -218,9 +203,6 @@ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (0) should be [26 17 9\]] expected: FAIL - [CSS Animations: property <scale> from [2 0.5 1\] to [inherit\] at (0) should be [2 0.5\]] - expected: FAIL - [Web Animations: property <scale> from [-10 5\] to [10 -5\] at (0.75) should be [5 -2.5\]] expected: FAIL @@ -341,9 +323,6 @@ [Web Animations: property <scale> from [inherit\] to [initial\] at (-1) should be [0 1 3\]] expected: FAIL - [CSS Animations: property <scale> from [none\] to [none\] at (2) should be [none\]] - expected: FAIL - [CSS Animations: property <scale> from [initial\] to [inherit\] at (0) should be [1\]] expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini index dd69074e4e9..60c0940f68c 100644 --- a/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini @@ -218,9 +218,6 @@ [Web Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (-1) should be [-200px -100px 200px\]] expected: FAIL - [CSS Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0) should be [200px 100px 200px\]] - expected: FAIL - [Web Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (1) should be [200px 100px 200px\]] expected: FAIL @@ -236,24 +233,15 @@ [Web Animations: property <translate> from neutral to [20px\] at (0.25) should be [12.5px\]] expected: FAIL - [CSS Animations: property <translate> from [none\] to [none\] at (0.125) should be [none\]] - expected: FAIL - [Web Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0) should be [200px 100px 200px\]] expected: FAIL [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0) should be [220px 240px 260px\]] expected: FAIL - [CSS Animations: property <translate> from [none\] to [none\] at (0.875) should be [none\]] - expected: FAIL - [Web Animations: property <translate> from neutral to [20px\] at (1) should be [20px\]] expected: FAIL - [CSS Animations: property <translate> from [none\] to [none\] at (-1) should be [none\]] - expected: FAIL - [Web Animations: property <translate> from [200px 100px 400px\] to [initial\] at (0.75) should be [50px 25px 100px\]] expected: FAIL @@ -440,18 +428,9 @@ [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (1) should be [300px 400px 500px\]] expected: FAIL - [CSS Animations: property <translate> from [none\] to [none\] at (0) should be [none\]] - expected: FAIL - - [CSS Animations: property <translate> from [none\] to [none\] at (2) should be [none\]] - expected: FAIL - [Web Animations: property <translate> from neutral to [20px\] at (0.75) should be [17.5px\]] expected: FAIL - [CSS Animations: property <translate> from [none\] to [none\] at (1) should be [none\]] - expected: FAIL - [Web Animations: property <translate> from [initial\] to [inherit\] at (-1) should be [-100px -200px -300px\]] expected: FAIL diff --git a/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini b/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini index 570d7ee9b59..2de0aa2b8a7 100644 --- a/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini +++ b/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini @@ -149,12 +149,6 @@ [CSS Animations: property <outline-width> from [0px\] to [10px\] at (1.5) should be [15px\]] expected: FAIL - [CSS Animations: property <outline-width> from [initial\] to [20px\] at (-0.3) should be [0px\]] - expected: FAIL - - [CSS Animations: property <outline-width> from [thick\] to [15px\] at (-2) should be [0px\]] - expected: FAIL - [CSS Animations: property <outline-width> from [thick\] to [15px\] at (0) should be [5px\]] expected: FAIL @@ -191,9 +185,6 @@ [CSS Animations: property <outline-width> from [initial\] to [20px\] at (0.6) should be [13px\]] expected: FAIL - [CSS Animations: property <outline-width> from [unset\] to [20px\] at (-0.3) should be [0px\]] - expected: FAIL - [CSS Animations: property <outline-width> from [unset\] to [20px\] at (1.5) should be [28px\]] expected: FAIL @@ -206,9 +197,6 @@ [Web Animations: property <outline-width> from [inherit\] to [20px\] at (0) should be [30px\]] expected: FAIL - [CSS Animations: property <outline-width> from [0px\] to [10px\] at (0) should be [0px\]] - expected: FAIL - [CSS Animations: property <outline-width> from neutral to [20px\] at (0.6) should be [16px\]] expected: FAIL @@ -242,9 +230,6 @@ [CSS Transitions with transition: all: property <outline-width> from [unset\] to [20px\] at (1.5) should be [28px\]] expected: FAIL - [CSS Animations: property <outline-width> from [0px\] to [10px\] at (-0.3) should be [0px\]] - expected: FAIL - [CSS Animations: property <outline-width> from [initial\] to [20px\] at (0) should be [3px\]] expected: FAIL @@ -254,12 +239,6 @@ [CSS Transitions: property <outline-width> from [unset\] to [20px\] at (1.5) should be [28px\]] expected: FAIL - [CSS Animations: property <outline-width> from [unset\] to [23px\] at (0) should be [3px\]] - expected: FAIL - - [CSS Animations: property <outline-width> from [unset\] to [23px\] at (-0.3) should be [0px\]] - expected: FAIL - [Web Animations: property <outline-width> from [unset\] to [23px\] at (1.5) should be [33px\]] expected: FAIL @@ -284,9 +263,6 @@ [CSS Animations: property <outline-width> from [initial\] to [23px\] at (1) should be [23px\]] expected: FAIL - [CSS Animations: property <outline-width> from [initial\] to [23px\] at (-0.3) should be [0px\]] - expected: FAIL - [Web Animations: property <outline-width> from [unset\] to [23px\] at (-0.3) should be [0px\]] expected: FAIL @@ -326,3 +302,9 @@ [CSS Animations: property <outline-width> from [initial\] to [23px\] at (1.5) should be [33px\]] expected: FAIL + [CSS Animations: property <outline-width> from [unset\] to [23px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Animations: property <outline-width> from [0px\] to [10px\] at (1) should be [10px\]] + expected: FAIL + |