LibWeb: Add AO for "normalize non-finite values"

We had implemented this in two different ways. Add an AO to to align the
implementations.
This commit is contained in:
Shannon Booth 2024-05-04 12:39:45 +12:00 committed by Andrew Kaster
commit e5d03e382e
Notes: sideshowbarker 2024-07-17 08:38:37 +09:00
3 changed files with 27 additions and 12 deletions

View file

@ -15,4 +15,23 @@ struct ScrollOptions {
Bindings::ScrollBehavior behavior { Bindings::ScrollBehavior::Auto };
};
// https://drafts.csswg.org/cssom-view/#normalize-non-finite-values
[[nodiscard]] inline double normalize_non_finite_values(double value)
{
// When asked to normalize non-finite values for a value x, if x is one of the three special floating point
// literal values (Infinity, -Infinity or NaN), then x must be changed to the value 0. [WEBIDL]
if (isinf(value) || isnan(value))
return 0;
return value;
}
// https://drafts.csswg.org/cssom-view/#normalize-non-finite-values
[[nodiscard]] inline double normalize_non_finite_values(Optional<double> const& value)
{
if (!value.has_value())
return 0;
return normalize_non_finite_values(value.value());
}
}