Commit Graph

17 Commits

Author SHA1 Message Date
Shannon Booth
0b839a9e2d Tests/LibWeb: Sync WPT test for WASM global attribute setter
The regression in 932a204 turned out to be the specified
behaviour changed as part of: whatwg/webidl#1498

And WPT has now been updated accordingly.
2026-02-13 12:12:23 +01:00
Shannon Booth
932a20423f LibWeb/Bindings: Treat missing attribute setter argument as undefined
Fold attribute setter handling into the shared [Replaceable] and
[PutForwards] paths, aligning the implementation more closely with the
WebIDL specification.

This change unfortunately introduces a regression in a WebAssembly
JS API test that expects attribute setters to throw when invoked
with no arguments (rather than treating the missing argument as
undefined). The exact specification text that mandates this
behavior for the WASM API is unclear to me.

The new behaviour seems like it would be more compatible in the
general case by not throwing an exception for all of the other
cases, so this commit accepts this as a regression until the
reasoning for needing to throw can be determined.
2026-02-06 19:23:30 +01:00
CountBleck
dc10cc08f6 LibWeb: Implement HostGrowSharedArrayBuffer for shared Wasm memories
We once again ignore any mention of atomic operations on
[[ArrayBufferByteLengthData]]. This commit also fixes a couple bugs
where we forget to set Data Blocks as Shared.
2026-01-04 07:47:55 +01:00
me-it-is
62fe795c9b LibWeb: Throw range error when initial is greater than maximum
When constructing WebAssembly.Memory if initial is greater than maximum
a range error will be thrown.

Fixes "Initial value exceeds maximum" in
https://wpt.fyi/results/wasm/jsapi/memory/constructor.any.worker.html?product=ladybird
2025-09-10 05:23:07 +02:00
CountBleck
7575beafcb LibWeb: Import tests for resizable/growable ArrayBuffer Wasm memories
We pass to-fixed-length-buffer.any.html and to-resizable-buffer.any.html
but not to-resizable-buffer-shared.any.html, because LibJS doesn't have
growable SharedArrayBuffers implemented...
2025-08-23 08:26:23 +02:00
CountBleck
a2dc6c4bbb LibJS: Keep the lengths of ArrayBuffers with unowned ByteBuffers fixed
The relevant type of ArrayBuffer DataBlock is now a struct containing
both a ByteBuffer* and a size_t size, and not just a ByteBuffer*, with
the size being that of the ByteBuffer. This type of DataBlock is only
used for WebAssembly.Memory (see commit 4fd43a8f96), meaning this
change won't affect any other code. This change is required to pass one
WPT subtest in wasm/jsapi/memory/grow.any.html, since old fixed-length
SharedArrayBuffers after a WebAssembly.Memory growth should keep their
length, while the new buffer after the growth will have the updated
length.
2025-08-23 08:26:23 +02:00
Jelle Raaijmakers
acc7c2f7f3 LibWeb: Do not use namespace in interface names
Gives us 20 additional WPT subtest passes in `wasm/jsapi`.
2025-07-25 16:50:45 +02:00
Timothy Flynn
27d139e817 LibWeb: Define Wasm native errors correctly
1. Fix typos in some macro invocations of these error types. We now use
   a single xmacro to instantiate error definitions to prevent such
   errors in the future.

2. Use the "WebAssembly." prefix as needed.

3. Allocate the error constructors and prototypes with `realm.create`
   rather than `heap.allocate`. The latter does not invoke `initialize`
   methods. This exposed the next issue:

4. Use the correct intrinsic prototype in the error constructor. We were
   using the base native error prototype. We unfortunately cannot invoke
   OrdinaryCreateFromConstructor from LibJS directly with the correct
   prototype, so an implementation was added here.

5. Use intrinsic accessors to create the constructors. I don't think
   this one was actually a fix, but it makes the setup look more like
   other built-ins.
2025-07-19 16:48:01 -04:00
Timothy Flynn
6b3f796e5b LibWeb: Propagate errors from module instantiation 2025-07-19 16:48:01 -04:00
Timothy Flynn
a458a7d35b LibWeb: Do not coerce object IDL types to JS objects
We should bail with a TypeError if the provided value is not a JS object
already.
2025-07-19 16:48:01 -04:00
Timothy Flynn
7b14da14d8 Tests/LibWeb: Import tests for incorrect Wasm instantiations 2025-07-19 16:48:01 -04:00
Tim Ledbetter
cd0cadc5e1 LibWasm: Use correct null check when getting iterator method 2025-07-13 11:28:19 +02:00
Tim Ledbetter
dede92aa78 Tests: Update WPT testharness.js to the most recent version
This ensures that our test output looks the same as that shown in the
WPT runner.
2025-06-21 14:58:02 +02:00
Ali Mohammad Pur
1bcbd008d6 Tests/LibWeb: Rebaseline some no-longer-failing wasm tests 2025-05-08 03:35:11 -06:00
Andrew Kaster
86c756a589 LibWeb: Import WebAssembly jsapi cross-realm torture tests from WPT
The failures here are due to us not actually implementing the
error types yet.
2025-04-23 14:09:09 +02:00
Andrew Kaster
b11bdd4022 LibWeb: Import WPT tests for WebAssembly.Global
There's one failing due to the constructor object not having the name
"Global" vs "WebAssembly.Global". This also doesn't include the
tentative test for the type property.
2024-12-24 15:20:28 +01:00
Konstantin Konstantin
b03138cbff LibWeb: Support creation of shared memory in WebAssembly API
Add support for shared memory creation in WebAssembly memory API.
This API is needed for WPT tests that use shared array buffers.

Import related WPT tests.
2024-12-08 22:10:45 +01:00