From c994326d5a70ad95ccb59aa8a71c3b1632802008 Mon Sep 17 00:00:00 2001
From: implicitfield <114500360+implicitfield@users.noreply.github.com>
Date: Tue, 9 Jan 2024 12:39:17 +0400
Subject: [PATCH] LibWeb/CSS: Improve parsing of length percentage values for
transforms
---
.../transform-calc-length-percentage-ref.html | 15 +++++++++++++++
.../Ref/transform-calc-length-percentage.html | 16 ++++++++++++++++
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 2 +-
.../Libraries/LibWeb/CSS/StyleProperties.cpp | 2 +-
4 files changed, 33 insertions(+), 2 deletions(-)
create mode 100644 Tests/LibWeb/Ref/reference/transform-calc-length-percentage-ref.html
create mode 100644 Tests/LibWeb/Ref/transform-calc-length-percentage.html
diff --git a/Tests/LibWeb/Ref/reference/transform-calc-length-percentage-ref.html b/Tests/LibWeb/Ref/reference/transform-calc-length-percentage-ref.html
new file mode 100644
index 0000000000..2276e7a545
--- /dev/null
+++ b/Tests/LibWeb/Ref/reference/transform-calc-length-percentage-ref.html
@@ -0,0 +1,15 @@
+
diff --git a/Tests/LibWeb/Ref/transform-calc-length-percentage.html b/Tests/LibWeb/Ref/transform-calc-length-percentage.html
new file mode 100644
index 0000000000..660dbb658e
--- /dev/null
+++ b/Tests/LibWeb/Ref/transform-calc-length-percentage.html
@@ -0,0 +1,16 @@
+
+
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
index 35ae5f5a42..9932b07ce1 100644
--- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
+++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
@@ -5095,7 +5095,7 @@ RefPtr Parser::parse_transform_value(TokenStream& to
break;
}
case TransformFunctionParameterType::LengthPercentage: {
- if (maybe_calc_value && maybe_calc_value->resolves_to_length()) {
+ if (maybe_calc_value && maybe_calc_value->resolves_to_length_percentage()) {
values.append(maybe_calc_value.release_nonnull());
} else {
auto dimension_value = parse_dimension_value(value);
diff --git a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp
index 9a6fef9cf7..93547b54e2 100644
--- a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp
+++ b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp
@@ -426,7 +426,7 @@ Vector StyleProperties::transformations_for_style_value(Sty
for (auto& transformation_value : transformation_style_value.values()) {
if (transformation_value->is_calculated()) {
auto& calculated = transformation_value->as_calculated();
- if (calculated.resolves_to_length()) {
+ if (calculated.resolves_to_length_percentage()) {
values.append(CSS::LengthPercentage { calculated });
} else if (calculated.resolves_to_percentage()) {
values.append({ calculated.resolve_percentage().value() });