Tim Ledbetter
62e52163d6
LibWeb: Interpolate text-shadow
values as a shadow list
...
This is the same behavior as is currently used for `box-shadow`.
2025-07-30 10:51:50 +02:00
Tim Ledbetter
484a09d6a2
LibWeb: Support interpolating rotate
values
2025-07-22 11:09:45 +01:00
norbiros
ab574deb93
Tests: Import some css/css-properties-values-api
WPT tests
...
Casual import of 4 WPT tests related to `CSS.registerProperty`
2025-07-22 10:57:54 +01:00
Luke Wilde
8210a7b3e3
LibWeb: Resolve FontFaceSet::load promise with all loaded FontFaces
...
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
Build Dev Container Image / build (push) Has been cancelled
The resulting array is required on https://www.canva.com/
2025-07-21 16:29:55 +01:00
Sam Atkins
11e2dbb555
LibWeb/CSS: Support text-justify: distribute
legacy value alias
...
...for `text-justify: inter-character`.
We previously had this mapped in Enums.json, but the behaviour is
different: `a=b` in Enums.json keeps `a` around but makes it behave the
same as `b`. A legacy name alias is instead expected to replace `a`
with `b`, so we have to do that separately.
2025-07-21 10:04:42 +01:00
Gingeh
f38e07e0c5
LibWeb: Don't crash when an unknown property begins with a single dash
2025-07-20 08:54:53 +02:00
Andrew Kaster
50422eb563
Tests: Add XHTML tests for CDATA, PIs and Comment nodes in the DOM
2025-07-19 14:56:20 +02:00
Callum Law
4ee8110449
LibWeb: Handle flood-opacity
in line with other opacity properties
...
We now do the proper thing in terms of:
- Allowing percentages
- Returning the computed value in getComputedStyle
- Handling values out of the [0,1] range
Gains us 13 WPT passes in the imported tests.
2025-07-18 11:04:55 -04:00
Sam Atkins
07b5b7ffb6
Tests: Import CSS clip-path: path(...)
tests
2025-07-17 13:59:23 -04:00
Sam Atkins
5d1ba658c9
Tests: Import attr()-related WPT tests
2025-07-16 14:47:45 +01:00
Callum Law
1d3e539c09
LibWeb: Account for logical property groups in set_a_declaration
...
When setting a declaration for a property in a logical property group,
it should appear after all other declarations which belong to the same
property group but have different mapping logic (are/aren't a logical
alias).
Gains us 1 WPT pass.
2025-07-16 11:16:49 +01:00
Callum Law
927cd969b2
LibWeb: Generically serialize "positional-value-list-shorthand"s
...
We were previously handling this ad-hoc via logic in
`get_property_internal` but this didn't cover all contexts (for
instance `CSSStyleProperties::serialized`.
Gains us 9 more WPT tests as we now cover properties which weren't
included in the previous ad-hoc approach.
2025-07-15 14:26:02 +01:00
Shannon Booth
9054ff29f0
LibWeb/CSS: Parse the ::slotted pseudo-element
2025-07-15 13:54:17 +01:00
Callum Law
d980321a77
LibWeb: Include own shadow root in for_each_shadow_including_descendant
...
Fixes a crash in wpt.live/css/cssom/CSSStyleSheet-constructable.html
2025-07-11 16:21:11 +02:00
Callum Law
1a0d4487a8
LibWeb: Implement matches attribute on CSSSupportsRule and CSSMediaRule
...
Gains us 4 WPT tests.
2025-07-11 10:57:19 +02:00
Tim Ledbetter
c4cf1ccede
LibWeb: Don't crash when parsing ASF with non comma-separated arguments
2025-07-09 19:47:12 +01:00
Sam Atkins
59f2c8df7a
Tests: Import some custom-property tests
...
To make it easier to track progress and regressions in subsequent
changes.
2025-07-09 16:44:20 +01:00
Callum Law
ceb1c37ba3
LibWeb: Import CSS logical border property parsing WPT tests
2025-07-09 10:10:38 +01:00
Jelle Raaijmakers
e1c93c0ee8
LibWeb: Import WPT elementsFromPoint test
...
This specific test failed for some of the previous iterations of this
changeset, so let's import it and use it as a regression test.
2025-07-05 23:56:42 +01:00
Tim Ledbetter
923deb0c01
LibWeb: Parse border-image
shorthand 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
Tim Ledbetter
9d1373de86
Tests/LibWeb: Import unicode range parsing test from WPT
2025-07-03 08:22:30 +01:00
Tim Ledbetter
78b6032940
LibWeb: Validate operator count when parsing a calculation
...
Previously, we would allow calc values such as `calc(min(1 2))`, which
would be simplified to `calc(3)` because we assumed that numbers not
separated by an operator represented a sum. We now validate that the
number of operators we see is as we would expect before collecting
these values into a sum node.
2025-07-02 10:12:58 +01:00
Gingeh
0e3386bb4c
LibWeb: Throw SyntaxError when FontFaceSet contains var
2025-07-01 11:50:05 +01:00
Tim Ledbetter
5b522c096e
LibWeb: Add border-*-radius
logical properties
2025-07-01 11:16:37 +02:00
Callum Law
8e9753eadb
LibWeb: Correctly compute consistent type when simplifying hypot
...
Previously we would never get a valid `consistent_type` as we were
trying to make the node types consistent with the initial empty type
which isn't possible.
Gains us 7 WPT tests.
2025-06-30 14:53:04 +02:00
Tim Ledbetter
90da2f5418
LibWeb: Add the border-block-*
shorthand properties
2025-06-30 14:52:18 +02:00
Tim Ledbetter
bf37f3400e
LibWeb: Don't treat "--" as a valid custom property name
...
This is reserved for future use by CSS.
2025-06-25 17:09:29 +01:00
Tim Ledbetter
48f56cad08
LibWeb: Handle non-numeric font-weight
values in keyframes
...
Previously, using `font-weight` with a keyword or `calc()` value inside
a keyframe rule would cause a crash.
2025-06-25 09:01:56 +02:00
Callum Law
536f8c395c
LibWeb: Set numeric type of asin, acos, atan calculation results
...
Previously we were omitting the numeric type which meant these functions
weren't valid in some cases e.g. within rotate() functions.
2025-06-25 05:19:07 +01:00
Tim Ledbetter
1c2b6ae03e
LibWeb: Don't attempt to set the frozen base url on a null base element
2025-06-25 01:33:45 +12:00
Sam Atkins
8b6c32e3ab
Tests: Import tests for scrollParent() and offsetParent()
2025-06-24 15:26:35 +02:00
Callum Law
6584ae0080
LibWeb: Treat CSS selectors containing undeclared namespaces as invalid
...
Selectors containing undeclared namespaces should be considered invalid,
not just not matching any elements.
Gains us 3 new WPT passes.
2025-06-24 12:51:12 +01:00
Tim Ledbetter
b46378085d
LibWeb: Absolutize keyframe values before interpolating
2025-06-24 12:36:47 +01:00
Callum Law
34a52baeed
LibWeb: Add generic functionality for logical alias computed values
2025-06-23 15:19:07 +01:00
Callum Law
cfc8d3031b
LibWeb: Map logical aliases at cascade time
...
Previously we would incorrectly map these in
`CSSStyleProperties::convert_declarations_to_specified_order`, aside
from being too early (as it meant we didn't maintain them as distinct
from their physical counterparts in CSSStyleProperties), this meant
that we didn't yet have the required context to map them correctly.
We now map them as part of the cascade process. To compute the mapping
context we do a cascade without mapping, and extract the relevant
properties (writing-direction and direction).
2025-06-23 15:19:07 +01:00
Callum Law
80ea865b19
LibWeb: Use correct error for invalid rule in nested insertRule
...
When we try to insert a disallowed (non-nested) statement into a
CSSGroupingRule we should throw a `HierarchyRequestError` as it being
disallowed is a "constraint specified by CSS". Previously we would rely
on `Parser::is_valid_in_the_current_context` and throw a Syntax error.
There are more constraints to be implemented.
2025-06-23 12:52:40 +01:00
Tim Ledbetter
689dff3ee8
Tests: Synchronize imported tests with the WPT repository
2025-06-22 23:51:34 +02:00
Aliaksandr Kalenik
7b077595c3
Tests: Reimport css/css-grid/parsing/grid-template-columns-computed.html
...
Sync this test with upstream WPT where they added a new subtest in this
file.
2025-06-21 22:07:08 +02:00
Tim Ledbetter
07b3b70a10
LibWeb: Return the correct computed value for opacity properties
CI / Linux, x86_64, Sanitizer_CI, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, Clang (push) Waiting to run
CI / macOS, arm64, Sanitizer_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers_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-19 10:27:35 +02:00
Tim Ledbetter
269d5bb40e
LibWeb: Resolve percentages for opacity properties at parse time
2025-06-19 10:27:35 +02:00
Tim Ledbetter
e0af205d69
LibWeb/CSS: Implement the empty-cells
property
...
This property sets whether table borders and backgrounds are painted
if a given table cell has no visible content.
2025-06-18 14:55:03 +01:00
Tim Ledbetter
c5a3eaaf45
LibWeb: Allow calc()
values in steps()
easing functions
2025-06-18 08:57:06 +02:00
Veeti Paananen
21b531598d
LibWeb/CSS: Fix reference bug when canonicalizing linear easing stops
...
+2 WPT tests
2025-06-18 08:53:10 +02:00
Tim Ledbetter
701fcb9e87
LibWeb: Allow anonymous layer block rule with no declarations
2025-06-17 08:58:00 +01:00
Tim Ledbetter
30cdacc05a
LibWeb: Add flow relative values for the clear
property
...
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
Currently `inline-start` and `inline-end` are always treated as `left`
and `right` respectively.
2025-06-17 09:26:26 +02:00
Tim Ledbetter
28b24b72bc
LibWeb: Don't resolve flow-relative values for float
too early
...
This allows `getComputedStyle()` to return the correct value if `float`
is set to `inline-start` or `inline-end`
2025-06-17 09:26:26 +02:00
Callum Law
f8f4da3b90
LibWeb: Don't serialize shorthand with non-uniform CSS-wide keywords
2025-06-16 12:37:40 +01:00