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