File tree Expand file tree Collapse file tree 2 files changed +11
-5
lines changed
Libraries/LibWeb/CSS/StyleValues
Tests/LibWeb/Text/expected/wpt-import/css/css-values Expand file tree Collapse file tree 2 files changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -1405,6 +1405,13 @@ Optional<CalculatedStyleValue::CalculationResult> SignCalculationNode::run_opera
14051405 [](Percentage const & percentage) { return percentage.as_fraction (); },
14061406 [](auto const & dimension) { return dimension.raw_value (); });
14071407
1408+ auto return_type = NumericType {}.made_consistent_with (numeric_child.numeric_type ().value_or ({}));
1409+
1410+ // https://drafts.csswg.org/css-values-4/#calc-ieee
1411+ // Any operation with at least one NaN argument produces NaN.
1412+ if (isnan (raw_value))
1413+ return CalculatedStyleValue::CalculationResult { AK::NaN<double >, return_type };
1414+
14081415 double sign = 0 ;
14091416 if (raw_value < 0 ) {
14101417 sign = -1 ;
@@ -1415,7 +1422,7 @@ Optional<CalculatedStyleValue::CalculationResult> SignCalculationNode::run_opera
14151422 sign = extractor.sign ? -0.0 : 0.0 ;
14161423 }
14171424
1418- return CalculatedStyleValue::CalculationResult { sign, NumericType {}. made_consistent_with (numeric_child. numeric_type (). value_or ({})) };
1425+ return CalculatedStyleValue::CalculationResult { sign, return_type };
14191426}
14201427
14211428void SignCalculationNode::dump (StringBuilder& builder, int indent) const
Original file line number Diff line number Diff line change @@ -2,8 +2,7 @@ Harness status: OK
22
33Found 16 tests
44
5- 14 Pass
6- 2 Fail
5+ 16 Pass
76Pass 'scale(abs(1))' as a specified value should serialize as 'scale(calc(1))'.
87Pass 'scale(sign(.1))' as a specified value should serialize as 'scale(calc(1))'.
98Pass 'scale(abs(1 + 2 + 3))' as a specified value should serialize as 'scale(calc(6))'.
@@ -18,5 +17,5 @@ Pass 'scale(calc(sign(infinity)))' as a specified value should serialize as 'sca
1817Pass 'scale(abs(infinity))' as a specified value should serialize as 'scale(calc(infinity))'.
1918Pass 'scale(calc(abs(-infinity)))' as a specified value should serialize as 'scale(calc(infinity))'.
2019Pass 'scale(calc(sign(-1 * infinity)))' as a specified value should serialize as 'scale(calc(-1))'.
21- Fail 'scale(calc(sign(-1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'.
22- Fail 'scale(calc(sign(1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'.
20+ Pass 'scale(calc(sign(-1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'.
21+ Pass 'scale(calc(sign(1 * NaN)))' as a specified value should serialize as 'scale(calc(NaN))'.
You can’t perform that action at this time.
0 commit comments