Commit Graph

348 Commits

Author SHA1 Message Date
Sam Atkins
c9f7e0d88c Tests: Reimport attr-all-types WPT test
This has changed quite a bit since we imported it.
2025-12-17 11:53:08 +00:00
Sam Atkins
40b25f631b Tests: Re-import some border- and outline-width tests
Some subtests changed in response to this CSSWG resolution:
https://github.com/w3c/csswg-drafts/issues/11494#issuecomment-2675800489

Basically, `border-style: none` now affects the used value of
`border-width`, not the computed value. (And the same for `outline`
properties.)

This affects way more tests than I expected because
interpolation-testcommon.js now adds tests for composition.
2025-12-15 21:28:19 +01:00
Sam Atkins
53609c49ce Tests: Import some ::part() tests 2025-12-15 14:12:39 +00:00
Callum Law
f751e59c88 LibWeb: Import some circle() and ellipse() tests 2025-12-12 12:20:16 +00:00
Lorenz A
0313b2d97e LibWeb: Produce containing absolute boxes with will-change properties 2025-12-11 09:59:52 +00:00
Sam Atkins
8d404c58ec Tests: Import a ::part() serialization test 2025-12-08 17:28:09 +01:00
Sam Atkins
fb8575a57e Tests: Import some @import layer tests 2025-12-08 13:30:53 +00:00
Callum Law
68d07355ed LibWeb: Coordinate border-* longhands at compute time
Updates the `position-serialization.html` test to be 2-valued so that
all cases are covered.
2025-12-08 11:46:50 +00:00
Sam Atkins
72cea01e3b Tests: Import some WPT tests for the part attribute 2025-12-08 09:44:32 +00:00
Sam Atkins
ed7a86b8cc LibWeb/DOM: Set the pseudo_element on created Animation/TransitionEvents
Also import a couple of WPT tests that now pass.
2025-12-03 13:29:51 +01:00
Sam Atkins
d9abfdf2ab LibWeb/CSS: Allow non-StyleValueLists in animation properties
Reverts 51f694c6af and
b52beb5105.

The animation-* properties are in an awkward place currently, where
they *should* be lists, and a lot of our code acts as if they are, but
actually we parse them as single values. The above commits caused a few
WPT tests to crash - see link below. I've imported one of them to
prevent future regressions.
https://wpt.fyi/results/css/css-typed-om/the-stylepropertymap/properties?diff&filter=ADC&run_id=6293362870321152&run_id=5123272984494080
2025-12-02 09:48:32 +00:00
Sam Atkins
71397c876c Tests: Import gradient interpolation test
Importing separately to make progress easier to see.
2025-12-01 11:01:06 +00:00
Callum Law
65512f5403 LibWeb: Import CSS random function tests 2025-12-01 11:00:33 +00:00
Callum Law
63538c8a75 LibWeb: Prefer transitioned property values over important
CSS transitions have a higher precedence in the cascade than important
properties
2025-11-28 16:15:49 +00:00
Callum Law
b2b889e1da LibWeb: Ensure registered transitions are reflective of properties
Previously we would only update these if:
a) We had a cascaded value for `transition-property`
b) The source of that cascaded value had changed since we last
   registered transitions

This meant that there were a lot of changes we didn't apply:
 - Changes exclusively to properties other than `transition-property`
   (e.g. `transition-duration`, `transition-behavior`, etc)
 - Removing the `transition-property` property
 - Updating the `transition-property` property in a way that didn't
   change it's source (e.g. setting it within inline-style)

Unfortunately this does mean that we now register transitions for all
properties on most elements since "all" is the initial value for
"transition-property" which isn't great for performance, but that can be
looked at in later commits.
2025-11-23 09:43:24 +01:00
Psychpsyo
f0e6bfbc9f LibWeb: Reimport transitioncancel-003.html to make it less flaky 2025-11-21 18:42:36 +01:00
Jelle Raaijmakers
674e1a5c47 LibWeb: Support transitions between 3D and non-derivative 2D functions
If either of the two transform functions during interpolation is a 3D
function, both of them get coerced to a 3D function before deciding what
to do next. However, we only supported converting 2D functions to 3D if
they had a 2D primitive they could be converted to first.

Change our behavior to default to converting to matrix3d() if there is
no explicit conversion path. Fixes a crash in
`css/css-transforms/animation/transform-interpolation-004.html`.
2025-11-19 10:08:11 +01:00
Jelle Raaijmakers
e4dc2663ba LibWeb: Reimplement transform interpolation according to spec
We had a partial implementation of transformation function interpolation
that did not support numerical interpolation of simple functions (e.g.
`scale(0)` -> `scale(1)`). This refactors the interpolation to follow
the spec more closely.

Gains us 267 WPT subtest passes in `css/css-transforms`.

