From bd25d0b1b424abb6b50978f94fd05f8f619ba067 Mon Sep 17 00:00:00 2001
From: Gingeh <39150378+Gingeh@users.noreply.github.com>
Date: Wed, 30 Oct 2024 21:36:57 +1100
Subject: [PATCH] LibWeb: Parse drop-shadow filter with missing or starting
color
---
.../Screenshot/css-filter-drop-shadow.html | 22 ++++++++++++++++++
.../images/css-filter-drop-shadow-ref.png | Bin 0 -> 6700 bytes
.../reference/css-filter-drop-shadow-ref.html | 10 ++++++++
.../Libraries/LibWeb/CSS/Parser/Parser.cpp | 7 +++++-
4 files changed, 38 insertions(+), 1 deletion(-)
create mode 100644 Tests/LibWeb/Screenshot/css-filter-drop-shadow.html
create mode 100644 Tests/LibWeb/Screenshot/images/css-filter-drop-shadow-ref.png
create mode 100644 Tests/LibWeb/Screenshot/reference/css-filter-drop-shadow-ref.html
diff --git a/Tests/LibWeb/Screenshot/css-filter-drop-shadow.html b/Tests/LibWeb/Screenshot/css-filter-drop-shadow.html
new file mode 100644
index 00000000000..84a285d8eb7
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/css-filter-drop-shadow.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/LibWeb/Screenshot/images/css-filter-drop-shadow-ref.png b/Tests/LibWeb/Screenshot/images/css-filter-drop-shadow-ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..991ddf9c9cbbfd29047fe8edcf29b9018efa8a82
GIT binary patch
literal 6700
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
+ * {
+ margin: 0;
+ }
+
+ body {
+ background-color: white;
+ }
+
+
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
index a945d2318df..8af7a1069b8 100644
--- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
+++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
@@ -5455,6 +5455,7 @@ RefPtr Parser::parse_filter_value_list_value(TokenStream maybe_radius = {};
auto maybe_color = parse_color_value(tokens);
+ tokens.discard_whitespace();
auto x_offset = parse_length(tokens);
tokens.discard_whitespace();
if (!x_offset.has_value() || !tokens.has_next_token())
@@ -5476,8 +5477,12 @@ RefPtr Parser::parse_filter_value_list_value(TokenStream color = {};
+ if (maybe_color)
+ color = maybe_color->to_color({});
+
// FIXME: Support calculated offsets and radius
- return if_no_more_tokens_return(FilterOperation::DropShadow { x_offset->value(), y_offset->value(), maybe_radius.map([](auto& it) { return it.value(); }), maybe_color->to_color({}) });
+ return if_no_more_tokens_return(FilterOperation::DropShadow { x_offset->value(), y_offset->value(), maybe_radius.map([](auto& it) { return it.value(); }), color });
} else if (filter_token == FilterToken::HueRotate) {
// hue-rotate( [ | ]? )
if (!tokens.has_next_token())