Auto merge of #17073 - upsuper:flex-basis-zero, r=emilio

Set flex-basis to 0% when omitted in flex shorthand.

This should fix [bug 1331530](https://bugzilla.mozilla.org/show_bug.cgi?id=1331530).

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17073)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-05-29 17:58:44 -05:00 committed by GitHub
commit 76daf46295
4 changed files with 34 additions and 4 deletions

View file

@ -1099,9 +1099,14 @@
/// Returns a value representing a `0` length. /// Returns a value representing a `0` length.
pub fn zero() -> Self { pub fn zero() -> Self {
use values::specified::length::{LengthOrPercentageOrAuto, NoCalcLength}; use values::specified::length::LengthOrPercentageOrAuto;
SpecifiedValue(MozLength::LengthOrPercentageOrAuto( SpecifiedValue(MozLength::LengthOrPercentageOrAuto(LengthOrPercentageOrAuto::zero()))
LengthOrPercentageOrAuto::Length(NoCalcLength::zero()))) }
/// Returns a value representing a `0%` length.
pub fn zero_percent() -> Self {
use values::specified::length::LengthOrPercentageOrAuto;
SpecifiedValue(MozLength::LengthOrPercentageOrAuto(LengthOrPercentageOrAuto::zero_percent()))
} }
} }
% endif % endif

View file

@ -92,7 +92,11 @@
Ok(expanded! { Ok(expanded! {
flex_grow: grow.unwrap_or(Number::new(1.0)), flex_grow: grow.unwrap_or(Number::new(1.0)),
flex_shrink: shrink.unwrap_or(Number::new(1.0)), flex_shrink: shrink.unwrap_or(Number::new(1.0)),
flex_basis: basis.unwrap_or(longhands::flex_basis::SpecifiedValue::zero()), // Per spec, this should be SpecifiedValue::zero(), but all
// browsers currently agree on using `0%`. This is a spec
// change which hasn't been adopted by browsers:
// https://github.com/w3c/csswg-drafts/commit/2c446befdf0f686217905bdd7c92409f6bd3921b
flex_basis: basis.unwrap_or(longhands::flex_basis::SpecifiedValue::zero_percent()),
}) })
} }

View file

@ -735,6 +735,12 @@ impl Percentage {
Self::parse_with_clamping_mode(input, AllowedNumericType::NonNegative) Self::parse_with_clamping_mode(input, AllowedNumericType::NonNegative)
} }
/// 0%
#[inline]
pub fn zero() -> Self {
Percentage(0.)
}
/// 100% /// 100%
#[inline] #[inline]
pub fn hundred() -> Self { pub fn hundred() -> Self {
@ -999,6 +1005,11 @@ impl LengthOrPercentageOrAuto {
pub fn zero() -> Self { pub fn zero() -> Self {
LengthOrPercentageOrAuto::Length(NoCalcLength::zero()) LengthOrPercentageOrAuto::Length(NoCalcLength::zero())
} }
/// Returns a value representing `0%`.
pub fn zero_percent() -> Self {
LengthOrPercentageOrAuto::Percentage(Percentage::zero())
}
} }
impl Parse for LengthOrPercentageOrAuto { impl Parse for LengthOrPercentageOrAuto {
@ -1157,6 +1168,11 @@ impl LengthOrPercentageOrAutoOrContent {
pub fn zero() -> Self { pub fn zero() -> Self {
LengthOrPercentageOrAutoOrContent::Length(NoCalcLength::zero()) LengthOrPercentageOrAutoOrContent::Length(NoCalcLength::zero())
} }
/// Returns a value representing `0%`.
pub fn zero_percent() -> Self {
LengthOrPercentageOrAutoOrContent::Percentage(Percentage::zero())
}
} }
impl ToCss for LengthOrPercentageOrAutoOrContent { impl ToCss for LengthOrPercentageOrAutoOrContent {

View file

@ -0,0 +1,5 @@
[flexbox_computedstyle_flex-shorthand-number.htm]
type: testharness
[flexbox | computed style | flex: number]
expected: FAIL