Zaggy1024
861c10f37f
LibWeb: Use an IIFE to determine a VideoPaintable's representation
2025-09-16 10:26:03 +02:00
Timothy Flynn
7b3465ab55
LibWeb: Do not require multipart form data to end with CRLF
...
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
According to RFC 2046, the BNF of the form data body is:
multipart-body := [preamble CRLF]
dash-boundary transport-padding CRLF
body-part *encapsulation
close-delimiter transport-padding
[CRLF epilogue]
Where "epilogue" is any text that "may be ignored or discarded". So we
should stop parsing the body once we encounter the terminating delimiter
("--").
Note that our parsing function is from an attempt to standardize the
grammar in the spec: https://andreubotella.github.io/multipart-form-data
This proposal hasn't been updated in ~4 years, and the fetch spec still
does not have a formal definition of the body string.
2025-09-15 18:28:48 +02:00
Callum Law
34b8947ca0
LibWeb: Support text-underline-position: under
2025-09-15 15:24:20 +01:00
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
Sam Atkins
d127eb5117
LibWeb/Geometry: Correct typos in DOMMatrix "not 0 or -0" checks
...
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
Assuming 0 and -0 are distinct values, `a != 0 || a != -0` is always
true.
2025-09-15 13:34:24 +02:00
Aliaksandr Kalenik
85e029b2e7
LibJS+LibWeb: Inline fast path for Value::to_object()
...
Adds inline implementation for the most common case when `Value` is
already an object.
1.47x improvement on the following benchmark:
```js
const o = {};
for (let i = 0; i < 10_000_000; i++) {
o.a = 1;
o.b = 2;
o.c = 3;
}
```
2025-09-15 12:16:58 +02: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
Lorenz A
47796e7967
LibWeb: Serialize HTML attribute names as per spec
2025-09-15 10:08:12 +02:00
Luke Wilde
4772e1b0c9
LibWeb/Fetch: Add missing spec step for checking for tuple origin
...
Fixes https://github.com/LadybirdBrowser/ladybird/issues/6188
2025-09-15 09:58:33 +02: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
Sam Atkins
eb39c0162c
Tests: Import a selection of CSS Typed-OM property tests
...
This is an arbitrary set of tests intended to cover the different
CSSStyleValue types without too much overlap.
Right now they all fail, because testsuite.js attempts to create one of
every type of CSSStyleValue on load, and we don't have most of them.
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
ayeteadoe
9f23b0a069
Services/WebDriver: Enable on Windows
2025-09-15 09:19:52 +02:00
ayeteadoe
69e92f69a7
LibCore: Implement SIGTERM-based kill() on Windows
...
There is no direct Win32 API equivalent, but calling WM_CLOSE on
the top-level windows allows for a graceful shutdown where resources
are able to clean themselves up properly
2025-09-15 09:19:52 +02:00
Pavel Shliak
bbb9159883
LibWeb: Fix Request() TypeError message typo for mode='navigate'
...
The Request constructor’s mode validation threw
"Mode must not be 'navigate"
missing the closing quote. Add the trailing quote so the error reads:
"Mode must not be 'navigate'".
2025-09-15 08:19:34 +01:00
Kemal Zebari
faf3c19026
LibWeb/MimeSniff: Match spec change by using correct font essence
...
Spec change was made to fix a typo; application/font-off ->
application/font-otf
2025-09-15 07:31:02 +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
Shivendra Kumar
b3e8784f92
LibCrypto: Fix typo in comment
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 10:45:41 +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
Aliaksandr Kalenik
0076ab74b2
LibJS: Don't attempt to cast property key to number in PutByIdWithThis
...
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
Property key for this instruction cannot be a number.
2025-09-13 20:02:28 +02:00
Aliaksandr Kalenik
e81833423b
LibJS: Add PutByNumericId and change PutById to be string key only
...
Previously, PutById constructed a PropertyKey from the identifier,
which coerced numeric-like strings to numbers. This moves that decision
to bytecode generation: the bytecode generator now emits PutByNumericId
for numeric keys and PutById for string keys. This removes per-execution
parsing from the interpreter.
1.4x speedup on the following microbenchmark:
```js
const o = {};
for (let i = 0; i < 10_000_000; i++) {
o.a = 1;
o.b = 2;
o.c = 3;
}
```
2025-09-13 20:02:28 +02:00
Louis Dalibard
660bcfa2cd
LibGfx+LibWeb+UI: Add OpenHand cursor for CSS grab property
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-13 14:27:18 +02:00
Tim Ledbetter
19577b966e
LibWeb: Implement interpolation of border-image-slice
style values
2025-09-13 12:05:19 +02:00
Jelle Raaijmakers
9e9db9a9dd
LibWeb: Store correct text offsets in PaintableFragment
...
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
Previously, we were collapsing whitespace in Layout::TextNode and then
passed the resulting string for further processing through ChunkIterator
-> InlineLevelIterator -> InlineFormattingContext -> LineBuilder ->
LineBoxFragment -> PaintableFragment. Our painting tree is where we deal
with things like range offsets into the underlying text nodes, but since
we modified the original string, the offsets were wrong.
This changes the way we generate fragments:
* Layout::TextNode no longer collapses whitespace as part of its
stored "text for rendering", but moves this logic to ChunkIterator
which splits up this text into separate views whenever whitespace
needs to be collapsed.
* Layout::LineBox now only extends the last fragment if its end offset
is equal to the new fragment's start offset. Otherwise, there's a
gap caused by collapsing whitespace and we need to generate a
separate fragment for that in order to have a correct start offset.
Some tests need new baselines because of the fixed start offsets.
Fixes #566 .
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
d1076c1e6e
LibWeb: Remove text storage from TextPaintable
...
Instead of copying the layout node's text, retrieve the text from the
layout node directly.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
e6474778c6
LibWeb: Some text-related cleanup
...
No functional changes.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
7375d8c6f9
LibWeb: Simplify ASCII whitespace check in Layout::TextNode
...
No functional changes.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
26b5fa348c
LibWeb: Make Navigable::active_document() const
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
12cec1bdb3
LibWeb: Clean up Range::to_string()
...
No functional changes.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
75d41859fd
LibWeb: Remove PWL::layout_node_with_style_and_box_metrics()
...
These methods already exist in PaintableBox.
2025-09-12 15:34:09 -04: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
050d3a58cf
LibWeb/CSS: Generate canonical/compatible unit functions
...
These are used by `CSSNumericValue.to(unit)` which attempts to convert
to the provided unit.
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