diff options
-rw-r--r-- | components/style/properties/gecko.mako.rs | 4 | ||||
-rw-r--r-- | components/style/properties/longhand/box.mako.rs | 8 | ||||
-rw-r--r-- | components/style/properties/longhand/inherited_svg.mako.rs | 2 | ||||
-rw-r--r-- | components/style/values/computed/mod.rs | 2 | ||||
-rw-r--r-- | components/style/values/specified/mod.rs | 6 | ||||
-rw-r--r-- | tests/unit/style/parsing/length.rs | 7 |
6 files changed, 18 insertions, 11 deletions
diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index b468a76009d..b8f4d4ed541 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -3784,8 +3784,8 @@ clip-path for (mut gecko, servo) in self.gecko.mStrokeDasharray.iter_mut().zip(v.0.into_iter()) { match servo { - Either::First(lop) => gecko.set(lop), - Either::Second(number) => gecko.set_value(CoordDataValue::Factor(number)), + Either::First(number) => gecko.set_value(CoordDataValue::Factor(number)), + Either::Second(lop) => gecko.set(lop), } } } diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs index 85350c76ddf..bd53e8c716d 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -2008,8 +2008,8 @@ ${helpers.predefined_type("scroll-snap-coordinate", m32: Number::from_computed_value(&computed.m32), m33: Number::from_computed_value(&computed.m33), m34: Number::from_computed_value(&computed.m34), - m41: Either::First(LengthOrPercentage::from_computed_value(&computed.m41)), - m42: Either::First(LengthOrPercentage::from_computed_value(&computed.m42)), + m41: Either::Second(LengthOrPercentage::from_computed_value(&computed.m41)), + m42: Either::Second(LengthOrPercentage::from_computed_value(&computed.m42)), m43: LengthOrNumber::from_computed_value(&Either::First(computed.m43)), m44: Number::from_computed_value(&computed.m44), }); @@ -2056,8 +2056,8 @@ ${helpers.predefined_type("scroll-snap-coordinate", // LengthOrPercentage. Number maps into Length fn lopon_to_lop(value: &ComputedLoPoNumber) -> ComputedLoP { match *value { - Either::First(length_or_percentage) => length_or_percentage, - Either::Second(number) => ComputedLoP::Length(Au::from_f32_px(number)), + Either::First(number) => ComputedLoP::Length(Au::from_f32_px(number)), + Either::Second(length_or_percentage) => length_or_percentage, } } diff --git a/components/style/properties/longhand/inherited_svg.mako.rs b/components/style/properties/longhand/inherited_svg.mako.rs index 480f4a7adfb..068c3d127f6 100644 --- a/components/style/properties/longhand/inherited_svg.mako.rs +++ b/components/style/properties/longhand/inherited_svg.mako.rs @@ -92,7 +92,7 @@ ${helpers.predefined_type("stroke-opacity", "Opacity", "1.0", ${helpers.predefined_type("stroke-dasharray", "LengthOrPercentageOrNumber", - "Either::Second(0.0)", + "Either::First(0.0)", "parse_non_negative", vector="True", allow_empty="True", diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index 9f739660877..7cfdfa77716 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -468,7 +468,7 @@ impl ToCss for SVGPaint { } /// <length> | <percentage> | <number> -pub type LengthOrPercentageOrNumber = Either<LengthOrPercentage, Number>; +pub type LengthOrPercentageOrNumber = Either<Number, LengthOrPercentage>; #[derive(Clone, PartialEq, Eq, Copy, Debug)] #[cfg_attr(feature = "servo", derive(HeapSizeOf))] diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index c51027b864a..84c25c81119 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -1191,7 +1191,7 @@ impl ToComputedValue for SVGPaintKind { } /// <length> | <percentage> | <number> -pub type LengthOrPercentageOrNumber = Either<LengthOrPercentage, Number>; +pub type LengthOrPercentageOrNumber = Either<Number, LengthOrPercentage>; impl LengthOrPercentageOrNumber { /// parse a <length-percentage> | <number> enforcing that the contents aren't negative @@ -1199,10 +1199,10 @@ impl LengthOrPercentageOrNumber { // NB: Parse numbers before Lengths so we are consistent about how to // recognize and serialize "0". if let Ok(num) = input.try(|i| Number::parse_non_negative(context, i)) { - return Ok(Either::Second(num)) + return Ok(Either::First(num)) } - LengthOrPercentage::parse_non_negative(context, input).map(Either::First) + LengthOrPercentage::parse_non_negative(context, input).map(Either::Second) } } diff --git a/tests/unit/style/parsing/length.rs b/tests/unit/style/parsing/length.rs index b6d9a30b42c..6b246484934 100644 --- a/tests/unit/style/parsing/length.rs +++ b/tests/unit/style/parsing/length.rs @@ -8,6 +8,8 @@ use parsing::parse; use style::context::QuirksMode; use style::parser::{LengthParsingMode, Parse, ParserContext}; use style::stylesheets::{CssRuleType, Origin}; +use style::values::Either; +use style::values::specified::{LengthOrPercentageOrNumber, Number}; use style::values::specified::length::{AbsoluteLength, Length, NoCalcLength}; use style_traits::ToCss; @@ -46,3 +48,8 @@ fn test_length_parsing_modes() { assert!(result.is_ok()); assert_eq!(result.unwrap(), Length::NoCalc(NoCalcLength::Absolute(AbsoluteLength::Px(1.)))); } + +#[test] +fn test_zero_percentage_length_or_number() { + assert_eq!(parse(LengthOrPercentageOrNumber::parse, "0"), Ok(Either::First(Number::new(0.)))); +} |