From 29ac1714c4e6ef09bb7ab341fb573839c9e63fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Tue, 24 Jan 2017 19:33:15 +0300 Subject: [PATCH] Fix CalcLengthOrPercentage serialization --- components/style/values/specified/length.rs | 27 ++----------------- tests/wpt/mozilla/tests/mozilla/calc.html | 29 +++++++++++---------- 2 files changed, 17 insertions(+), 39 deletions(-) diff --git a/components/style/values/specified/length.rs b/components/style/values/specified/length.rs index 964a3c9b5753..5f53376bb09b 100644 --- a/components/style/values/specified/length.rs +++ b/components/style/values/specified/length.rs @@ -761,20 +761,6 @@ impl HasViewportPercentage for CalcLengthOrPercentage { impl ToCss for CalcLengthOrPercentage { #[allow(unused_assignments)] fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - macro_rules! count { - ( $( $val:ident ),* ) => { - { - let mut count = 0; - $( - if let Some(_) = self.$val { - count += 1; - } - )* - count - } - }; - } - let mut first_value = true; macro_rules! first_value_check { () => { @@ -798,12 +784,7 @@ impl ToCss for CalcLengthOrPercentage { }; } - let count = count!(ch, em, ex, absolute, rem, vh, vmax, vmin, vw, percentage); - assert!(count > 0); - - if count > 1 { - try!(write!(dest, "calc(")); - } + try!(write!(dest, "calc(")); serialize!(ch, em, ex, rem, vh, vmax, vmin, vw); if let Some(val) = self.absolute { @@ -816,11 +797,7 @@ impl ToCss for CalcLengthOrPercentage { try!(write!(dest, "{}%", val * 100.)); } - if count > 1 { - try!(write!(dest, ")")); - } - - Ok(()) + write!(dest, ")") } } diff --git a/tests/wpt/mozilla/tests/mozilla/calc.html b/tests/wpt/mozilla/tests/mozilla/calc.html index 8d6f11f6892b..c0ad739b64ce 100644 --- a/tests/wpt/mozilla/tests/mozilla/calc.html +++ b/tests/wpt/mozilla/tests/mozilla/calc.html @@ -15,28 +15,29 @@ var div = document.getElementById('inner'); var widthTests = [ - ['calc(10px)', '10px', '10px'], + ['calc(10px)', 'calc(10px)', '10px'], // Basic Arithmetic - ['calc(10px + 10px)', '20px', '20px'], - ['calc(10px - 5px)', '5px', '5px'], - ['calc(2 * 10px)', '20px', '20px'], - ['calc(10px / 2)', '5px', '5px'], + ['calc(10px + 10px)', 'calc(20px)', '20px'], + ['calc(10px - 5px)', 'calc(5px)', '5px'], + ['calc(2 * 10px)', 'calc(20px)', '20px'], + ['calc(10px / 2)', 'calc(5px)', '5px'], // Parse ok - ['calc(20px/2)', '10px', '10px'], - ['calc(10px*2)', '20px', '20px'], + ['calc(20px/2)', 'calc(10px)', '10px'], + ['calc(10px*2)', 'calc(20px)', '20px'], // Parse errors - value left over from previous test - ['calc(10px-10px)', '20px', '20px'], - ['calc(5px+5px)', '20px', '20px'], + ['calc(10px-10px)', 'calc(20px)', '20px'], + ['calc(5px+5px)', 'calc(20px)', '20px'], + ['calc()', 'calc(20px)', '20px'], // Combining units ['calc(10px + 10em)', 'calc(10em + 10px)', '170px'], ['calc(10px + 10em - 10px)', 'calc(10em + 0px)', '160px'], // Fold absolute units - ['calc(1px + 1pt + 1pc + 1in + 1cm + 1mm)', '155.88333333333333px', '155.88333333333333px'], + ['calc(1px + 1pt + 1pc + 1in + 1cm + 1mm)', 'calc(155.88333333333333px)', '155.88333333333333px'], // Alphabetical order ['calc(0ch + 0px + 0pt + 0pc + 0in + 0cm + 0mm + 0rem + 0em + 0ex + 0% + 0vw + 0vh + 0vmin + 0vmax)', @@ -44,8 +45,8 @@ '0px'], // Simplification - ['calc((2 - 1) * 10px)', '10px', '10px'], - ['calc(((3 - 1) * (8 + 4)) * 10px)', '240px', '240px'], + ['calc((2 - 1) * 10px)', 'calc(10px)', '10px'], + ['calc(((3 - 1) * (8 + 4)) * 10px)', 'calc(240px)', '240px'], ['calc(5 * (20px / 2 + 7 * (3em + 12px/4 + (8 - 2) * 2rem)))', 'calc(105em + 420rem + 155px)', '8555px'], ]; @@ -75,7 +76,7 @@ lengthProperties.forEach(function(prop) { test(function() { div.style.setProperty(prop, 'calc(1px)'); - assert_equals(div.style.getPropertyValue(prop), '1px'); + assert_equals(div.style.getPropertyValue(prop), 'calc(1px)'); }, 'calc for ' + prop); }); @@ -130,7 +131,7 @@ var otherProperties = [ ['border-width', 'calc(1px)', '1px 1px 1px 1px'], - ['border-spacing', 'calc(1px)', '1px 1px'], + ['border-spacing', 'calc(1px)', 'calc(1px) calc(1px)'], ['transform-origin', 'calc(1px + 0%)', 'calc(1px + 0%) 50% 0px'], ['perspective-origin', 'calc(1px + 0%)', 'calc(1px + 0%) 50%'], ['background-size', 'calc(1px + 0%)', 'calc(1px + 0%) auto'],