diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs index 1fd2be2245a..f98d036bbd8 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -434,61 +434,29 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", } -<%helpers:longhand name="transition-duration" - need_index="True" - animatable="False" - spec="https://drafts.csswg.org/css-transitions/#propdef-transition-duration"> - use values::computed::ComputedValueAsSpecified; +<%helpers:vector_longhand name="transition-duration" + need_index="True" + animatable="False" + spec="https://drafts.csswg.org/css-transitions/#propdef-transition-duration"> use values::specified::Time; - pub use self::computed_value::T as SpecifiedValue; - pub use values::specified::Time as SingleSpecifiedValue; + pub use values::specified::Time as SpecifiedValue; use values::NoViewportPercentage; impl NoViewportPercentage for SpecifiedValue {} pub mod computed_value { - use std::fmt; - use style_traits::ToCss; - use values::computed::{Context, ToComputedValue}; - - pub use values::computed::Time as SingleComputedValue; - - #[derive(Debug, Clone, PartialEq)] - #[cfg_attr(feature = "servo", derive(HeapSizeOf))] - pub struct T(pub Vec); - - impl ToCss for T { - fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - if self.0.is_empty() { - return dest.write_str("none") - } - for (i, value) in self.0.iter().enumerate() { - if i != 0 { - try!(dest.write_str(", ")) - } - try!(value.to_css(dest)) - } - Ok(()) - } - } + pub use values::computed::Time as T; } - impl ComputedValueAsSpecified for SpecifiedValue {} - #[inline] - pub fn get_initial_single_value() -> Time { + pub fn get_initial_value() -> Time { Time(0.0) } - #[inline] - pub fn get_initial_value() -> computed_value::T { - computed_value::T(vec![get_initial_single_value()]) - } - pub fn parse(context: &ParserContext, input: &mut Parser) -> Result { - Ok(SpecifiedValue(try!(input.parse_comma_separated(|i| Time::parse(context, i))))) + Time::parse(context, input) } - + // TODO(pcwalton): Lots more timing functions. <%helpers:longhand name="transition-timing-function" @@ -867,14 +835,14 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", impl ComputedValueAsSpecified for SpecifiedValue { } -<%helpers:longhand name="transition-delay" - need_index="True" - animatable="False" - spec="https://drafts.csswg.org/css-transitions/#propdef-transition-delay"> - pub use properties::longhands::transition_duration::{SingleSpecifiedValue, SpecifiedValue}; - pub use properties::longhands::transition_duration::computed_value; - pub use properties::longhands::transition_duration::{get_initial_value, get_initial_single_value, parse}; - +<%helpers:vector_longhand name="transition-delay" + need_index="True" + animatable="False" + spec="https://drafts.csswg.org/css-transitions/#propdef-transition-delay"> + pub use properties::longhands::transition_duration::single_value::SpecifiedValue; + pub use properties::longhands::transition_duration::single_value::computed_value; + pub use properties::longhands::transition_duration::single_value::{get_initial_value, parse}; + <%helpers:longhand name="animation-name" need_index="True" @@ -953,16 +921,15 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto", impl ComputedValueAsSpecified for SpecifiedValue {} -<%helpers:longhand name="animation-duration" - need_index="True" - animatable="False", - spec="https://drafts.csswg.org/css-animations/#propdef-animation-duration", - allowed_in_keyframe_block="False"> - pub use super::transition_duration::computed_value; - pub use super::transition_duration::{get_initial_value, get_initial_single_value, parse}; - pub use super::transition_duration::SpecifiedValue; - pub use super::transition_duration::SingleSpecifiedValue; - +<%helpers:vector_longhand name="animation-duration" + need_index="True" + animatable="False", + spec="https://drafts.csswg.org/css-animations/#propdef-animation-duration", + allowed_in_keyframe_block="False"> + pub use properties::longhands::transition_duration::single_value::computed_value; + pub use properties::longhands::transition_duration::single_value::{get_initial_value, parse}; + pub use properties::longhands::transition_duration::single_value::SpecifiedValue; + <%helpers:longhand name="animation-timing-function" need_index="True" @@ -1095,16 +1062,15 @@ ${helpers.single_keyword("animation-fill-mode", spec="https://drafts.csswg.org/css-animations/#propdef-animation-fill-mode", allowed_in_keyframe_block=False)} -<%helpers:longhand name="animation-delay" - need_index="True" - animatable="False", - spec="https://drafts.csswg.org/css-animations/#propdef-animation-delay", - allowed_in_keyframe_block="False"> - pub use super::transition_duration::computed_value; - pub use super::transition_duration::{get_initial_value, get_initial_single_value, parse}; - pub use super::transition_duration::SpecifiedValue; - pub use super::transition_duration::SingleSpecifiedValue; - +<%helpers:vector_longhand name="animation-delay" + need_index="True" + animatable="False", + spec="https://drafts.csswg.org/css-animations/#propdef-animation-delay", + allowed_in_keyframe_block="False"> + pub use properties::longhands::transition_duration::single_value::computed_value; + pub use properties::longhands::transition_duration::single_value::{get_initial_value, parse}; + pub use properties::longhands::transition_duration::single_value::SpecifiedValue; + <%helpers:longhand products="gecko" name="scroll-snap-points-y" animatable="False" spec="Nonstandard (https://www.w3.org/TR/2015/WD-css-snappoints-1-20150326/#scroll-snap-points)"> diff --git a/components/style/properties/shorthand/box.mako.rs b/components/style/properties/shorthand/box.mako.rs index b7e45476789..8a8cb5fa42e 100644 --- a/components/style/properties/shorthand/box.mako.rs +++ b/components/style/properties/shorthand/box.mako.rs @@ -127,11 +127,11 @@ macro_rules! try_parse_one { Ok(SingleTransition { transition_property: property, transition_duration: - duration.unwrap_or_else(transition_duration::get_initial_single_value), + duration.unwrap_or_else(transition_duration::single_value::get_initial_value), transition_timing_function: timing_function.unwrap_or_else(transition_timing_function::get_initial_specified_single_value), transition_delay: - delay.unwrap_or_else(transition_delay::get_initial_single_value), + delay.unwrap_or_else(transition_delay::single_value::get_initial_value), }) } else { Err(()) @@ -238,11 +238,11 @@ macro_rules! try_parse_one { Ok(SingleAnimation { animation_name: name, animation_duration: - duration.unwrap_or_else(animation_duration::get_initial_single_value), + duration.unwrap_or_else(animation_duration::single_value::get_initial_value), animation_timing_function: timing_function.unwrap_or_else(animation_timing_function::get_initial_specified_single_value), animation_delay: - delay.unwrap_or_else(animation_delay::get_initial_single_value), + delay.unwrap_or_else(animation_delay::single_value::get_initial_value), animation_iteration_count: iteration_count.unwrap_or_else(animation_iteration_count::get_initial_single_value), animation_direction: diff --git a/tests/unit/style/properties/serialization.rs b/tests/unit/style/properties/serialization.rs index 1597b34b917..1199d2fe4ac 100644 --- a/tests/unit/style/properties/serialization.rs +++ b/tests/unit/style/properties/serialization.rs @@ -536,6 +536,7 @@ mod shorthand_serialization { fn transition_should_serialize_all_available_properties() { use euclid::point::Point2D; use style::properties::animated_properties::TransitionProperty; + use style::properties::longhands::transition_delay::SpecifiedValue as DelayContainer; use style::properties::longhands::transition_duration::SpecifiedValue as DurationContainer; use style::properties::longhands::transition_property::SpecifiedValue as PropertyContainer; use style::properties::longhands::transition_timing_function::SpecifiedValue as TimingContainer; @@ -551,7 +552,7 @@ mod shorthand_serialization { ); let delay = DeclaredValue::Value( - DurationContainer(vec![TimeContainer(4f32)]) + DelayContainer(vec![TimeContainer(4f32)]) ); let timing_function = DeclaredValue::Value(