From 66af7e4d3aeabcdecf08c8ada8cf2ed1b5ba2d64 Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Mon, 16 Jan 2017 16:03:57 +1100 Subject: [PATCH] Store blink value for text-decoration-line The spec does say user agents may not blink, but it doesn't say this value can be ignored during parsing. --- components/style/properties/gecko.mako.rs | 3 +++ .../style/properties/longhand/text.mako.rs | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 6d5885473c40..1acc7c5c854b 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -2315,6 +2315,9 @@ fn static_assert() { if v.line_through { bits |= structs::NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH as u8; } + if v.blink { + bits |= structs::NS_STYLE_TEXT_DECORATION_LINE_BLINK as u8; + } self.gecko.mTextDecorationLine = bits; } diff --git a/components/style/properties/longhand/text.mako.rs b/components/style/properties/longhand/text.mako.rs index 912c55d98ff8..6c5f34c65aac 100644 --- a/components/style/properties/longhand/text.mako.rs +++ b/components/style/properties/longhand/text.mako.rs @@ -117,8 +117,7 @@ ${helpers.single_keyword("unicode-bidi", pub underline: bool, pub overline: bool, pub line_through: bool, - // 'blink' is accepted in the parser but ignored. - // Just not blinking the text is a conforming implementation per CSS 2.1. + pub blink: bool, } impl ToCss for SpecifiedValue { @@ -140,6 +139,13 @@ ${helpers.single_keyword("unicode-bidi", try!(dest.write_str(" ")); } try!(dest.write_str("line-through")); + space = true; + } + if self.blink { + if space { + try!(dest.write_str(" ")); + } + try!(dest.write_str("blink")); } Ok(()) } @@ -148,7 +154,7 @@ ${helpers.single_keyword("unicode-bidi", pub type T = super::SpecifiedValue; #[allow(non_upper_case_globals)] pub const none: T = super::SpecifiedValue { - underline: false, overline: false, line_through: false + underline: false, overline: false, line_through: false, blink: false }; } #[inline] pub fn get_initial_value() -> computed_value::T { @@ -157,12 +163,11 @@ ${helpers.single_keyword("unicode-bidi", /// none | [ underline || overline || line-through || blink ] pub fn parse(_context: &ParserContext, input: &mut Parser) -> Result { let mut result = SpecifiedValue { - underline: false, overline: false, line_through: false, + underline: false, overline: false, line_through: false, blink: false }; if input.try(|input| input.expect_ident_matching("none")).is_ok() { return Ok(result) } - let mut blink = false; let mut empty = true; while input.try(|input| { @@ -174,8 +179,8 @@ ${helpers.single_keyword("unicode-bidi", else { empty = false; result.overline = true }, "line-through" => if result.line_through { return Err(()) } else { empty = false; result.line_through = true }, - "blink" => if blink { return Err(()) } - else { empty = false; blink = true }, + "blink" => if result.blink { return Err(()) } + else { empty = false; result.blink = true }, _ => return Err(()) } } else {