diff --git a/servo/components/style/properties/longhand/list.mako.rs b/servo/components/style/properties/longhand/list.mako.rs index 91e003d25751..a5a1c30861aa 100644 --- a/servo/components/style/properties/longhand/list.mako.rs +++ b/servo/components/style/properties/longhand/list.mako.rs @@ -54,6 +54,10 @@ ${helpers.predefined_type("list-style-image", "UrlOrNone", "Either::Second(None_ impl ToCss for SpecifiedValue { fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + if self.0.is_empty() { + return dest.write_str("none") + } + let mut first = true; for pair in &self.0 { if !first { diff --git a/servo/tests/unit/style/properties/serialization.rs b/servo/tests/unit/style/properties/serialization.rs index da2574a575d0..44fec3b5b243 100644 --- a/servo/tests/unit/style/properties/serialization.rs +++ b/servo/tests/unit/style/properties/serialization.rs @@ -1114,4 +1114,28 @@ mod shorthand_serialization { assert_eq!(s, "none"); } } + + mod quotes { + pub use super::*; + + #[test] + fn should_serialize_none_correctly() { + use cssparser::Parser; + use media_queries::CSSErrorReporterTest; + use style::parser::ParserContext; + use style::properties::longhands::quotes; + use style::stylesheets::Origin; + + let mut s = String::new(); + let url = ::servo_url::ServoUrl::parse("http://localhost").unwrap(); + let context = ParserContext::new(Origin::Author, &url, Box::new(CSSErrorReporterTest)); + + let parsed = quotes::parse(&context, &mut Parser::new("none")).unwrap(); + let try_serialize = parsed.to_css(&mut s); + + assert_eq!(try_serialize.is_ok(), true); + assert_eq!(s, "none"); + } + + } }