From cd4333196337461acd8762bb3ca50b5aff96a7d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 3 May 2017 20:58:24 +0200 Subject: [PATCH] style: Allow parsing nested calc() expressions. --- components/style/values/specified/length.rs | 4 ++++ tests/unit/style/parsing/length.rs | 1 + .../metadata-css/css-values-3_dev/html/calc-in-calc.htm.ini | 3 --- 3 files changed, 5 insertions(+), 3 deletions(-) delete mode 100644 tests/wpt/metadata-css/css-values-3_dev/html/calc-in-calc.htm.ini diff --git a/components/style/values/specified/length.rs b/components/style/values/specified/length.rs index 7e41fa80585..e66022d96ec 100644 --- a/components/style/values/specified/length.rs +++ b/components/style/values/specified/length.rs @@ -843,6 +843,10 @@ impl CalcLengthOrPercentage { input.parse_nested_block(|i| CalcLengthOrPercentage::parse_sum(context, i, expected_unit)) .map(|result| CalcValueNode::Sum(Box::new(result))) }, + (Token::Function(ref name), _) if name.eq_ignore_ascii_case("calc") => { + input.parse_nested_block(|i| CalcLengthOrPercentage::parse_sum(context, i, expected_unit)) + .map(|result| CalcValueNode::Sum(Box::new(result))) + } _ => Err(()) } } diff --git a/tests/unit/style/parsing/length.rs b/tests/unit/style/parsing/length.rs index 6b246484934..4263f2a08a1 100644 --- a/tests/unit/style/parsing/length.rs +++ b/tests/unit/style/parsing/length.rs @@ -16,6 +16,7 @@ use style_traits::ToCss; #[test] fn test_calc() { assert!(parse(Length::parse, "calc(1px+ 2px)").is_err()); + assert!(parse(Length::parse, "calc(calc(1px) + calc(1px + 4px))").is_ok()); assert!(parse(Length::parse, "calc( 1px + 2px )").is_ok()); assert!(parse(Length::parse, "calc(1px + 2px )").is_ok()); assert!(parse(Length::parse, "calc( 1px + 2px)").is_ok()); diff --git a/tests/wpt/metadata-css/css-values-3_dev/html/calc-in-calc.htm.ini b/tests/wpt/metadata-css/css-values-3_dev/html/calc-in-calc.htm.ini deleted file mode 100644 index a6d81ffc78c..00000000000 --- a/tests/wpt/metadata-css/css-values-3_dev/html/calc-in-calc.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[calc-in-calc.htm] - type: reftest - expected: FAIL