style: Be a bit more explicit about background-size.

We have a ton of ad-hoc `From` impls which seem overly generic, I think.
This commit is contained in:
Emilio Cobos Álvarez 2017-09-16 17:14:38 +02:00
parent 2ac1327e4b
commit 7e4338eed8
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
4 changed files with 23 additions and 12 deletions

View file

@ -167,8 +167,8 @@ ${helpers.single_keyword("background-origin",
flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER")}
${helpers.predefined_type("background-size", "BackgroundSize",
initial_value="computed::LengthOrPercentageOrAuto::Auto.into()",
initial_specified_value="specified::LengthOrPercentageOrAuto::Auto.into()",
initial_value="computed::BackgroundSize::auto()",
initial_specified_value="specified::BackgroundSize::auto()",
spec="https://drafts.csswg.org/css-backgrounds/#the-background-size",
vector=True,
animation_value_type="BackgroundSizeList",

View file

@ -13,6 +13,16 @@ use values::generics::background::BackgroundSize as GenericBackgroundSize;
/// A computed value for the `background-size` property.
pub type BackgroundSize = GenericBackgroundSize<LengthOrPercentageOrAuto>;
impl BackgroundSize {
/// Returns `auto auto`.
pub fn auto() -> Self {
GenericBackgroundSize::Explicit {
width: LengthOrPercentageOrAuto::Auto,
height: LengthOrPercentageOrAuto::Auto,
}
}
}
impl RepeatableListAnimatable for BackgroundSize {}
impl ToAnimatedZero for BackgroundSize {

View file

@ -24,12 +24,3 @@ pub enum BackgroundSize<LengthOrPercentageOrAuto> {
#[animation(error)]
Contain,
}
impl<L> From<L> for BackgroundSize<L>
where L: Clone,
{
#[inline]
fn from(value: L) -> Self {
BackgroundSize::Explicit { width: value.clone(), height: value }
}
}

View file

@ -20,7 +20,7 @@ impl Parse for BackgroundSize {
let height = input
.try(|i| LengthOrPercentageOrAuto::parse_non_negative(context, i))
.unwrap_or(LengthOrPercentageOrAuto::Auto);
return Ok(GenericBackgroundSize::Explicit { width: width, height: height });
return Ok(GenericBackgroundSize::Explicit { width, height });
}
let ident = input.expect_ident()?;
(match_ignore_ascii_case! { &ident,
@ -30,3 +30,13 @@ impl Parse for BackgroundSize {
}).map_err(|()| SelectorParseError::UnexpectedIdent(ident.clone()).into())
}
}
impl BackgroundSize {
/// Returns `auto auto`.
pub fn auto() -> Self {
GenericBackgroundSize::Explicit {
width: LengthOrPercentageOrAuto::Auto,
height: LengthOrPercentageOrAuto::Auto,
}
}
}