Fixes #6774.
2025-11-18 14:36:26 +01:00
Psychpsyo
edccb92da7 LibWeb: Make CSSPerspective correctly clamp its input for toMatrix() 2025-11-13 15:47:00 +01:00
Sam Atkins
9ac0966fc6 Tests: Import serialize-consecutive-tokens test
This had significant regressions after #6646, so let's import it to
track progress and prevent future regressions.
2025-11-04 14:05:31 +01:00
Sam Atkins
971c0d0126 LibWeb/CSS: Handle whitespace properly for scrollbar properties
Imported a WPT test that regressed without these changes.
2025-11-03 11:23:21 +00:00
Callum Law
fbcef936a9 LibWeb: Update style before getting animation play state
Pending style updates can influence this value
2025-11-02 23:54:00 +01:00
Callum Law
a95cde3660 LibWeb: Separate CSSAnimation::animationName from Animation::id 2025-11-02 23:54:00 +01:00
Callum Law
2447b8a759 LibWeb: Ignore non-animatable properties in keyframes
Gains us 21 WPT tests
2025-11-02 23:54:00 +01:00
ayeteadoe
30729feebb LibWeb: Prevent crash in content calculations for ListItemMarkerBox
In several content calculation methods in FormattingContext, we assumed
that if create_independent_formatting_context_if_needed() fails the
input Layout::Box is a BlockContainer; however, the web platform test
css/css-pseudo/parsing/marker-supported-properties-in-animation.html is
one scenario where the input is a Layout::ListItemMarkerBox instead and
there is no FormattingContext supported for it yet.
2025-10-30 18:21:24 +00:00
Callum Law
c2ca712406 LibWeb: Properly simplify sum nodes containing negated sum nodes
This is ad-hoc, see https://github.com/w3c/csswg-drafts/issues/13020

Gains us 5 WPT tests
2025-10-30 12:18:24 +00:00
Lorenz A
14dba82202 LibWeb: Allow whitespace in not after a boolean-expr-group 2025-10-28 21:54:48 -07:00
Callum Law
76dadd45d6 LibWeb: Favour !important property values over animated values 2025-10-27 09:51:50 +00:00
Callum Law
fd2f3b1f03 Tests: Import transition parsing tests 2025-10-23 10:09:11 +01:00
Callum Law
1977a976da LibWeb: Handle inaccuracies resolving transformation matrix type
Doing trigonometric calculations with floating point numbers can
introduce small inaccuracies. This meant that we would sometimes
incorrectly generate a 3d rather than 2d matrix for the resolved value
of `transform`.

Gains us 3 WPT tests.
2025-10-23 09:34:12 +01:00
Callum Law
85239fb1da Tests: Import tree-counting function WPT tests 2025-10-20 16:12:08 +01:00
Sam Atkins
c619c90e23 Tests: Import some @property tests 2025-10-20 13:55:23 +01:00
Callum Law
4c97b336c3 Tests: Import timing function tests 2025-10-20 11:27:44 +01:00
Callum Law
fb64be2f78 Tests: Import some css-shapes tests 2025-10-17 11:10:05 +01:00
Tim Ledbetter
b08ecc0cd1 Tests: Update WPT color parsing tests 2025-10-15 18:40:48 +02:00
Sam Atkins
65ba5acf9d Tests: Import @property { syntax } parsing test
This gets some extra passes with the next commit.
2025-10-14 13:41:47 +01:00
Tim Ledbetter
0bdb831c68 LibWeb: Avoid null dereference in ListItemBox specified content check 2025-10-14 10:27:11 +01:00
Tim Ledbetter
701ef22952 LibWeb: Use correct percentage basis when resolving line height 2025-10-13 10:17:58 +01:00
Sam Atkins
f61c67792d LibWeb/CSS: Allow setting shorthand values with StylePropertyMap.set()
Shorthands should be broken up into their longhands, instead of setting
them directly.

There's a catch here with our "positional value list shorthands" like
`margin`: Setting margin to a single value like `CSSUnitValue(10, "px")`
is supposed to fail here, but our type-checking code thinks it's valid
because our JSON for `margin` says it accepts lengths. This is the same
kind of issue that we had for `cursor` discussed in the
"LibWeb/CSS: Support converting CSSUnitValue to a StyleValue" commit.

Will get us a few subtest passes for every shorthand that's tested.
2025-10-09 16:14:58 +02:00
Sam Atkins
bd545af210 LibWeb/CSS: Support calculated percentages in line-height
Without this, the imported test will crash once we implement
`CSSUnitValue::create_an_internal_representation()`.
2025-10-09 16:14:58 +02:00
Callum Law
0bf6014001 Tests: Import css corner-shape tests 2025-10-09 10:23:20 +01:00
Tim Ledbetter
03fa367d9d LibWeb: Parse the anchor-scope property 2025-10-07 11:30:23 +01:00
Tim Ledbetter
85a15ea1d4 LibWeb: Parse the position-visibility value 2025-10-07 11:30:23 +01:00
Tim Ledbetter
47966ed589 LibWeb: Parse the position-try-order property 2025-10-07 11:30:23 +01:00
Tim Ledbetter
2bde14b148 LibWeb: Parse the position-try-fallbacks property 2025-10-07 11:30:23 +01:00
Tim Ledbetter
27cdf3a2c8 LibWeb: Parse the position-anchor property 2025-10-07 11:30:23 +01:00
Tim Ledbetter
7374a07fbc LibWeb: Parse the anchor-name property 2025-10-07 11:30:23 +01:00
Callum Law
e675b95f51 LibWeb: Add absolutized method to OpenTypeTaggedStyleValue 2025-10-07 10:50:01 +01:00
Callum Law
05c336ea4e LibWeb: Use document's viewport when resolving lengths in media queries
Previously we would always use the window's viewport which was incorrect
if we were within an iframe.

This is likely applicable to all uses of
`Length::ResolutionContext::for_window`.
2025-10-07 10:32:59 +01:00
Tim Ledbetter
51ea4a7e2a LibWeb: Align position-area values with the specification
This change renames the following `position-area` values:

x-self-start -> self-x-start
x-self-end -> self-x-end
y-self-start -> self-y-start
y-self-end -> self-y-end
span-x-self-start -> span-self-x-start
span-x-self-end -> span-self-x-end
span-y-self-start -> span-self-y-start
span-y-self-end -> span-self-y-end
2025-10-05 15:48:21 +01:00