Commit Graph

19 Commits

Author SHA1 Message Date
Shannon Booth
7f4600f0e9 LibWeb: Apply newTarget prototype in legacy factory constructors
Use WebIDL::set_prototype_from_new_target() in the handwritten Audio,
Image, and Option legacy factory constructors so subclassed
construction uses the correct prototype.

This corresponds to step 1.6 of:

https://webidl.spec.whatwg.org/#legacy-factory-functions
2026-04-05 02:09:39 +02:00
Shannon Booth
b05c56cbb6 LibWeb/Bindings: Fix LegacyUnenumerableNamedProperties enumerability
The boolean was mistakenly reversed.
2026-04-03 18:33:45 +02:00
Shannon Booth
379461e047 LibWeb: Make global prototype chains immutable
Per https://webidl.spec.whatwg.org/#interface-prototype-object any
global platform object should reject prototype changes (besides
from ShadowRealmGlobalScope), and interface prototype objects on
global prototype chains must be immutable.

We already handled parts of this on the globals themselves, but not
the full chain.

Also align some spec comments to the latest WebIDL spec.
2026-04-03 18:33:45 +02:00
Jelle Raaijmakers
ae0557a2cb Tests/LibWeb: Import WPT window named properties test
This used to crash before; let's lock this in place.
2026-03-15 09:03:20 -04:00
Shannon Booth
19af2bebc7 LibWeb/Bindings: Implement LegacyLenientThis extended attribute 2026-03-14 00:08:20 +01:00
Shannon Booth
e555edd770 LibWeb/Bindings: Implement callback interface object bindings
Generate correct bindings for callback interfaces: only create an
interface object when the interface declares constants, and set up
the prototype correctly.

This also lets us tidy up some IDL for these callback interfaces.
2026-03-11 21:16:44 +01:00
Shannon Booth
a5d8e849c0 Tests/LibWeb: Import WPT test for IDL callback interfaces 2026-03-11 21:16:44 +01:00
Simon Farre
bc17805b2b LibWeb: Implement requestFullscreen algorithm
The required functionality to exit fullscreen will be in a followup
commit.
2026-02-23 18:44:26 +00:00
Shannon Booth
39976bb4b8 LibWeb/Bindings: Use DefineDataPropertyOrThrow in Replaceable setter 2026-02-07 11:49:36 +01:00
Shannon Booth
1d3e48cce8 LibWeb/Bindings: Use JS Get for [PutForwards] attribute setter
Previously we were invoking the c++ getter, which is clearly not
correct.
2026-02-06 19:23:30 +01:00
Shannon Booth
c71d6d3b20 LibWeb/Bindings: Do not throw on [PutForwards] attribute setter 2026-02-06 19:23:30 +01:00
Shannon Booth
42c3199815 Tests/LibWeb: Import [PutForwards] WPT test 2026-02-06 19:23:30 +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
Shannon Booth
aa6b9ed318 LibWeb/Bindings: Treat no args as undefined for Replaceable/PutForwards 2026-02-06 19:23:30 +01:00
Shannon Booth
02e5e419d9 Tests/LibWeb: Import WPT test for IDL handling of attribute setters 2026-02-06 19:23:30 +01:00
Shannon Booth
a14711a9d7 LibWeb/Bindings: Use realm's globalObject as thisValue if nullish
We were missing the step to use realm's global object if thisValue
was nullish. This is very trivial to fix, as `impl_this` already
handles everything as it should, allowing us to also remove the
special casing for WindowProxy.
2025-04-22 12:17:14 +02:00
Shannon Booth
dcc7fe3663 LibWeb/Tests: Import WPT test global-object-implicit-this-value 2025-04-22 12:17:14 +02:00
Tim Ledbetter
b6ec055bf9 IDLGenerators: Set Iterator @@toStringTag with correct descriptor 2025-01-11 10:02:48 -05:00
Shannon Booth
627b7dd936 LibWeb/Bindings: Define constructor properties in the correct order 2025-01-11 01:43:31 +00:00