Andreas Kling
2aa6d7636c
LibWeb: Invalidate sheet owners after mutating cssText of its rules
...
This fixes one source of flakiness on WPT (of many) where we wouldn't
recompute style after programmatically altering the contents of a style
sheet, but instead had to wait for something else to cause invalidation.
2025-04-12 14:15:57 +01:00
Aliaksandr Kalenik
6507d23e29
LibWeb: Save ScrollState snapshot in DisplayList to avoid race condition
...
With this change we save a copy of of scroll state at the time of
recording a display list, instead of actual ScrollState pointer that
could be modifed by the main thread while display list is beings
rasterized on the rendering thread, which leads to a frame painted with
inconsistent scroll state.
Fixes https://github.com/LadybirdBrowser/ladybird/issues/4288
2025-04-12 02:55:18 +02:00
Sam Atkins
d855adf767
LibWeb: Add slider- prefix to slider pseudo-element names
...
Corresponds to 9549bb8951
2025-04-11 21:27:47 +01:00
Sam Atkins
11b6bd8138
LibWeb/DOM: Stub out Element pointerevents methods
2025-04-11 21:27:13 +01:00
Timothy Flynn
0b23717bc9
LibWeb/WebDriver: Use WebIDL promise AOs to execute async scripts
...
This removes the use of `spin_event_loop_until` when waiting for async
script results.
2025-04-11 14:35:37 -04:00
Timothy Flynn
8b7bbc81e3
LibWeb/WebDriver: Execute script bodies in a promise-calling manner
...
This is a bit of a peculiarity with the synchronous script executor. We
must wrap the script result in a promise.
2025-04-11 14:35:37 -04:00
Timothy Flynn
7539d808cd
LibWeb/WebDriver: Add a FIXME about allowing await in script bodies
...
There will soon only be a couple of remaining script execution WPT
promise.py failures. This comment is to explain why.
2025-04-11 14:35:37 -04:00
Timothy Flynn
eb0a51faf0
LibWeb: Implement ReadableStreamPipeTo according to spec
...
Our existing implementation of stream piping was extremely ad-hoc. It
did nothing to handle closed/errored streams, and did not read from or
write to streams in a way required by the spec.
This new implementation uses a custom JS::Cell to drive the read/write
loop.
2025-04-11 12:10:46 -04:00
Timothy Flynn
4010c4643a
LibWeb: Support removing callbacks from AbortSignal
...
This will be needed by Streams. To support this, we now store callbacks
in a hash table, keyed by an ID. Callers may use that ID to remove the
callback at a later point.
2025-04-11 12:10:46 -04:00
Timothy Flynn
f268f24dd5
LibWeb: Explicitly rethrow exceptions from writable stream start
...
This is an editorial change in the Streams spec. See:
95a5adf
2025-04-11 12:10:46 -04:00
Timothy Flynn
e9a7694cdb
LibWeb: Prefer react_to_promise over upon_fulfillment + upon_rejection
...
While debugging a spec-compliant implementation of ReadableStreamPipeTo,
I spent a lot of time inspecting promise internals. This is much less
noisy if we halve the number of temporary promises.
2025-04-11 12:10:46 -04:00
Timothy Flynn
3033929bb6
LibWeb: Pass abort signal as its concrete type to ReadableStreamPipeTo
...
There's no real need to wrap it in a JS::Value just to unrwap it again.
2025-04-11 12:10:46 -04:00
Timothy Flynn
ab43c3be23
LibWeb: Store WritableStream's strategy high water mark as a double
...
It is received from user JS as a double and is only used as a double in
all subsequent calculations. This bug would cause UBSAN errors in an
upcoming imported WPT test, which passes Infinity as the HWM.
Note there is an equivalent HWM for ReadableStream, which already stores
the value as a double.
2025-04-11 12:10:46 -04:00
Timothy Flynn
1d6e1637cc
LibWeb: Implement an AO to close writable streams with error propagation
2025-04-11 12:10:46 -04:00
Timothy Flynn
f7c095a318
LibWeb: Implement an AO to get a promise to wait for promises to settle
2025-04-11 12:10:46 -04:00
Tim Ledbetter
f07a3fe6da
LibWeb: Use discrete interpolation for degenerate ratios
...
Degenerate ratios cannot be interpolated.
2025-04-11 11:38:05 +01:00
Tim Ledbetter
b3980d40f7
LibWeb: Round to the nearest integer when interpolating integer values
2025-04-11 11:31:54 +01:00
Jelle Raaijmakers
8257788a20
LibWeb: Ignore negative margins for margin box rect
...
Negative margins are processed through the `offset` in layout state, and
should not contribute to the margin box' rect's size or position.
Fixes #4249 .
2025-04-11 02:34:28 +01:00
Jelle Raaijmakers
76105d6a02
LibWeb: Use LayoutState::set_content_x/y() where possible
...
No functional changes.
2025-04-11 02:34:28 +01:00
Jelle Raaijmakers
4a6998497f
LibWeb: Don't recalculate margin box rect for preceding floats
...
We already stored that rect while building up the side data during
floating box layout. No functional changes.
2025-04-11 02:34:28 +01:00
stelar7
0a298dba27
LibWeb/IDB: Dont go back to inactive if we finished during upgrade
2025-04-10 19:12:30 -06:00
stelar7
aa4e303b9f
LibWeb/IDB: Make some debug messages more descriptive
2025-04-10 19:12:30 -06:00
stelar7
fc06d088c3
LibWeb/IDB: Implement IDBTransaction::objectStore
2025-04-10 19:12:30 -06:00
stelar7
8fcb54dada
LibWeb/IDB: Abort requests in the transactions request list
2025-04-10 19:12:30 -06:00
stelar7
a61315a68e
LibWeb/IDB: Use correct wait condition when upgrading database
2025-04-10 19:12:30 -06:00
stelar7
de640ffef4
LibWeb/IDB: Implement auto-commit for IDBTransaction
2025-04-10 19:12:30 -06:00
stelar7
da56c1b1eb
LibWeb/IDB: Implement IDBTransaction::commit
2025-04-10 19:12:30 -06:00
stelar7
b6b00acbd1
LibWeb/IDB: Implement abort and wait steps for closing a connection
2025-04-10 19:12:30 -06:00
stelar7
fc93ec135e
LibWeb/IDB: Keep track of the connection used to start a transaction
2025-04-10 19:12:30 -06:00
stelar7
d1dabb9039
LibWeb/IDB: Make close_a_database_connection take a GC::Ref
2025-04-10 19:12:30 -06:00
stelar7
7c3de67b16
LibWeb/IDB: Dont set the forced flag when aborting connection
2025-04-10 19:12:30 -06:00
stasoid
32ddeb82d6
LibURL+LibWeb: Remove leading slash when converting url to path
...
...on Windows
2025-04-10 19:04:21 -06:00
Aliaksandr Kalenik
b53694b4c0
LibIPC+LibWeb: Delete LargeMessageWrapper workaround in IPC connection
...
Bring back 2d625f5c23
2025-04-10 23:40:02 +02:00
Tim Ledbetter
1ee56d34e7
Revert "LibIPC+LibWeb: Delete LargeMessageWrapper workaround in IPC…
...
…connection"
This reverts commit 2d625f5c23 .
2025-04-10 16:24:38 +01:00
Sam Atkins
9dbeecb73d
LibWeb: Correct some spec typos
...
Corresponds to 285a58bf30
2025-04-10 04:01:37 +02:00
Andreas Kling
6bd2cf3195
LibWeb: Make Document::m_shadow_roots an IntrusiveList
...
This makes unregistering a ShadowRoot O(1) instead of O(n) and erases
a 2.2% item entirely from the Speedometer 2.1 profile.
2025-04-10 04:01:00 +02:00
Aliaksandr Kalenik
2d625f5c23
LibIPC+LibWeb: Delete LargeMessageWrapper workaround in IPC connection
...
It's no longer needed because TransportSocket is now capable of properly
sending large messages.
2025-04-10 01:30:08 +02:00
Andreas Kling
938b1e91fe
LibJS: Inline the fast path of Value::to_i32() and simplify to_u32()
...
The fast path of to_i32() can be neatly inlined everywhere, and we still
have to_i32_slow_case() for non-trivial conversions.
For to_u32(), it really can just be implemented as a static cast to i32!
2025-04-09 22:06:49 +02:00
stelar7
f1fba24538
LibWeb/IDB: Add ObjectStore to IDBDatabases store set
2025-04-09 11:48:49 -06:00
stelar7
1fc2d6f1af
LibWeb/IDB: Comment out infinite loop while waiting for next PR
...
Since the steps needed to avoid this loop is quite long,
adding this as a fixme for the future will make this PR easier to review
2025-04-09 11:48:49 -06:00
stelar7
6ec914c7f7
LibWeb/IDB: Add some debug output
2025-04-09 11:48:49 -06:00
stelar7
4084a127de
LibWeb/IDB: Change reference to a GC::Ref in abort_a_transaction
2025-04-09 11:48:49 -06:00
stelar7
5298ecfc94
LibWeb/IDB: Implement IDBTransaction attributes
...
This also uncovered a bug, where the transactions type was never set :^)
2025-04-09 11:48:49 -06:00
stelar7
718c805e95
LibWeb/IDB: Implement IDBObjectStore::deleteIndex
2025-04-09 11:48:49 -06:00
stelar7
fce936e05a
LibWeb/IDB: Implement IDBObjectStore::index
2025-04-09 11:48:49 -06:00
stelar7
fba7ad6969
LibWeb/IDB: Implement IDBObjectStore::indexNames
2025-04-09 11:48:49 -06:00
stelar7
3367352991
LibWeb/IDB: Implement IDBObjectStore::createIndex
2025-04-09 11:48:49 -06:00
stelar7
a235dd4300
LibWeb/IDB: Fillout IDBIndex attributes
2025-04-09 11:48:49 -06:00
stelar7
9321ad04c0
LibWeb/IDB: Add internal Index object
2025-04-09 11:48:49 -06:00
Sam Atkins
8beade51e0
LibWeb/CSS: Make it clear that StyleSheet::media() is never null
2025-04-09 18:45:57 +01:00