Callum Law
b0e3af7d10
LibWeb: Parse text-underline-position
property
...
This introduces the `TextUnderlinePositionStyleValue` class, it is
possible to represent `text-underline-position` as a `StyleValueList`
but would have required ugly workarounds for either serialization or in
`ComputedProperties::text_underline_position`
2025-09-15 15:24:20 +01:00
Callum Law
a6812e1005
LibWeb: Store parsed shorthands in canonical order
2025-09-15 15:24:20 +01:00
Tim Ledbetter
f5fd6338d5
LibWeb: Handle interpolation of mixed-type LengthPercentages
2025-09-15 10:41:01 +01:00
Tim Ledbetter
7409c564d7
LibWeb: Extract mixed-type interpolation to a separate method
2025-09-15 10:41:01 +01:00
Tim Ledbetter
b19fee9962
LibWeb: Interpolate ellipse()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
f146207a04
LibWeb: Interpolate circle()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
4a0fe65923
LibWeb: Interpolate polygon()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
853bedeb31
LibWeb: Interpolate rect()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
0c89e86ff7
LibWeb: Interpolate xywh()
function by computed value
2025-09-15 10:34:43 +01:00
Tim Ledbetter
be94c8d456
LibWeb: Interpolate inset()
function by computed value
2025-09-15 10:34:43 +01:00
Sam Atkins
5904694844
LibWeb/CSS: Implement CSSImageValue and reify images as it
...
This is specced to be opaque, so there's not much to it.
2025-09-15 08:47:10 +01:00
Callum Law
50239b58aa
LibWeb: Reset border-image
to initial value when using border
...
Also includes associated handling for serialization of the `border`
shorthand.
2025-09-15 08:42:22 +01:00
Callum Law
588c611e7e
LibWeb: Use correct initial value for border-image
...
Omitting the `/`s meant that `1` and `0` were parsed as part of
border-slice instead of their intended values.
No functional changes but this will be relied on in a later commit.
2025-09-15 08:42:22 +01:00
MFMF-EGY
fff09ed330
LibWeb: Handle interpolation of BorderRadius style value type
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
2025-09-14 16:49:20 +01:00
Marcos Del Sol Vives
40792aa85d
LibWeb/CSS: Fix compilation with CSS_TRANSITIONS_DEBUG
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (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
A new parameter was added to Web::CSS::StyleValue::to_string() in
PR #2820 but this debug message was never updated. If
CSS_TRANSITIONS_DEBUG was enabled, compilation would fail.
2025-09-13 23:33:57 +02:00
Tim Ledbetter
19577b966e
LibWeb: Implement interpolation of border-image-slice
style values
2025-09-13 12:05:19 +02:00
Callum Law
a805635e40
LibWeb: Compute dimension percentage mix as percentage where applicable
...
When we have a `calc` which is a mix of a dimension and a percentage, we
should use the percentage alone for the computed value if the dimension
component is 0 e.g. `calc(50% + 0px)` should use `50%` as it's computed
value.
2025-09-12 15:04:30 +01:00
Nico Weber
9272df7a86
Everywhere: Fix a few unreachable-return / unreachable-break warnings
...
I was playing with clang's -Wunreachable-code-aggressive a bit.
This fixes a handful uncontroversial things it flags.
No behavior change.
2025-09-12 14:33:14 +01:00
Sam Atkins
a139ad1c44
LibWeb/CSS: Implement CSSNumericValue.to()
...
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
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
Tries to convert the CSSNumericValue to a CSSUnitValue with the given
unit.
This gets us the remaining 11 WPT subtests for this method.
2025-09-12 13:45:41 +02:00
Sam Atkins
80abffd2e8
LibWeb/CSS: Implement "Create a sum value"
2025-09-12 13:45:41 +02:00
Sam Atkins
1c952b01ac
LibWeb/CSS: Implement "Convert a CSSUnitValue"
2025-09-12 13:45:41 +02:00
Sam Atkins
5a42b7a40f
LibWeb/CSS: Implement product_of_two_unit_maps()
...
Helper function for combining two UnitMaps.
2025-09-12 13:45:41 +02:00
Sam Atkins
e6e380b109
LibWeb/CSS: Implement "create a type from a unit map"
2025-09-12 13:45:41 +02:00
Sam Atkins
09a6b179d0
LibWeb/CSS: Take FlyString in NumericType::create_from_unit()
...
We only call this with FlyStrings, so we might as well.
2025-09-12 13:45:41 +02:00
Sam Atkins
995c19da56
LibWeb/CSS: Return unit names as FlyStrings
...
From the CSS token side, we already have these in FlyString form. From
the generated code side, we can easily return FlyStrings instead of
StringViews. So, let's do that, and save some work converting back and
forth.
2025-09-12 13:45:41 +02:00
Sam Atkins
59c4076066
LibWeb/CSS: Mark CSSStyleValue classes final where possible
2025-09-12 13:45:41 +02:00
Aliaksandr Kalenik
db5fd614ac
LibWeb: Require layout update for less properties in getComputedStyle()
...
Some properties like `justify-items`, `grid`, or `display` do affect
layout, but their used values can be obtained without performing a
layout calculation.
This change introduces a new helper,
`property_needs_layout_for_getcomputedstyle()`, specifically for use by
`CSSStyleProperties::property()`. It returns true only for properties
such as `width`, `height`, `margin`, `padding`, `top`, and `left`, where
an up-to-date layout is required to return the correct used value.
2025-09-12 11:06:16 +02:00
Callum Law
815e77c04d
LibWeb: Respect text-underline-offset
when rendering underlines
2025-09-12 07:07:15 +01:00
Callum Law
858450922b
LibWeb: Parse and compute text-underline-offset
property
2025-09-12 07:07:15 +01:00
Sam Atkins
524a161a51
LibWeb: Take AbstractElement in start_a_transition()
2025-09-11 18:45:35 +02:00
Sam Atkins
e6bb0ab000
LibWeb/CSS: Take AbstractElement in compute_transitioned_properties()
2025-09-11 18:45:35 +02:00
Sam Atkins
77f1057992
LibWeb/CSS: Take AbstractElement in cascade_custom_properties()
2025-09-11 18:45:35 +02:00
Sam Atkins
b49d00996b
LibWeb/CSS: Take AbstractElement in compute_text_align()
2025-09-11 18:45:35 +02:00
Sam Atkins
fa790e5095
LibWeb/CSS: Take AbstractElement in for_each_matching_rules()
2025-09-11 18:45:35 +02:00
Sam Atkins
cdc4f7c989
LibWeb/CSS: Take AbstractElement to compute alias mapping contexts
2025-09-11 18:45:35 +02:00
Sam Atkins
cdbaa73576
LibWeb/CSS: Take AbstractElement in box-type transformation functions
2025-09-11 18:45:35 +02:00
Sam Atkins
44e70d9087
LibWeb/CSS: Take AbstractElement in compute_cascaded_values()
2025-09-11 18:45:35 +02:00
Sam Atkins
82d194ba99
LibWeb/CSS: Take AbstractElement in start_needed_transitions()
2025-09-11 18:45:35 +02:00
Sam Atkins
acb211174d
LibWeb/CSS: Take AbstractElement in MatchingRule collection
2025-09-11 18:45:35 +02:00
Sam Atkins
50c0b4549c
LibWeb/CSS: Take AbstractElement in collect_animation_into()
2025-09-11 18:45:35 +02:00
Sam Atkins
b2ee4a9444
LibWeb/CSS: Take AbstractElement in StyleComputer::compute_properties()
...
As noted, the chunk of this method that deals with animations could do
with some helpers on AbstractElement, but I'm leaving that until it's
clearer how animations and pseudo-elements should interact.
2025-09-11 18:45:35 +02:00
Sam Atkins
0293176429
LibWeb/CSS: Take AbstractElement in StyleComputer::get_*_inherit_value()
2025-09-11 18:45:35 +02:00
Sam Atkins
64c3319147
LibWeb/CSS: Take AbstractElement in font computation methods
2025-09-11 18:45:35 +02:00
Sam Atkins
263c51f6ac
LibWeb/CSS: Take AbstractElement in compute_pe_style_if_needed()
2025-09-11 18:45:35 +02:00
Sam Atkins
cee84d22a0
LibWeb/CSS: Take AbstractElement in cascade_declarations()
2025-09-11 18:45:35 +02:00
Sam Atkins
8706a6165d
LibWeb: Take AbstractElement in compute_style_impl()
2025-09-11 18:45:35 +02:00
Sam Atkins
27aab90e66
LibWeb: Take AbstractElement in StyleComputer::compute_style()
2025-09-11 18:45:35 +02:00
Sam Atkins
1667d6d4da
LibWeb/CSS: Use AbstractElement in CSSStyleProperties::property()
...
Avoids duplicating the "get layout node" logic.
2025-09-11 18:45:35 +02:00
Sam Atkins
916e24de30
LibWeb/CSS: Take AbstractElement in resolve_unresolved_properties()
2025-09-11 18:45:35 +02:00
Sam Atkins
83aee2c7fc
LibWeb: Take AbstractElement in resolve_unresolved_style_value()
2025-09-11 18:45:35 +02:00