Callum Law
778da0175e
LibWeb: Clamp and censor top-level calc results
...
We now clamp the values returned from calc into the allowed range (where
we know it) and censor any `NaN`s to `0` both when we resolve and when
we serialize.
Gains us 76 WPT passes.
2025-08-11 17:10:04 +01:00
Callum Law
c49afd7b28
LibWeb: Absolutize LengthPercentage members of BorderRadiusStyleValues
2025-08-06 17:44:12 +01:00
Callum Law
70cb8d23fb
Tests: Import/create tests related to absolutization of StyleValues
...
Done in a separate commit to show progress
2025-08-06 17:44:12 +01:00
Callum Law
ba4a57b34d
LibWeb: Absolutize StyleValueList in StyleComputer::absolutize_values
2025-08-06 17:44:12 +01:00
Tim Ledbetter
e36df5ea0a
LibWeb: Serialize background-size auto correctly
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
When `background-size` is `auto` in both axes, the `auto` value is no
longer repeated.
2025-08-02 08:51:23 +02:00
Tim Ledbetter
4c91b42dd2
LibWeb: Use shortest serialization for repeated style list values
2025-08-01 15:18:17 +02:00
Tim Ledbetter
3ae48776fd
LibWeb: Round integral values to the nearest integer when interpolating
...
Previously, color components were being incorrectly rounded when
interpolating.
2025-07-30 10:51:50 +02:00
Andreas Kling
92221f0c57
LibWeb: Apply all animations and transitions before invalidating style
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
This fixes an issue where only the last KeyframeEffect applied to an
element would actually have an effect on the computed properties.
It was particularly noticeable when animating a shorthand property like
border-width, since only one of the border edges would have its width
actually animate.
By deferring the invalidation until all animations have been processed,
we also reduce the amount of work that gets done on pages with many
animations/transitions per element. Discord is very fond of this for
example.
2025-07-19 11:08:46 -04:00
Gingeh
1b7323fc2d
LibWeb: Interpolate legacy colors in sRGB
2025-07-04 15:28:08 +01:00
Callum Law
9ab7c5d08d
LibWeb: Support relative lengths in calc color values
...
Gains us ~40 WPT tests.
2025-07-04 13:18:55 +01:00
Tim Ledbetter
923deb0c01
LibWeb: Parse border-image shorthand property
2025-07-03 10:19:44 +01:00
Tim Ledbetter
c0390f759c
LibWeb: Parse the border-image-repeat property
2025-07-03 10:19:44 +01:00
Tim Ledbetter
98e63e3dd5
LibWeb: Parse the border-image-outset property
2025-07-03 10:19:44 +01:00
Tim Ledbetter
245905b833
LibWeb: Parse the border-image-slice property
2025-07-03 10:19:44 +01:00
Tim Ledbetter
70c2621634
LibWeb: Parse the border-image-source property
2025-07-03 10:19:44 +01:00
Gingeh
e96338dd63
LibWeb: Don't play initially-paused animations
CI / macOS, arm64, Sanitizer_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, Clang (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-06-18 17:17:29 +02:00
Tim Ledbetter
d89a67ffee
LibWeb: Don't serialize omitted box-shadow and text-shadow values
2025-06-15 16:05:12 +02:00
Tim Ledbetter
028bcd3d67
LibWeb/CSS: Backtrack the parser if a property does not accept a value
CI / macOS, arm64, Sanitizer_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, Clang (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-06-14 08:22:56 +02:00
Tim Ledbetter
b16f34767e
LibWeb: Ensure discrete interpolated properties are non-transitionable
...
CI / Lagom (arm64, Sanitizer_CI, false, macOS, macos-15, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macOS, macOS-universal2, macos-15) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, Linux, Linux-x86_64, blacksmith-8vcpu-ubuntu-2404) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
If a property is uses discrete interpolation and TransitionBehavior is
not set to `AllowDiscrete` that property should be non-transitionable.
This is now true for properties whose animation type is not discrete,
but the animation type falls back to discrete.
2025-05-27 13:33:29 +02:00
Tim Ledbetter
c4d298674b
Tests: Re-enable interpolation tests
...
These run significantly faster than they did when they did when they
were disabled.
2025-05-19 11:31:47 +01:00
Tim Ledbetter
09f4d90594
LibWeb: Clamp interpolated values to the range of their numeric type
...
This fixes a UBSAN warning that we previously hit when interpolating
color values.
2025-05-19 11:31:47 +01:00
Tim Ledbetter
7d7bab7cac
LibWeb: Ensure resolved border-width values are non-negative
2025-05-19 09:55:09 +02:00
Tim Ledbetter
8a398e7a88
LibWeb: Parse all transition-property value as keyword
...
We were previously parsing this value, as a custom-ident, meaning that
the code path for handling the `all` case wasn't being followed.
2025-04-27 09:49:00 +01:00
Tim Ledbetter
64577ad704
LibWeb: Allow multiple values for the transition-duration property
2025-04-23 21:02:59 +01:00
Tim Ledbetter
04d7228c51
LibWeb: Implement interpolation of repeatable lists
2025-04-23 09:13:45 +01:00
Tim Ledbetter
16e83f0b35
Tests: Remove some animation tests from the ignore list
...
These tests are relevant to the fixes being made in later commits
2025-04-23 09:13:45 +01:00
Tim Ledbetter
3186adeaa1
LibWeb/CSS: Don't serialize longhands which match their initial values
...
Shorthand subproperties that match their initial values are now
excluded from serialization, by default.
Properties where this behavior is not desired, like `gap`, are
special-cased.
2025-04-07 11:38:56 +01:00
Tim Ledbetter
8738987e44
LibWeb: Return absolutized computed value for border width properties
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-04-04 23:45:06 +02:00
Tim Ledbetter
f6a8e5aa68
LibWeb: Use correct canonical serialization for BorderRadiusStyleValue
2025-03-18 21:55:06 +01:00
Tim Ledbetter
85728b297f
LibWeb: Ensure the shortest serialization is used for border-radius
...
This implementation also fixes an issue where the individual components
of the `border-radius` shorthand were always assumed to be of type
`BorderRadiusStyleValue`, which could lead to a crash when CSS-wide
keywords were used.
2025-03-18 21:55:06 +01:00
Tim Ledbetter
18cccd7633
LibWeb/CSS: Don't allow negative values in border-radius property
2025-03-14 15:07:57 +00:00
Tim Ledbetter
632fc73643
LibWeb/CSS: Don't allow negative border radius in box-shadow property
2025-03-14 15:07:57 +00:00
Tim Ledbetter
dc58c11217
LibWeb: Reject invalid background-position-* property values
2025-03-14 15:07:57 +00:00
Tim Ledbetter
764b80a1cc
LibWeb/CSS: Reject radial-gradient functions with negative size
2025-03-14 15:07:57 +00:00
Gingeh
84150f972f
LibWeb: Properly serialize position/edge style values
2024-12-13 11:35:38 +00:00
Andreas Kling
87dd8714c5
Tests: Import WPT tests from css/css-backgrounds/animation
...
These give us some basic coverage of backgrounds, borders and animation
mechanisms.
2024-11-07 22:50:33 +01:00