Andreas Kling
df7e64d103
LibWeb: Handle multiple class names in getElementsByClassName()
...
The input string is actually a space-separated list of class names,
not a single class name.
2022-09-17 18:53:26 +02:00
Andreas Kling
9e274d9501
LibWeb: Make Document.createElement() lowercase HTML local names
...
Bring createElement() a little bit closer to spec-compliance.
2022-09-17 18:53:26 +02:00
Andreas Kling
d9c64ee876
LibWeb: Hoist case sensitivity check out of loop in Element::has_class()
2022-09-15 16:16:56 +02:00
Luke Wilde
6a4934a030
LibWeb: Implement document.domain getter
...
The document.domain setter is currently stubbed as that is a doozy to
implement, given how much restrictions there are in place to try and
prevent use of it and potential multi-process implications.
This was the only thing preventing us from being able to start
displaying ads delivered via Google Syndication.
2022-09-15 09:46:04 +02:00
Andreas Kling
df49a6ae9b
LibWeb: Schedule a layout update in Document::invalidate_layout()
...
Otherwise, nothing will repaint until someone else decides to trigger
an update.
2022-09-14 21:23:39 +02:00
Andreas Kling
4b9c5635b3
LibWeb: Make :link selector behave according to spec
...
It should match any `a` or `area` element that has an `href` attribute,
not any element *inside* an enclosing linked element.
2022-09-14 14:43:17 +02:00
Hendiadyoin1
34439a04e8
LibWeb: Add a visit_edges for DOM/Event
2022-09-13 20:55:21 +02:00
Hendiadyoin1
5bd34f115e
LibWeb: Add some missing includes
2022-09-13 20:55:21 +02:00
Luke Wilde
875ca2fb68
LibWeb: Set prototype for both TextDecoder and AbortSignal
...
These were forgotten to be set during the GC heap conversion.
2022-09-09 20:47:43 +02:00
Andreas Kling
b7d8fbbd70
LibWeb: Update layout in Element.client{Left,Top}
...
We have to flush any pending layout changes before getting metrics.
2022-09-09 15:20:10 +02:00
Andreas Kling
67b3af8025
LibWeb: Avoid layout in Element.client{Width,Height} if possible
...
When querying the HTML element (in strict mode) or the BODY element
(in quirks mode), we return the viewport dimensions.
Layout doesn't change the size of the viewport, so we can actually
reorder the steps here and avoid performing layout in some cases.
This removes a bunch of synchronous layouts on pages with reCAPTCHA.
2022-09-09 15:20:10 +02:00
Andreas Kling
524ec95bcd
LibWeb: Keep CSS sheets sorted in document tree order
...
This ensures that style is applied consistently, even if the document
has external CSS resources that don't always arrive in the same order.
2022-09-09 15:20:10 +02:00
Andreas Kling
9567e211e7
LibWeb+WebContent: Add abstraction layer for event loop and timers
...
Instead of using Core::EventLoop and Core::Timer directly, LibWeb now
goes through a Web::Platform abstraction layer instead.
This will allow us to plug in Qt's event loop (and QTimer) over in
Ladybird, to avoid having to deal with multiple event loops.
2022-09-07 20:30:31 +02:00
Andreas Kling
4c665c3749
LibWeb: Remove some unnecessary use of the internal realm in EventTarget
...
Now that EventTarget is GC-allocated, it can find the GC heap by just
calling heap() on itself, no need to get this via the internal realm.
2022-09-06 01:07:59 +02:00
Andreas Kling
8f110e0fb1
LibWeb: Remove the NoInstanceWrapper extended IDL attribute
...
No interfaces require wrappers anymore, so we can just make this the
default mode.
2022-09-06 00:27:09 +02:00
Andreas Kling
9176a0de99
LibWeb: Stop using Bindings::wrap() in a bunch of places
...
wrap() is now basically a no-op so we should stop using it everywhere
and eventually remove it. This patch removes uses of wrap() in
non-generated code.
2022-09-06 00:27:09 +02:00
Andreas Kling
45425de849
LibWeb: Use the WRAPPER_HACK() macro instead of hand-coding wrap()
...
This macro will soon go away, but let's start by replacing all the
hand-coded versions of wrap() with this macro that expands to the same
exact thing.
2022-09-06 00:27:09 +02:00
Andreas Kling
3768743a0a
LibWeb: Remove now-unused Bindings::Wrappable class
2022-09-06 00:27:09 +02:00
Andreas Kling
497ead37bc
LibWeb: Make DOMException GC-allocated
2022-09-06 00:27:09 +02:00
Andreas Kling
57db2529cf
LibWeb: Make DOMRect, DOMRectReadOnly and DOMRectList GC-allocated
2022-09-06 00:27:09 +02:00
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
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
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
b8d485e6f0
LibWeb: Make AbortController 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
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
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
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
72bacba97b
LibWeb: Make CSSStyleDeclaration 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
Linus Groh
61bd9fef7d
LibJS+LibWeb: Remove last uses of GlobalObject::associated_realm()
2022-08-27 11:29:10 +01:00
MacDue
8d2c2f7c52
LibWeb: Determine the origin when navigating across documents
2022-08-26 00:21:10 +02:00
martinfalisse
e4c5799026
LibWeb: Add GridFormattingContext
2022-08-25 13:47:48 +02:00