From bfa408255f4aa3d7a96454ed8769507f192a116e Mon Sep 17 00:00:00 2001 From: tamamu Date: Mon, 10 Apr 2017 04:38:23 +0900 Subject: [PATCH] Add place-items shorthand property (it fails unit-test) --- .../properties/shorthand/position.mako.rs | 32 +++++++++++++++++++ tests/unit/style/properties/serialization.rs | 17 ++++++++++ 2 files changed, 49 insertions(+) diff --git a/components/style/properties/shorthand/position.mako.rs b/components/style/properties/shorthand/position.mako.rs index 9acbd9047dbf..f001c5690ca8 100644 --- a/components/style/properties/shorthand/position.mako.rs +++ b/components/style/properties/shorthand/position.mako.rs @@ -210,3 +210,35 @@ } } + +<%helpers:shorthand name="place-items" sub_properties="align-items justify-items" + spec="https://drafts.csswg.org/css-align/#place-items-property" + products="gecko"> + use values::specified::align::{AlignItems, JustifyItems}; + use parser::Parse; + + impl From for JustifyItems { + fn from(align: AlignItems) -> JustifyItems { + JustifyItems(align.0) + } + } + + pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result { + let align = AlignItems::parse(context, input)?; + let justify = input.try(|input| JustifyItems::parse(context, input)) + .unwrap_or(JustifyItems::from(align)); + + Ok(Longhands { + align_items: align, + justify_items: justify, + }) + } + + impl<'a> ToCss for LonghandsToSerialize<'a> { + fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + self.align_items.to_css(dest)?; + dest.write_str(" ")?; + self.justify_items.to_css(dest) + } + } + diff --git a/tests/unit/style/properties/serialization.rs b/tests/unit/style/properties/serialization.rs index ee867505420e..e23a66f42892 100644 --- a/tests/unit/style/properties/serialization.rs +++ b/tests/unit/style/properties/serialization.rs @@ -1280,4 +1280,21 @@ mod shorthand_serialization { let serialization = shorthand_properties_to_string(properties); assert_eq!(serialization, "place-self: auto baseline;"); } + + #[test] + fn place_items_serialize_all_available_properties() { + use style::properties::longhands::align_items::SpecifiedValue as AlignItems; + use style::properties::longhands::justify_items::SpecifiedValue as JustifyItems; + + let mut properties = Vec::new(); + + let align = AlignItems::flex_start; + let justify = JustifyItems::baseline; + + properties.push(PropertyDeclaration::AlignItems(align)); + properties.push(PropertyDeclaration::JustifyItems(justify)); + + let serialization = shorthand_properties_to_string(properties); + assert_eq!(serialization, "place-items: flex-start baseline;"); + } }