LibWeb: Don't serialize omitted box-shadow and text-shadow values

This commit is contained in:
Tim Ledbetter 2025-06-14 04:06:01 +01:00 committed by Alexander Kalenik
commit d89a67ffee
Notes: github-actions[bot] 2025-06-15 14:06:07 +00:00
7 changed files with 207 additions and 31 deletions

View file

@ -23,22 +23,22 @@ enum class ShadowPlacement {
class ShadowStyleValue final : public StyleValueWithDefaultOperators<ShadowStyleValue> {
public:
static ValueComparingNonnullRefPtr<ShadowStyleValue const> create(
ValueComparingNonnullRefPtr<CSSStyleValue const> color,
ValueComparingRefPtr<CSSStyleValue const> color,
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_x,
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_y,
ValueComparingNonnullRefPtr<CSSStyleValue const> blur_radius,
ValueComparingNonnullRefPtr<CSSStyleValue const> spread_distance,
ValueComparingRefPtr<CSSStyleValue const> blur_radius,
ValueComparingRefPtr<CSSStyleValue const> spread_distance,
ShadowPlacement placement)
{
return adopt_ref(*new (nothrow) ShadowStyleValue(move(color), move(offset_x), move(offset_y), move(blur_radius), move(spread_distance), placement));
}
virtual ~ShadowStyleValue() override = default;
ValueComparingNonnullRefPtr<CSSStyleValue const> const& color() const { return m_properties.color; }
ValueComparingNonnullRefPtr<CSSStyleValue const> const& offset_x() const { return m_properties.offset_x; }
ValueComparingNonnullRefPtr<CSSStyleValue const> const& offset_y() const { return m_properties.offset_y; }
ValueComparingNonnullRefPtr<CSSStyleValue const> const& blur_radius() const { return m_properties.blur_radius; }
ValueComparingNonnullRefPtr<CSSStyleValue const> const& spread_distance() const { return m_properties.spread_distance; }
ValueComparingNonnullRefPtr<CSSStyleValue const> color() const;
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_x() const { return m_properties.offset_x; }
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_y() const { return m_properties.offset_y; }
ValueComparingNonnullRefPtr<CSSStyleValue const> blur_radius() const;
ValueComparingNonnullRefPtr<CSSStyleValue const> spread_distance() const;
ShadowPlacement placement() const { return m_properties.placement; }
virtual String to_string(SerializationMode) const override;
@ -47,11 +47,11 @@ public:
private:
ShadowStyleValue(
ValueComparingNonnullRefPtr<CSSStyleValue const> color,
ValueComparingRefPtr<CSSStyleValue const> color,
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_x,
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_y,
ValueComparingNonnullRefPtr<CSSStyleValue const> blur_radius,
ValueComparingNonnullRefPtr<CSSStyleValue const> spread_distance,
ValueComparingRefPtr<CSSStyleValue const> blur_radius,
ValueComparingRefPtr<CSSStyleValue const> spread_distance,
ShadowPlacement placement)
: StyleValueWithDefaultOperators(Type::Shadow)
, m_properties {
@ -68,11 +68,11 @@ private:
virtual ValueComparingNonnullRefPtr<CSSStyleValue const> absolutized(CSSPixelRect const& viewport_rect, Length::FontMetrics const& font_metrics, Length::FontMetrics const& root_font_metrics) const override;
struct Properties {
ValueComparingNonnullRefPtr<CSSStyleValue const> color;
ValueComparingRefPtr<CSSStyleValue const> color;
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_x;
ValueComparingNonnullRefPtr<CSSStyleValue const> offset_y;
ValueComparingNonnullRefPtr<CSSStyleValue const> blur_radius;
ValueComparingNonnullRefPtr<CSSStyleValue const> spread_distance;
ValueComparingRefPtr<CSSStyleValue const> blur_radius;
ValueComparingRefPtr<CSSStyleValue const> spread_distance;
ShadowPlacement placement;
bool operator==(Properties const&) const = default;
} m_properties;