Andreas Kling
b30e95eb27
LibWeb: Don't allocate NamedNodeMap in Element constructor
...
Allocations should happen in the initialize() virtual, so move it there.
2022-09-06 00:27:09 +02:00
Andreas Kling
ffad902c07
LibWeb: Use cached_web_prototype() as much as possible
...
Unlike ensure_web_prototype<T>(), the cached version doesn't require the
prototype type to be fully formed, so we can use it without including
the FooPrototype.h header. It's also a bit less verbose. :^)
2022-09-06 00:27:09 +02:00
Andreas Kling
a85542958c
LibWeb: Add some missing constructors to the Window object
2022-09-06 00:27:09 +02:00
Andreas Kling
dd9cd3050b
LibWeb: Use correct Window object when dispatching Document load event
2022-09-06 00:27:09 +02:00
Andreas Kling
1029ea4b32
LibWeb: Use correct relevant settings object in Document initialization
...
The code was not in line with the spec comment right above it.
2022-09-06 00:27:09 +02:00
Andreas Kling
5724a04553
LibWeb: Make StyleSheet mark its owner node
...
The garbage collector will take care of cycles.
2022-09-06 00:27:09 +02:00
Andreas Kling
36085676d2
LibWeb: Make CSSImportList mark its document
...
We don't need to use a WeakPtr here anymore, since the garbage collector
will resolve any cycles.
2022-09-06 00:27:09 +02:00
Andreas Kling
a835f313f7
LibWeb: Make Document::is_fully_active() more robust
...
We were missing a check for null browsing context container documents.
2022-09-06 00:27:09 +02:00
Andreas Kling
4901f69345
LibWeb: Don't capture raw ptr in Document::completely_finish_loading()
...
It's not safe to capture a raw pointer in a HTML task, as the garbage
collector doesn't have visibility into the task captures.
2022-09-06 00:27:09 +02:00
Andreas Kling
233208b640
LibWeb: Make XMLSerializer GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
6b7a1d13e9
LibWeb: Make TextMetrics GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
2704bcdaaa
LibWeb: Make Path2D GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
0d2fee351a
LibWeb: Make CanvasGradient GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
369dd42d67
LibWeb: Make ImageData GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
4452b5ca09
LibWeb: Make 2D and 3D canvas rendering contexts GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
b8d485e6f0
LibWeb: Make AbortController GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
3905d54a9c
LibWeb: Make SVGLength and SVGAnimatedLength GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
16fbb91aa1
LibWeb: Make History GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
abfb73f2e7
LibWeb+LibJS: Let JS::Realm::HostDefined objects mark things during GC
...
This allows us to mark the HTML::Window from our window environment
settings object.
2022-09-06 00:27:09 +02:00
Andreas Kling
2ff7e37048
LibWeb: Make MessageChannel GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
2bba97964b
LibWeb: Make HTMLCollection and subclasses GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
4c887bf6c3
LibWeb: Remove Document::interpreter()
...
Nobody needs this anymore, so we can finally remove it. :^)
2022-09-06 00:27:09 +02:00
Andreas Kling
2d72abc3d4
LibWeb+WebContent: Store Realm instead of Interpreter in ConsoleClient
2022-09-06 00:27:09 +02:00
Andreas Kling
905eb8cb4d
LibWeb: Make MutationObserver GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
43ec0f734f
LibWeb: Make MutationRecord GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
48e0066371
LibWeb: Make NodeList GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
8f4ea4e308
LibWeb: Don't use a JS::Handle for XHR response object
2022-09-06 00:27:09 +02:00
Andreas Kling
c7ac82ec33
LibWeb: Make HTML::Timer GC-allocated
...
These are the timers used internally by setTimeout() and setInterval().
2022-09-06 00:27:09 +02:00
Andreas Kling
c569c88e63
LibWeb: Don't have Handle<Realm> in WindowEnvironmentSettingsObject
...
This was preventing window realms from ever being garbage collected.
2022-09-06 00:27:09 +02:00
Andreas Kling
5f4d4ffe39
LibWeb: Make PerformanceTiming GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
8c90e08e0b
LibWeb: Make CSS::Screen GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
d5e831988e
LibWeb: Make DOMParser GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
8341f142ea
LibWeb: Add HTML::Window::cached_web_prototype()
...
This is a simpler version of ensure_web_prototype<T>(). This new version
assumes that we already have a cached instance of the prototype.
2022-09-06 00:27:09 +02:00
Andreas Kling
6f433c8656
LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated
...
This is a monster patch that turns all EventTargets into GC-allocated
PlatformObjects. Their C++ wrapper classes are removed, and the LibJS
garbage collector is now responsible for their lifetimes.
There's a fair amount of hacks and band-aids in this patch, and we'll
have a lot of cleanup to do after this.
2022-09-06 00:27:09 +02:00
Andreas Kling
bb547ce1c4
LibWeb: Make AbstractRange and subclasses GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
7c3db526b0
LibWeb: Make DOM::Event and all its subclasses GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
a4ddb0ef87
LibWeb: Make TreeWalker GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
bd629c45b5
LibWeb: Make NodeIterator GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
8cda70c892
LibWeb: Move event listeners, handlers and callbacks to the GC heap
...
This patch moves the following things to being GC-allocated:
- Bindings::CallbackType
- HTML::EventHandler
- DOM::IDLEventListener
- DOM::DOMEventListener
- DOM::NodeFilter
Note that we only use PlatformObject for things that might be exposed
to web content. Anything that is only used internally inherits directly
from JS::Cell instead, making them a bit more lightweight.
2022-09-06 00:27:09 +02:00
Andreas Kling
967a3e5a45
LibWeb: Make DOMImplementation GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
cfdb8f2a8e
LibWeb: Make MediaList GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
0176d42f49
LibWeb: Make DOMTokenList GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
a56b3f9862
LibWeb: Make NamedNodeMap GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
ae11d70b0c
LibWeb: Make DOMStringMap GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
72bacba97b
LibWeb: Make CSSStyleDeclaration GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
12042f0757
LibWeb: Make CSSRule and all its subclasses GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
5d6cb9cbdb
LibWeb: Make CSSRuleList GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
5366924f11
LibWeb: Make StyleSheetList GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
5d60212076
LibWeb: Make StyleSheet and CSSStyleSheet GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
0fe923e355
LibWeb: Add an "internal" JS realm & window object
...
These will be used to host JS objects that don't belong in one of the
web-facing global objects.
2022-09-06 00:27:09 +02:00