Tim Ledbetter
96d8bed35b
LibWeb/CSS: Serialize contain
values in canonical order
2025-06-17 08:17:33 +01:00
Tim Ledbetter
7faeef8d0d
LibWeb: Treat font-variant
values with unknown keywords as invalid
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-15 16:44:51 +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
68d3ddb1a7
LibWeb: Parse the transform-origin
z-value
2025-06-15 16:01:54 +02:00
Tim Ledbetter
a8d5758777
LibWeb: Only resolve transform-origin
keywords for the computed value
...
Previously, we were resolving these keywords at parse time, which gave
an incorrect serialization of the specified value.
2025-06-15 16:01:54 +02:00
Tim Ledbetter
a3f6e71e33
LibWeb/CSS: Disallow third argument in 2D scale functions
2025-06-15 15:59:02 +02:00
Tim Ledbetter
64728aef6c
LibWeb: Disallow non-ASCII font-language-override
values
2025-06-14 16:05:04 -04:00
Tim Ledbetter
c55f281475
LibWeb: Disallow empty font-language-override
string values
2025-06-14 16:05:04 -04: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
26293114d8
LibWeb/CSS: Treat repeated text-decoration-line
values as invalid
2025-06-14 08:19:47 +02:00
Callum Law
d31a58a7d6
LibWeb: Add support for the 'all' CSS property
...
The "longhands" array is populated in the code generator to avoid the
overhead of manually maintaining the list in Properties.json
There is one subtest that still fails in
'cssstyledeclaration-csstext-all-shorthand', this is related to
us not maintaining the relative order of CSS declarations for custom vs
non-custom properties.
2025-06-12 15:25:35 +01:00
Tim Ledbetter
e2d0d8e2b9
LibWeb/CSS: Implement the scrollbar-color
property
...
This allows the user to set the scrollbar thumb and track colors.
2025-06-02 00:17:51 +02:00
Lucien Fiorini
0fcb574041
LibGfx+LibWeb: Turn Gfx::Filter into a SkImageFilter wrapper
2025-06-01 23:22:10 +02:00
Callum Law
94f5a51820
LibWeb: Convert white-space
CSS property to shorthand
...
This exposed a few bugs which caused the following tests to behave
incorrectly:
- `tab-size-text-wrap.html`: This previously relied on a bug where we
incorrectly treated `white-space: pre` as allowing text wrapping. The
fix here is to implement the text-wrap CSS shorthand property.
- `execCommand-preserveWhitespace.html`: We don't correctly serialize
shorthand properties. This is covered by an existing FIXME in
`CSSStyleProperties::serialized()`
- `white-space-shorthand.html`: The last 5 subtests here fail as we
don't correctly handle shorthand properties in
`CSSStyleProperties::remove_property()`. This is covered by an
existing FIXME in said function.
2025-05-29 12:04:28 +02:00
Callum Law
9480b1fc5c
LibWeb: Parse and propagate white-space-trim
CSS property
2025-05-29 12:04:28 +02:00
Sam Atkins
f5825ab18c
LibWeb/CSS: Stop erasing font-variant-css2 value in font shorthand
...
We don't want to reset the values of `font-variant-*` here, as that will
override whatever our parsed font-variant-css2 was, so stop doing that.
Also, font-stretch is mentioned in the spec, but it's a legacy name
alias for font-width, so we don't need to do anything for it.
Gets us 319 WPT passes!
2025-05-23 19:39:23 +01:00
Sam Atkins
d9a8349d8c
LibWeb/CSS: Parse font-variant and font-weight parts of font properly
...
These are not the same as parsing their properties, but are limited to a
small set of keywords each. The easiest way to handle these is parsing
them directly here.
Update some comments while I'm here.
2025-05-23 19:39:23 +01:00
Mark Langen
6cbb5d2785
LibWeb: Parse and propagate touch-action CSS property
...
Co-authored-by: Sam Atkins <sam@ladybird.org>
2025-05-06 12:22:01 +01:00
Psychpsyo
7c36a82129
LibWeb: Improve parsing for the CSS contain property
...
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
This makes us actually respect the grammar and nets us a couple
extra WPT passes in the parsing section.
2025-05-04 22:24:26 +01:00
Tim Ledbetter
c0f9b11070
LibWeb: Parse oblique font-style
with an angle value
2025-05-03 12:05:22 +02:00
Bastiaan van der Plaat
832bb978f5
LibWeb: Reject CSS values with unprocessed tokens / extra semicolons
2025-05-02 11:10:02 +01:00
Tim Ledbetter
542c3cbe51
LibWeb: Implement the transition-behavior
CSS property
...
This specifies whether transitions should be started for transitions
whose animation behavior is discrete.
2025-05-02 11:07:19 +01:00
Tim Ledbetter
27baaa13e9
LibWeb: Support parsing and serializing 3D translate values
2025-04-30 19:36:56 +02:00
Sam Atkins
326933cd93
LibWeb/CSS: Use CSS::URL for <url>
and <paint>
types
2025-04-30 17:38:38 +01:00
Tim Ledbetter
e7ae9c8ebf
LibWeb: Parse all
as keyword in transition
shorthand
...
This ensures that the parsing of the `transition` shorthand property
behaves in the same way as the `transition-property` longhand.4
2025-04-28 20:51:36 +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
Andreas Kling
cf704cfbfc
LibWeb: Implement interpolation for CSS scale
values
...
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
And let's handle the 3rd (Z) scale parameter as well, while we're here.
At least 242 new passes on WPT.
2025-04-25 14:08:12 +02:00
Tim Ledbetter
64577ad704
LibWeb: Allow multiple values for the transition-duration
property
2025-04-23 21:02:59 +01:00
Tim Ledbetter
1ca9f2a44d
LibWeb: Allow multiple values for the transition-delay
property
2025-04-23 21:02:59 +01:00
Tim Ledbetter
c5f1f36119
LibWeb: Allow multiple values for transition-timing-function
property
2025-04-23 21:02:59 +01:00
Tim Ledbetter
1f8f3804a3
LibWeb: Allow transition-property
with multiple values
2025-04-23 21:02:59 +01:00
Andrew Kaster
6d11414957
LibWeb: Make storage of CSS::StyleValues const-correct
...
Now we consistently use `RefPtr<StyleValue const>` for all StyleValues.
2025-04-16 10:41:44 -06:00
Sam Atkins
a7f7c2a821
LibWeb/CSS: Teach OpenTypeTaggedStyleValue to serialize without "1"
2025-04-07 10:00:21 +01:00
Tim Ledbetter
e73438e82c
LibWeb: Clamp grayscale, invert, filter and opacity filter values to 1
2025-04-04 17:12:47 +01:00
Tim Ledbetter
61f76c7ec5
LibWeb: Set color filter value to 1 if omitted
2025-04-04 17:12:47 +01:00
Sam Atkins
79093291b5
LibWeb/CSS: Un-template parse_comma_separated_value_list()
...
This doesn't need to be a template. Changing it means we can use it from
any FooParsing.cpp file, and also move it ValueParsing.cpp where it
belongs.
2025-04-04 10:40:32 +01:00
Glenn Skrzypczak
9973b01848
LibWeb/CSS: Improved implementation of background-blend-mode
...
This is a improved version of a73cd88f0c
The old commit was reverted in 552dd18696
The new version only paints an element into a new layer if background
blend modes other than normal are used. The rasterization performance
of most websites should therefore not suffer.
Co-Authored-By: Alexander Kalenik <kalenik.aliaksandr@gmail.com>
2025-04-01 13:38:00 +02:00
Aliaksandr Kalenik
552dd18696
Revert "LibWeb/CSS: Implement 'background-blend-mode'"
...
This reverts commit a73cd88f0c
.
Emitting SaveLayer for each paintable made rasterization a lot slower
on every website because now Skia has to allocate enormous amounts of
temporary surfaces. Let's revert it for now and figure how to implement
it with less aggressive SaveLayer usage.
2025-03-28 16:48:03 +00:00
Glenn Skrzypczak
a73cd88f0c
LibWeb/CSS: Implement 'background-blend-mode'
...
This implements the 'background-blend-mode' CSS property.
2025-03-28 09:41:06 +00:00
Sam Atkins
ef3a2bf907
LibWeb/CSS: Move functions for detecting var()/attr() into Token types
...
This makes them accessible outside of PropertyParsing.cpp (which will be
useful if/when descriptors can include them). I've also renamed them to
use the correct term: "arbitrary substitution function".
2025-03-28 09:15:02 +00:00
Sam Atkins
f8536fc48a
LibWeb/CSS: Split out <family-name>
parsing
...
This type is used individually elsewhere in the spec. This also lets us
separate out the `<generic-family>` type.
2025-03-25 07:53:59 +00:00
Tim Ledbetter
2672fe99b7
LibWeb: Set correct longhands if grid-area
subproperties are omitted
2025-03-20 16:59:27 +00: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
5559c3cb4f
LibWeb/CSS: Parse <single-transition-property>
as a <custom-ident>
...
The specification also treats a transition name of `none` as invalid.
2025-03-14 08:52:25 +01:00
Tim Ledbetter
6298ec6be4
LibWeb: Validate time values when parsing transition value
2025-03-14 08:52:25 +01:00
Tim Ledbetter
b80c0d2114
LibWeb/CSS: Reject invalid grid track placement property values
2025-03-14 08:50:04 +01:00
Tim Ledbetter
ad4ade3f07
LibWeb/CSS: Disallow invalid <counter-name>
values
...
We now parse `<counter-name>` values as a `<custom-ident>`. This
disallows `default` and CSS-wide keywords as counter names. The
specification additionally disallows `none` as a counter name.
2025-03-13 05:23:19 +00:00
Tim Ledbetter
249de20343
LibWeb/CSS: Don't allow negative values in filter functions
2025-03-12 09:06:16 +00:00