aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/style/properties/gecko.mako.rs4
-rw-r--r--components/style/properties/longhand/box.mako.rs8
-rw-r--r--components/style/properties/longhand/inherited_svg.mako.rs2
-rw-r--r--components/style/values/computed/mod.rs2
-rw-r--r--components/style/values/specified/mod.rs6
-rw-r--r--tests/unit/style/parsing/length.rs7
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.))));
+}