Shannon Booth
a7b8828db2
LibWeb: Port call_user_object_operation from DeprecatedString
2023-12-02 22:54:53 +01:00
Sam Atkins
4ced88b4e5
LibWeb: Make create_a_css_style_sheet() take String arguments
2023-12-01 20:48:13 +01:00
Sam Atkins
ef1e942f3e
LibWeb: Use String for getting/setting MediaQueryList media
2023-12-01 20:48:13 +01:00
Sam Atkins
2805e16c1c
LibWeb: Let NavigableContainers delay the document load event
2023-12-01 10:28:02 +01:00
Sam Atkins
6c5450f9ce
LibWeb: Report if anything is delaying load event, not the count
...
Some elements that delay the load event are more complicated than a
simple count will allow for. We'll implement those in a bit!
2023-12-01 10:28:02 +01:00
Sam Atkins
cc633123ca
LibWeb: Extract shared lazy-loading behavior into a base class
...
`<iframe>` and `<img>` tags share the same spec for several aspects of
lazy-loading: how the `loading` attribute works, the "will lazy load
element" steps, and a member for storing the lazy-load resumption
steps. So let's share the implementation by using a base class.
This mostly involves moving things around. However, we also change the
`start_intersection_observing_a_lazy_loading_element()` method to take
a LazyLoadingElement, and operate on one, instead of always casting to
HTMLImageElement.
We do unfortunately have to do some shenanigans to make the cast work,
by adding a virtual function stub in DOM::Element.
2023-12-01 10:28:02 +01:00
Timothy Flynn
3cde479416
LibWeb: Add missing visitations to DOM::Document
2023-11-30 08:49:15 +00:00
Shannon Booth
96af80acd1
LibWeb: Port Intrinsics from DeprecatedString
2023-11-28 17:15:27 -05:00
Shannon Booth
629f661e3b
LibWeb: Port supported property names from DeprecatedString to String
2023-11-28 17:15:27 -05:00
Timothy Flynn
aa4dcda5dc
LibWeb+LibWebView+Ladybird: Scale scroll-to CSS positions in PageHost
...
The `page_did_request_scroll_to` API takes a CSS position, and thus
callers should not scale to device pixels before invoking it. Instead,
align this API with (most) other PageHost APIs which scale to device
pixels before sending the corresponding IPC message.
In the AppKit chrome, convert the provided device pixel position to a
widget position.
2023-11-24 17:19:08 -05:00
Shannon Booth
decc071060
LibWeb: Return a scroll offset of 0 for colgroup elements
...
Ideally we would not create a layout node at all for these elements so
that every layout node would always have a paintable associated with it.
But for now, to fix the crash, just leave a FIXME and special case this
element.
Also leave a VERIFY to make it easier to debug this type of crash in the
future.
Fixes a crash seen on codecov.io for my 'patch' project.
2023-11-23 13:06:48 +01:00
Andreas Kling
ef809eea1e
LibWeb: Don't assume IO.unobserve() called on observed element
...
It's perfectly possible for JavaScript to call unobserve() on an element
that hasn't been observed. Let's stop asserting if that happens. :^)
Fixes #22020
2023-11-23 09:37:12 +01:00
implicitfield
ccea69ad40
LibWeb: Add special handling for text-align when applied to tables
...
This matches what other engines do, and stops table content from being
misaligned.
2023-11-21 16:54:02 +01:00
Andreas Kling
cc9de38ea4
LibWeb: Fix null pointer dereference in DOM::Node::remove()
...
Instead of blindly dereferencing m_registered_observer_list, just use
the add_registered_observer() helper.
Fixes #22005
2023-11-20 20:50:53 +01:00
Shannon Booth
c5d3ccca00
LibWeb: Port AriaData from DeprecatedString to String
2023-11-20 15:00:19 +01:00
Shannon Booth
6c42de3e8b
LibWeb: Port XMLSerializer from DeprecatedString to String
2023-11-20 15:00:19 +01:00
Andreas Kling
7ee47d81ca
LibWeb: Allocate custom element reactions queue on demand
...
This shrinks most DOM elements by 16 bytes.
2023-11-20 00:39:42 +01:00
Andreas Kling
ac8bb89f50
LibWeb: Allocate list of registered intersection observers on demand
...
This shrinks most DOM elements by 16 bytes.
2023-11-20 00:39:42 +01:00
Andreas Kling
bdac94870c
LibWeb: Convert Element "attribute change steps" from vector to virtual
...
By using a virtual function and overriding it on HTMLSlotElement, we
shrink every DOM element by 24 bytes. :^)
2023-11-20 00:39:42 +01:00
Andreas Kling
48dbec8a9e
LibWeb: Allocate storage for pseudo element layout nodes on demand
...
This saves us 64 bytes for every element that doesn't have pseudo
elements associated with it. Which is most of them. :^)
2023-11-20 00:39:42 +01:00
Andreas Kling
37505d9746
LibWeb: Allocate storage for pseudo element custom properties on demand
...
Most elements don't have pseudo elements with CSS custom properties.
By only allocating this data structure when it's used, we can shrink
most elements by 208 bytes each. :^)
2023-11-20 00:39:42 +01:00
Andreas Kling
9edfd5e360
LibWeb: Only allocate DOM::Node registered observer list on demand
...
Most DOM nodes don't have registered mutation observers, so let's put
the metadata about them behind an OwnPtr to save space in the common
case.
Saves 16 bytes per DOM node that doesn't have registered observers.
2023-11-20 00:39:42 +01:00
Andreas Kling
c1fd55ce94
LibWeb: Only allocate EventTarget listener/handler storage on demand
...
This shaves 40 bytes off of all EventTargets that don't actually get
listeners or handlers attached (which is most of them).
2023-11-20 00:39:42 +01:00
Andreas Kling
a71eaefdf6
LibWeb: Make EventTarget::activation_behavior a virtual function
...
(Instead of using an AK::Function on EventTarget). This shaves 48 bytes
off of every EventTarget instance.
2023-11-20 00:39:42 +01:00
Andreas Kling
bfd354492e
LibWeb: Put most LibWeb GC objects in type-specific heap blocks
...
With this change, we now have ~1200 CellAllocators across both LibJS and
LibWeb in a normal WebContent instance.
This gives us a minimum heap size of 4.7 MiB in the scenario where we
only have one cell allocated per type. Of course, in practice there will
be many more of each type, so the effective overhead is quite a bit
smaller than that in practice.
I left a few types unconverted to this mechanism because I got tired of
doing this. :^)
2023-11-19 22:00:48 +01:00
Matthew Olsson
979b9b942b
LibWeb: Add Document's pending animation event queue
...
This is needed for Animation's update finished state procedure
2023-11-19 18:54:37 +01:00
Shannon Booth
eca9874e56
LibWeb: Port Element::attribute_changed from DeprecatedString to String
...
Which as you would expect has a bunch of fallout, but also results in a
whole lot of awkward conversions falling away.
2023-11-19 08:16:34 +00:00
Shannon Booth
6a2a7cad61
LibWeb/LibJS: Avoid GC visit of raw pointers where possible
...
This is mostly motivated for aesthetics, but also helps avoid some null
checks when we have a NonnullGCPtr<T> or in some cases a T&.
2023-11-19 08:05:45 +00:00
Aliaksandr Kalenik
6bed27cca9
LibWeb: Use border box rect in getBoundingClientRect()
...
With this change we scroll to correct position on Acid2 :)
2023-11-17 20:46:56 +01:00
Aliaksandr Kalenik
ef71f46da6
LibWeb: Flesh out "scroll a target into view" spec implementation
...
This change fixes regressed Acid2 test and now we at least can see
the face after clicking "Take The Acid2 Test" link.
2023-11-17 20:46:56 +01:00
Idan Horowitz
9677d8eeac
LibWeb: Reject improperly encoded XML documents as not well-formed
2023-11-17 16:02:36 +01:00
Idan Horowitz
278e8afb42
LibWeb: Consider content-type charset when determining XML encoding
2023-11-17 16:02:36 +01:00
Idan Horowitz
07ea3ab306
LibWeb: Display error page when document parsing fails
2023-11-17 16:02:36 +01:00
Andrew Kaster
5586340cf3
LibWeb: Don't set EventTarget prototype on any WindowOrWorkerGlobalScope
...
The same limitations regarding construction of Window apply to all
WorkerGlobalScope classes as well.
2023-11-15 12:56:33 +01:00
Matthew Olsson
1a94241f58
IDL: Add missing #imports
2023-11-11 08:51:51 +01:00
Matthew Olsson
3ff481938e
IDL: Fix syntax errors
...
All attributes must have an "attribute" keyword, and "any?" is invalid
(as "any" includes "null" as well).
2023-11-11 08:51:51 +01:00
Matthew Olsson
26e6c47d0a
IDL: Add missing spec links
...
The only IDL interface without a spec link is Internals
2023-11-11 08:51:51 +01:00
Shannon Booth
45b63b463a
LibWeb: Add Element::for_each_attribute(Function<void(Attr const&)>)
...
This is useful when you are wanting to interate over attributes and need
more information than just the name and value.
2023-11-11 08:50:25 +01:00
Shannon Booth
a8fd4fab00
LibWeb: Port HTMLParser::serialize_html_fragment from DeprecatedString
2023-11-11 08:50:25 +01:00
iliadsh
89da731aa6
LibJS+LibWeb: Devirtualize may_interfere_with_indexed_property_access()
2023-11-10 08:22:44 +01:00
Matthew Olsson
13ae2a4dab
LibWeb: Store all timelines associated with a document on the document
...
This will be required for propagating the current animation time to all
relevant timelines, which each propagate that time to all of their
relevant animations.
2023-11-07 15:17:09 +01:00
Matthew Olsson
2fbb9649e3
LibWeb: Add a default DocumentTimeline object to DOM::Document
2023-11-07 15:17:09 +01:00
Shannon Booth
ea2b733862
LibWeb: Port custom properties to FlyString
2023-11-07 11:33:41 +01:00
Shannon Booth
346825bd78
LibWeb: Remove unused DeprecatedFlyString include from HTMLCollection
2023-11-07 11:33:41 +01:00
Shannon Booth
7e9a40dbad
LibWeb: Port attribute change steps from DeprecatedFlyString
2023-11-07 11:33:41 +01:00
Shannon Booth
b337b4370a
LibWeb: Port validate_and_extract from DeprecatedFlyString
2023-11-07 11:33:41 +01:00
Shannon Booth
2f009d983b
LibWeb: Port Element::get_attribute_value from DeprecatedFlyString
2023-11-07 11:33:41 +01:00
Shannon Booth
673e3ec57d
LibWeb: Port Element::set_attribute_value from DeprecatedString
...
Removing the DeprecatedString / DeprecatedFlyString overloads of this
function.
2023-11-06 11:37:08 +01:00
Shannon Booth
96463e947a
LibWeb: Remove some now unused deprecated functions from QualifiedName
...
And related callers in Element.
2023-11-06 11:37:08 +01:00
Shannon Booth
326b34c7c7
LibWeb: Port all callers of Element::namespace to Element::namespace_uri
...
Removing some more use of DeprecatedFlyString
2023-11-06 11:37:08 +01:00