Sam Atkins
91e8a19391
LibWeb: Always set [[ErrorToRethrow]] for import validation errors
...
Corresponds to f6fb04a11f
2025-07-08 17:08:39 +01:00
Sam Atkins
da8a29376f
LibWeb: Use ThrowCompletion AO to create throw completions
...
Corresponds to 4989b3457f
2025-07-08 17:08:39 +01:00
Shannon Booth
00002c6443
LibWeb/HTML: Unregister ESO during finalize phase
...
It is generally safer for GC cells to do cleanup work during the
finalize phase.
2025-06-18 13:08:30 +02:00
Shannon Booth
e0d7278820
LibURL+LibWeb: Make URL::Origin default constructor private
...
Instead, porting over all users to use the newly created
Origin::create_opaque factory function. This also requires porting
over some users of Origin to avoid default construction.
2025-06-17 20:54:03 +02:00
Shannon Booth
1a34485460
LibWeb/HTML: Serialize time origin in environments
...
Which is caught from changing across to this form of initializing
the object.
2025-06-17 20:54:03 +02:00
Shannon Booth
bc4317be20
LibWeb/HTML: Handle failure determining mime type fetching module script
...
CI / Lagom (arm64, Sanitizer_CI, false, macOS, macos-15, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, Linux, blacksmith-16vcpu-ubuntu-2404, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, Linux, blacksmith-16vcpu-ubuntu-2404, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macOS, macOS-arm64, macos-15) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, Linux, Linux-x86_64, blacksmith-8vcpu-ubuntu-2404) (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
Fixes crash in WPT test:
https://wpt.live/html/semantics/scripting-1/the-script-element/css-module/content-type-checking.html
2025-05-31 09:15:52 -04:00
Shannon Booth
937994cfaa
LibWeb: Make Environment's top level origin nullable
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, 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
This matches the definition in the spec, and is also a step towards
removing the default constructor of URL::Origin.
2025-05-27 14:48:43 +12:00
Shannon Booth
8ccb89877a
LibWeb/HTML: Return an opaque origin for data URLs for Workers
2025-05-24 09:51:44 -04:00
Andrew Kaster
4af0daf3eb
LibWeb: Check actual WorkerGlobalScope subclass to set top level origin
...
Checking against DedicatedWorkerHost was probably a typo.
2025-05-18 17:50:05 -06:00
Timothy Flynn
7280ed6312
Meta: Enforce newlines around namespaces
...
This has come up several times during code review, so let's just enforce
it using a new clang-format 20 option.
2025-05-14 02:01:59 -06:00
Shannon Booth
8a3c66d8a6
LibWeb: Make a bunch of CSP classes not realm associated
...
These are not associated with a javascript realm, so to avoid
confusion about which realm these need to be created in, make
all of these objects a GC::Cell, and deal with the fallout.
2025-04-28 12:41:28 +02:00
Shannon Booth
041ff0c7ff
LibWeb/HTML: Hook up a WorkerAgent for web workers
2025-04-25 14:07:51 +02:00
Shannon Booth
5290ebfe19
LibJS: Switch Agent [[CanBlock]] slot to a enum member
...
It turns out it was a mistake to make this a virtual since
ServiceWorkerAgents are effectively the exact same as
DedicatedWorkerAgents and SharedWorkerAgents just with [[CanBlock]]
set to false.
2025-04-25 14:07:51 +02:00
Shannon Booth
084cceab5c
LibWeb: Split out SimilarOriginWindowAgent from HTML::Agent
...
To allow for adding the concept of a WorkerAgent to be reused
between shared and dedicated workers. An event loop is the
commonality between the different agent types, though, there
are some differences between those event loops which we customize
on the construction of the HTML::EventLoop.
2025-04-25 14:07:51 +02:00
Aliaksandr Kalenik
a329868c1b
LibJS: Allocate ExecutionContext memory using alloca() when possible
...
This should be faster than heap allocation. However, heap allocation is
still necessary in some cases, such as with generators and async
functions.
2025-04-24 10:30:52 +02:00
Aliaksandr Kalenik
c6cd03d7ca
LibJS+LibWeb: Join arguments into vector of registers+constants+locals
...
This is better because:
- Better data locality
- Allocate vector for registers+constants+locals+arguments in one go
instead of allocating two vectors separately
2025-04-24 10:30:52 +02:00
Aliaksandr Kalenik
80a8040794
LibJS+LibWeb: Calculate count of regs+consts+locals before EC allocation
...
This is a preparation step before joining arguments vector into vector
of registers+constants+locals.
2025-04-24 10:30:52 +02:00
Shannon Booth
e124ef52ee
LibJS+LibWeb: Set [[CanBlock]] false to Agent for window agent
...
similar-origin window agents have the [[CanBlock]] flag set to false.
Achieve this by hooking up JS's concept with an agent to HTML::Agent.
For now, this is only hooked up to the similar-origin window agent
case but should be extended to the other agent types in the future.
2025-04-22 11:50:35 -04:00
Shannon Booth
96f38dc180
LibWeb/HTML: Make environments top level creation URL nullable
...
This is explicitly set to null for Workers.
2025-04-22 08:44:50 -06:00
Andreas Kling
ce263eaf78
LibWeb: Avoid dynamic_cast in relevant_agent()
...
There's only ever one kind of JS::VM::CustomData in play anyway.
2025-04-18 14:45:56 +02:00
Andreas Kling
a9e415b3c4
LibJS+LibWeb: Add fast_is<T> helpers for HTML::Script class family
2025-04-18 14:45:56 +02: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
Sam Atkins
9dbeecb73d
LibWeb: Correct some spec typos
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, 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
Corresponds to 285a58bf30
2025-04-10 04:01:37 +02:00
Andreas Kling
3cf50539ec
LibJS: Make Value() default-construct the undefined value
...
The special empty value (that we use for array holes, Optional<Value>
when empty and a few other other placeholder/sentinel tasks) still
exists, but you now create one via JS::js_special_empty_value() and
check for it with Value::is_special_empty_value().
The main idea here is to make it very unlikely to accidentally create an
unexpected special empty value.
2025-04-05 11:20:26 +02:00
Andreas Kling
de424d6879
LibJS: Make Completion.[[Value]] non-optional
...
Instead, just use js_undefined() whenever the [[Value]] field is unused.
This avoids a whole bunch of presence checks.
2025-04-05 11:20:26 +02:00
Andreas Kling
c71772126f
LibJS: Remove ByteString internals from PrimitiveString
...
PrimitiveString is now internally either UTF-8, UTF-16, or both.
We no longer convert them to/from ByteString anywhere, nor does VM have
a ByteString cache.
2025-03-28 12:31:40 -04:00
Timothy Flynn
f05b0bfd5f
LibWeb+LibWebView+WebContent: Convert about:settings to a WebUI
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, 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-03-28 07:31:10 -04:00
Andreas Kling
46a5710238
LibJS: Use FlyString in PropertyKey instead of DeprecatedFlyString
...
This required dealing with *substantial* fallout.
2025-03-24 22:27:17 +00:00
Andreas Kling
53da8893ac
LibJS: Replace PropertyKey(char[]) with PropertyKey(FlyString)
...
...and deal with the fallout.
2025-03-24 22:27:17 +00:00
Timothy Flynn
843209c6a9
LibWeb+LibWebView+WebContent: Add an about:processes page
...
The intent is that this will replace the separate Task Manager window.
This will allow us to more easily add features such as actual process
management, better rendering of the process table, etc. Included in this
page is the ability to sort table rows.
This also lays the ground work for more internal `about` pages, such as
about:config.
2025-03-19 10:03:17 -04:00
Sam Atkins
0efd1729af
LibWeb/HTML: Update navigation request's reserved client
...
Fill in a couple of FIXMEs to discard an old reserved client, and/or
create a new one, in `create_navigation_params_by_fetching()`.
2025-03-14 18:05:42 +01:00
Sam Atkins
5a4f15d8f5
LibWeb/HTML: Add environment discarding steps
...
Exactly one place seems to define these at the moment: service worker
clients. Since we don't have a type for these and just use
EnvironmentSettingsObject, I've put it there.
2025-03-14 18:05:42 +01:00
Shannon Booth
b543523717
LibWeb: Fire slotchange events when a slot is changed
2025-03-10 14:37:26 -04:00
Feng Yu
ad9f70dff9
LibWeb: Clean up unused module script fetching algorithms
...
This patch removes those unused 2 algorithms:
1. `fetch_internal_module_script_graph`
2. `fetch_descendants_of_a_module_script`
Those 2 algorithms were removed in spec and are not used in our
codebase.
2025-03-07 02:25:31 +01:00
Gingeh
93e2babc64
LibWeb: Prevent crash when loading module in worker
...
The import map is defined for all global objects, not just the window.
2025-02-28 14:51:20 +01:00
Luke Wilde
cae0ab2139
LibWeb: Make PolicyContainer GC allocated
...
This is required to store Content Security Policies, as their
Directives are implemented as subclasses with overridden virtual
functions. Thus, they cannot be stored as generic Directive classes, as
it'll lose the ability to call overridden functions when they are
copied.
2025-02-21 12:43:48 +00:00
Shannon Booth
705001483a
LibWeb: Make base URL of HTML::Script Optional
...
This is a null or a URL in the spec, which we were previously
representing through the invalid state of URL.
2025-02-19 08:01:35 -05:00
Shannon Booth
d62cf0a807
Everywhere: Remove some use of the URL constructors
...
These make it too easy to construct an invalid URL, which makes it
difficult to remove the valid state of URL - which this API relies
on.
2025-02-19 08:01:35 -05:00
Shannon Booth
0b8bcdcbd3
LibWeb: Remove some useless URL validity checks
...
It is not possible for a URL here to have a value and be invalid.
2025-02-19 08:01:35 -05:00
Shannon Booth
2c8dab36f3
LibWeb: Port EnvironmentSettings URL Parsing to return Optional<URL>
2025-02-19 08:01:35 -05:00
Shannon Booth
9072a7caef
Everywhere: Use URL::about_XXX factory functions
2025-02-15 17:05:55 +00:00
Andreas Kling
53c9c6f3ee
LibWeb: Make Agent's MutationObserver list weak
...
Before this change, Agent held on to all of the live MutationObserver
objects via GC::Root. This prevented them from ever getting
garbage-collected.
Instead of roots, we now use a simple IntrusiveList and remove them
from it in the finalizer for MutationObserver.
This fixes a massive GC leak on Speedometer.
2025-02-07 16:53:11 +01:00
Psychpsyo
9b8120d8e8
Meta: Disallow links to single-page HTML spec
2025-02-05 16:04:50 -07:00
Tim Ledbetter
6d7b7e7822
LibWeb: Use as
to cast global object to WindowOrWorkerGlobalScopeMixin
...
No functional changes.
2025-02-02 17:18:56 +01:00
Feng Yu
37e1d6ece1
LibWeb: Implement nagivator.serviceWorker.getRegistration()
2025-01-30 15:18:43 -07:00
Tim Ledbetter
11acd54463
LibWeb: Change default window ESO crossOriginIsolated value to false
...
This is a safer default value for this property since we don't
currently implement the mechanisms required for this value to be true.
2025-01-30 18:37:53 +01:00
Tim Ledbetter
8963e62a5e
LibWeb: Add a time origin property for all ESOs
...
This acts as a baseline for performance related timestamps.
2025-01-27 14:53:33 +01:00
Shannon Booth
fd27eef0d1
LibWeb: Return OptionalNone from DOMURL::parse on failure
...
This ports one more function away from needing to use the awkward
valid state of the URL class.
2025-01-22 12:33:55 +00:00
Timothy Flynn
85b424464a
AK+Everywhere: Rename verify_cast
to as
...
Follow-up to fc20e61e72
.
2025-01-21 11:34:06 -05:00
Shannon Booth
64eeda6450
LibWeb: Return a representation of an 'Agent' in 'relevant agent'
...
This makes it more convenient to use the 'relvant agent' concept,
instead of the awkward dynamic casts we needed to do for every call
site.
mutation_observers is also changed to hold a GC::Root instead of raw
GC::Ptr. Somehow this was not causing problems before, but trips up CI
after these changes.
2025-01-11 10:39:48 -05:00