From 8af89979894430571ada2d58f2f8dd814391355a Mon Sep 17 00:00:00 2001 From: Callum Law Date: Sun, 23 Nov 2025 17:29:06 +1300 Subject: [PATCH 01/13] LibWeb: Propagate 'auto' value of `animation-duration` Avoids a crash when `animation-duration` was `auto` --- Libraries/LibWeb/CSS/ComputedProperties.cpp | 22 ++++++++++++++++++- .../Crash/CSS/animation-duration-auto.html | 8 +++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Crash/CSS/animation-duration-auto.html diff --git a/Libraries/LibWeb/CSS/ComputedProperties.cpp b/Libraries/LibWeb/CSS/ComputedProperties.cpp index f5085a775a32..a021e4ea1bc5 100644 --- a/Libraries/LibWeb/CSS/ComputedProperties.cpp +++ b/Libraries/LibWeb/CSS/ComputedProperties.cpp @@ -2287,7 +2287,27 @@ Vector ComputedProperties::animations() auto animation_fill_mode_style_value = coordinated_properties.get(PropertyID::AnimationFillMode).value()[i]; auto animation_composition_style_value = coordinated_properties.get(PropertyID::AnimationComposition).value()[i]; - auto duration = Time::from_style_value(animation_duration_style_value, {}).to_milliseconds(); + // https://drafts.csswg.org/css-animations-2/#animation-duration + auto duration = [&] -> Variant { + // auto + if (animation_duration_style_value->to_keyword() == Keyword::Auto) { + // For time-driven animations, equivalent to 0s. + return 0; + + // FIXME: For scroll-driven animations, equivalent to the duration necessary to fill the timeline in + // consideration of animation-range, animation-delay, and animation-iteration-count. See + // Scroll-driven Animations § 4.1 Finite Timeline Calculations. + } + + //