LibWeb/CSS: Resolve NumericCalculationNode to percentage when requested
When the caller of NumericCalculationNode::resolve() does not provide a percentage_basis, it expects the method to return a raw percentage value. Fixes crashing on https://discord.com/login
This commit is contained in:
parent
1593ff2d4c
commit
225ed58f7e
Notes:
sideshowbarker
2024-07-17 08:55:54 +09:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/SerenityOS/serenity/commit/225ed58f7e Pull-request: https://github.com/SerenityOS/serenity/pull/22697
3 changed files with 15 additions and 1 deletions
1
Tests/LibWeb/Text/expected/css/css-hsl-with-calc.txt
Normal file
1
Tests/LibWeb/Text/expected/css/css-hsl-with-calc.txt
Normal file
|
@ -0,0 +1 @@
|
|||
rgb(30, 31, 34)
|
11
Tests/LibWeb/Text/input/css/css-hsl-with-calc.html
Normal file
11
Tests/LibWeb/Text/input/css/css-hsl-with-calc.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
<!doctype html><script src="../include.js"></script><style>
|
||||
body {
|
||||
--saturation-factor: 1;
|
||||
background: hsl(225, calc(var(--saturation-factor, 1) * 6.3%), 12.5%);
|
||||
}
|
||||
</style><body></body><script>
|
||||
test(() => {
|
||||
const bodyStyle = window.getComputedStyle(document.body);
|
||||
println(bodyStyle.backgroundColor);
|
||||
});
|
||||
</script>
|
|
@ -220,9 +220,11 @@ bool NumericCalculationNode::contains_percentage() const
|
|||
CalculatedStyleValue::CalculationResult NumericCalculationNode::resolve(Optional<Length::ResolutionContext const&>, CalculatedStyleValue::PercentageBasis const& percentage_basis) const
|
||||
{
|
||||
if (m_value.has<Percentage>()) {
|
||||
// NOTE: Depending on whether percentage_basis is set, the caller of resolve() is expecting a raw percentage or
|
||||
// resolved length.
|
||||
return percentage_basis.visit(
|
||||
[&](Empty const&) -> CalculatedStyleValue::CalculationResult {
|
||||
VERIFY_NOT_REACHED();
|
||||
return m_value;
|
||||
},
|
||||
[&](auto const& value) {
|
||||
return CalculatedStyleValue::CalculationResult(value.percentage_of(m_value.get<Percentage>()));
|
||||
|
|
Loading…
Add table
Reference in a new issue