Sam Atkins
a57595faf5
LibWeb: Make [resolve,inherit]_counters() take AbstractElement
...
This is one of those cases where the spec says "element" and
means "element or pseudo-element". The easiest way to handle both is to
make these be free functions that take an AbstractElement, and then
give AbstractElement some helper methods so that the caller doesn't
have to care which it's dealing with.
There are some FIXMEs here because PseudoElement doesn't have a
CountersSet yet, and because the CountersSet currently uses a
UniqueNodeID to identify counter sources, which doesn't support
pseudo-elements.
2025-06-19 12:35:31 +01:00
Sam Atkins
ce380a59c7
LibWeb/DOM: Rename ElementReference to AbstractElement
...
This isn't some kind of identifier, it's a handle on an actual Element
or PseudoElement.
2025-06-19 12:35:31 +01: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
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
Aliaksandr Kalenik
6169e91994
LibWeb: Delete redundant GridFitContent class from track representation
...
GridSize already supports the FitContent type, so there is no need to
additionally wrap it in a GridFitContent class.
2025-06-18 15:51:10 +01: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
fa1e02e5d7
LibWeb: Allow calc()
values in cubic-bezier()
easing functions
2025-06-18 08:57:06 +02: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
Aliaksandr Kalenik
b9b6927b85
LibWeb: Fix swapped strings for auto-fill and auto-fit in GridRepeat
...
...serialization.
2025-06-17 17:43:04 +01:00
Sam Atkins
7fe854c131
LibWeb/CSS: Link CalculationContext to new spec definition
...
Corresponds to ad244f3413
There's nothing that we need to do differently I think, but it's nice to
have a clear spec definition to refer to. :^)
2025-06-17 12:38:27 +01:00
Sam Atkins
a263ba78ed
LibWeb/CSS: Add FIXME that color-mix() now takes 1+ colors, not 2
...
Corresponds to 83c7bffe51
2025-06-17 12:38:27 +01:00
Sam Atkins
1435480d76
LibWeb/CSS: Add fixme for sRGB color interpolation
...
Corresponds to a0a9886063
2025-06-17 12:38:27 +01:00
Tim Ledbetter
59a2e10a4e
LibWeb: Distinguish between empty block at-rules and statement at-rules
2025-06-17 08:58:00 +01: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
Tim Ledbetter
6c6219db05
LibWeb: Use shorthand keywords for contain
used value where possible
...
The used value of `contain` is now set to `strict` or `content` when
the relevant set of containment keywords are specified.
2025-06-17 08:17:33 +01:00
Tim Ledbetter
96d8bed35b
LibWeb/CSS: Serialize contain
values in canonical order
2025-06-17 08:17:33 +01:00
Callum Law
12c9da2d3f
LibWeb: Serialize grid/grid-template as "none" when applicable
...
This exposes a bunch of false-positives in the
grid-{shorthand,template}-invalid.html WPT tests, but gains us some
new passes as well.
2025-06-16 12:37:40 +01:00
Callum Law
7d81823eb3
LibWeb: Handle CSS-wide keywords in style_property_for_sided_shorthand
...
CSS-wide keywords should not be concatenated in the same way as other
values unless they are all the same.
2025-06-16 12:37:40 +01:00
Callum Law
62da650992
LibWeb: Don't serialize longhands if we directly serialized shorthand
...
The spec assumes that we only store values against expanded longhands,
there are however limited circumstances where we store against
shorthands directly in addition to the expanded longhands. For example
if the value of the shorthand is unresolved we store an
UnresolvedStyleValue against the shorthand directly and a
PendingSubstitutionStyleValue against each of the longhands.
This commit updates the logic so that in the case we serialize a
shorthand directly we should also mark it's longhands as serialized to
avoid serializing them separately.
This also avoids the scenario where we tried to create and serialize a
ShorthandStyleValue with PendingSubstitutionStyleValue longhands, so we
can remove the check and related FIXME for that.
2025-06-16 12:37:40 +01:00
Callum Law
f8f4da3b90
LibWeb: Don't serialize shorthand with non-uniform CSS-wide keywords
2025-06-16 12:37:40 +01:00
Callum Law
3c6b8d5a2c
LibWeb: Propagate CSS-wide keyword to transition longhands
...
Previously we would treat CSS-wide keywords as equivalent to "none"
2025-06-16 12:37:40 +01:00
Callum Law
335190e925
LibWeb: Handle nested shorthands in all-same-CSS-wide-keyword to_string
...
Previously we only checked direct sub-properties, not accounting for the
nested case.
2025-06-16 12:37:40 +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
39cef6eeb5
LibWeb: Disallow default
as a keyframe name
2025-06-14 17:56:10 -04: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
Aliaksandr Kalenik
fdecdb9410
LibWeb/CSS: Remove unused default constructors in GridTrackSize.h
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-13 19:57:00 +02:00
Aliaksandr Kalenik
237356c5ca
LibWeb: Return const&
from GridSize::length_percentage()
2025-06-13 19:57:00 +02:00
Aliaksandr Kalenik
97639d1d74
LibWeb: Return const&
from GridFitContent::max_grid_size()
2025-06-13 19:57:00 +02:00
Aliaksandr Kalenik
1009a6e8c4
LibWeb: Return const&
from GridMinMax getters
2025-06-13 19:57:00 +02:00
Aliaksandr Kalenik
9c7c33e0aa
LibWeb: Return const&
from GridRepeat::grid_track_size_list()
2025-06-13 19:57:00 +02:00
Aliaksandr Kalenik
cdf3e52172
LibWeb: Return const&
from GridTrackSizeList::list()
2025-06-13 19:57:00 +02:00
Aliaksandr Kalenik
286771457a
LibWeb/CSS: Use default operator== where possible in GridTrackSize
...
No behavior change.
2025-06-13 19:57:00 +02:00
Aliaksandr Kalenik
8d83dce1d7
LibWeb: Use variant to represent CSS::ExplicitGridTrack
...
No behavior change.
2025-06-13 19:57:00 +02:00
Jelle Raaijmakers
15c436b332
LibWeb: Implement basic focus indication for :focus-visible
...
This causes links to no longer show an outline when clicked; only when
using keyboard navigation with the tab key will the outline show up.
2025-06-13 17:39:11 +02:00
Callum Law
64d79d4c3f
LibWeb: Avoid overwriting resolved values in compute_keyframe_values
...
When we have an unresolved value for a shorthand (e.g. `border-style:
var(--border-style)`, `keyframe_values` will contain an
`UnresolvedStyleValue` for the shorthand and
`PendingSubstitutionStyleValue`s for each of it's longhands.
When we come across the shorthand's `UnresolvedStyleValue` we will
resolve the value and set all of the relevant longhands.
If the longhand's `PendingSubstitutionStyleValue` was processed after
(which isn't always the case as the iteration order depends on a
HashMap) would overwrite the correctly resolved longhand.
To avoid this we just skip any `PendingSubstitutionStyleValue`s we come
across and rely on the resolution of the shorthand to set those
properties.
Resolves a crash @tcl3 was experiencing when adding a new
"border-image-repeat" property.
2025-06-13 17:06:00 +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
Sam Atkins
00f76ccbf4
LibWeb/CSS: Add alternative src() syntax for URLs
...
url() has some limitations because of allowing unquoted URLs as its
contents. For example, it can't use `var()`. To get around this, there's
an alternative `src()` function which behaves the same as `url()` except
that it is parsed as a regular function, which makes `var()` and friends
work properly.
There's no WPT test for this as far as I can tell, so I added our own.
2025-06-11 16:26:23 +02:00
Andreas Kling
ea0bfda1b9
LibWeb: Cache the font in StyleComputer::initial_font()
...
This function is bogus, but it's still getting called a lot during media
query evaluation, so let's at least cache the font instead of recreating
it every single time.
2025-06-11 16:25:42 +02:00
Callum Law
a9eecf76df
LibWeb: Dont compute style when CSSStyleProperties lacks owner node
...
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
Some instances of CSSStyleProperties can lack an owner node, for
instance the return value of a call to `window.getComputedStyle` where
the specified pseudo-element is invalid. In this case we should treat
the computed style as empty, as there is no node to compute the style
for.
2025-06-09 12:28:41 +01:00