1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:57:44 +00:00
Commit graph

22213 commits

Author SHA1 Message Date
Sam Atkins
513dee04d4 LibWeb: Parse place-self property using TokenStream 2023-12-26 15:32:32 +00:00
Sam Atkins
5a8f57f7b3 LibWeb: Parse place-items property using TokenStream 2023-12-26 15:32:32 +00:00
Sam Atkins
61d6f611cb LibWeb: Parse place-content property using TokenStream 2023-12-26 15:32:32 +00:00
Sam Atkins
4f773a7dae LibWeb: Parse overflow property using TokenStream
Also simplify it a bit. We don't need to handle 1 / 2 values separately,
but past Sam didn't realise that.
2023-12-26 15:32:32 +00:00
Sam Atkins
0578bec655 LibWeb: Parse math-depth property using TokenStream
We don't need to skip whitespace at the top level because that's already
done before we're called. But we do still have to skip it inside the
`add()` function
2023-12-26 15:32:32 +00:00
Sam Atkins
6e0a550a03 LibWeb: Parse list-style property using TokenStream 2023-12-26 15:32:32 +00:00
Sam Atkins
14e2e2bac4 LibWeb: Parse grid track placements using TokenStream
I'm not entirely happy with this, but I barely understand grid, and this
does still work.
2023-12-26 15:32:32 +00:00
Aliaksandr Kalenik
b172c29d9a LibWeb: Apply min/max-widths to block container during intrinsic layout
Fixes https://github.com/SerenityOS/serenity/issues/22430
2023-12-26 16:24:51 +01:00
Timothy Flynn
9258d7b98a LibJS+LibWeb: Implement resizable ArrayBuffer support for TypedArray
This is (part of) a normative change in the ECMA-262 spec. See:
a9ae96e
2023-12-26 11:16:10 +01:00
Timothy Flynn
c7fec9424c LibJS+LibWeb: Implement resizable ArrayBuffer support for DataView
This is (part of) a normative change in the ECMA-262 spec. See:
a9ae96e
2023-12-26 11:16:10 +01:00
Timothy Flynn
29ac6e3689 LibJS: Partially implement resizable ArrayBuffer objects
This is (part of) a normative change in the ECMA-262 spec. See:
a9ae96e

This implements just support for resizing ArrayBuffer objects. This does
not implement the SharedArrayBuffer changes, as we do not have enough
support to do so.
2023-12-26 11:16:10 +01:00
Timothy Flynn
a1e2f131c4 LibJS: Use existing AOs to validate bytecode/JIT TypedArray indices
The IsValidIntegerIndex AO performs the checks we are interested in. The
manual implementation we currently have will no longer compile once the
resizable ArrayBuffer spec is implemented. The AO will be updated with
the spec implementation, so let's use it now to avoid breakage.
2023-12-26 11:16:10 +01:00
Timothy Flynn
98cdf36fb0 LibJS: Rename TypedArray element get and set methods
This renames IntegerIndexedElementGet to TypedArrayGetElement, and
IntegerIndexedElementSet to TypedArraySetElement.

This also renames the indexedPosition variable inside these method
definitions to byteIndexInBuffer.

These are part of a couple editorial changes in the ECMA-262 spec. See:
03e4410
a1a4d48

The remainder of the changes in those commits apply to the resizable
ArrayBuffer spec, which is not implemented in LibJS as of this commit.
2023-12-26 11:16:10 +01:00
Timothy Flynn
4f32392426 LibJS: Update spec headers of ArrayBuffer, TypedArray, DataView, Atomics
After the resizable ArrayBuffer proposal was merged, a bunch of methods
had their spec numbers/headers changed. This patch just updates existing
methods to make future patches easier to grok.
2023-12-26 11:16:10 +01:00
Aliaksandr Kalenik
ed42b12123 LibWeb: Respect box-sizing in min-height calculation of grid container 2023-12-26 11:13:38 +01:00
Aliaksandr Kalenik
8a4416837a LibWebView: Request repaint after replacing backing stores
Fixes a bug when the Qt client does not repaint after resizing
when the following sequence of IPC calls happens:

1. In the resize handler, the client sends set_viewport_rect to
   WebContent.
2. WebContent starts repainting in response to the changed viewport
   size.
3. In the resize handler, the client updates backing stores and sends
   new ids and shared bitmaps to WebContent using the add_backing_store
   call.
4. WebContent sends an acknowledgment to the client that painting
   finished using the old id.
5. The client discards the repaint because it expects a new backing
   store id.
2023-12-25 23:54:26 +01:00
Andrew Kaster
b10fee00eb LibWeb+WebWorker: Convert Workers to use MessagePorts for postMessage
This aligns Workers and Window and MessagePorts to all use the same
mechanism for transferring serialized messages across realms.

It also allows transferring more message ports into a worker.

Re-enable the Worker-echo test, as none of the MessagePort tests have
themselves been flaky, and those are now using the same underlying
implementation.
2023-12-25 12:09:11 +01:00
Aliaksandr Kalenik
4969ad9d6b LibWeb: Limit scroll position by overflow area in Window::scroll()
This change fixes "vertical shift" in inspector.
2023-12-24 23:22:35 +01:00
Andreas Kling
de993be02f LibWeb: Return child navigable target name set with FlyString keys
Saves us some unnecessary conversion since we already have FlyStrings
in the first place.
2023-12-24 22:49:19 +01:00
Andreas Kling
ff63b2603d LibWeb: Use cached Element id attribute in HTMLCollection 2023-12-24 22:49:19 +01:00
Andreas Kling
41f56b0df9 LibWeb: Let supported_property_names() return Vector<FlyString>
Ultimately, this API should probably be replaced with something that
updates a cache on relevant DOM mutations instead of regenerating
the list of property names again and again.
2023-12-24 22:49:19 +01:00
Andreas Kling
0178929387 LibWeb: Use Element::id() in Window::supported_property_names()
We already have the `id` attribute cached on elements, so we don't
need to walk the attribute list to find it.
2023-12-24 22:49:19 +01:00
Andreas Kling
75d5429d66 LibWeb: Add fast_is<T> for form, embed, image, and object elements
These are used by Window::supported_property_names(), which can get
very hot.
2023-12-24 22:49:19 +01:00
Idan Horowitz
70779e43ed LibC: Set sin_port in network order in getaddrinfo results
This is required by POSIX, and we were already doing it for the numeric
service case, but not for the named service case.
2023-12-24 22:22:58 +01:00
Ali Mohammad Pur
8b2beb2ebe LibLine: Use the correct loop conditions for erase_character_forwards()
Prior to this commit, the loop would continue forever and try to remove
the same index every time, eventually hitting a VERIFY and crashing.
2023-12-24 16:12:27 +01:00
Timothy Flynn
947136ca8d LibWebView: Load the Inspector CSS and JS resource files with LibWeb 2023-12-24 14:09:23 +01:00
Timothy Flynn
e511a264fe LibWeb: Implement ad-hoc steps to allow LibWeb to load resource:// URLs
The resource:// scheme is used for Core::Resource files. Currently, any
users of resource:// URLs in Ladybird must manually create the Resource
and extract its data. This will allow for passing the resource:// URL
along for LibWeb to handle.
2023-12-24 14:09:23 +01:00
Shannon Booth
48f39f0555 LibWeb: Port Window from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
3a7fb6cf9e LibWeb: Port CrossOriginPropertyDescriptorMap from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
10e5458e27 LibWeb: Port HTMLFormElement from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
0b7c8e0de5 LibWeb: Port BrowsingContext from ByteString
Also removing an unused m_name member.
2023-12-24 13:26:50 +01:00
Shannon Booth
1536cd05a7 LibWeb: Port PlatformObject from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
adb327d5d3 LibWeb: Port HTMLTitleElement from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
020839ad7a LibWeb: Remove ByteString usage in NamedNodeMap
We now have a FlyString version of get_attribute_ns, so this conversion
is no longer needed any more.
2023-12-24 13:26:50 +01:00
Shannon Booth
c63d30ce67 LibWeb: Port HTML Environments from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
562e0d710c LibWeb: Port ProcessingInstruction from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
7ce3e113fa LibWeb: Port HTMLOutputElement from ByteString 2023-12-24 13:26:50 +01:00
Shannon Booth
7909475b14 LibWeb: Port SVGUseElement from ByteString 2023-12-24 13:26:50 +01:00
MacDue
64411127cb LibGfx: Clip edges above or below the visible area in the rasterizer
This avoids doing pointless plotting for scanlines that will never be
seen.

Note: This currently can only clip edges vertically. Horizontal clipping
is more tricky, since edges that are not visible can still change how
things accumulate across the scanline.

Fixes #22382

Sadly, this causes a bunch of LibWeb test churn as this change
imperceptibly changes the final rasterized output.
2023-12-24 13:25:40 +01:00
Andreas Kling
fe04d83ef5 LibWeb: Process all pending lazy loading intersection observations
This fixes an issue where images outside the viewport could prevent
loading of images inside the viewport, depending on DOM order.
2023-12-24 13:23:40 +01:00
Aliaksandr Kalenik
32a6bf908a LibWeb/CSS: Fix stack use after scope in matches_attribute()
If a short string is used for the attribute value, then the result of:
```cpp
auto const view = element.attribute(attribute_name).value_or({})
    .bytes_as_string_view().split_view(' ');
```
is an array of string views pointing into a temporarily allocated
string.

With this change we keep string on stack until the end of scope.

Page that allows to reproduce the problem.
```html
<!DOCTYPE html><style>
    div[data-info~="a"] {
        background-color: yellow;
    }
</style><div data-info="a">a</div>
```
2023-12-24 08:03:58 +00:00
Shannon Booth
95e9c89a15 LibJS: Update spec comments in Array.fromAsync
This was a normative change in the Array.fromAsync spec which we already
implemented :^). See:

https://github.com/tc39/proposal-array-from-async/commit/689d0d

I've left an existing FIXME in there for some other bug which we have
which is causing some test262 test cases to fail.
2023-12-23 20:22:42 -05:00
Andreas Kling
41941aeb10 LibWeb: Don't access SharedImageRequest::m_document in destructor
It's not safe to access m_document here since GC may have deleted it
by the time we're being deleted. Instead, move this to a finalize()
override, since those are guaranteed to be called while both objects
are still alive.
2023-12-23 23:02:10 +01:00
Andreas Kling
6c1fcc5f7e LibJS: Actually invoke the type-isolating cell allocators
Due to a `requires` mistake, we were always using the fallback
size-based cell allocators.

Also, now that we start using them, make them NeverDestroyed so
we don't try to deallocate them on program exit.
2023-12-23 23:02:10 +01:00
Andreas Kling
f953a70965 LibWeb: Make ListOfAvailableImages actually visit images during GC
Instead of making the "Entry" inner struct GC-allocated and marking
*that*, we now mark the image instead.

This fixes an issue found by ASAN on https://mozilla.com/
2023-12-23 23:02:10 +01:00
Andreas Kling
f4fa37afd2 LibJS+LibWeb: Add missing JS_DEFINE_ALLOCATOR() for a bunch of classes 2023-12-23 23:02:10 +01:00
Andreas Kling
11c968fa1f LibJS: Make Heap aware of all CellAllocators
Also add a link from HeapBlock to their owning CellAllocator.
This fixes an issue where the Heap would skip over non-size-based
cell allocators.
2023-12-23 23:02:10 +01:00
Lucas CHOLLET
a31b988473 LibGfx/TIFF: Ensure baseline tags presence before decoding
This allows us to reject invalid images before trying to decode them.
The spec requires more tag to be present[1] but as we don't use them for
decoding I don't see the point.

[1] - XResolution, YResolution and ResolutionUnit
2023-12-23 20:54:07 +01:00
Shannon Booth
ec2b4c271f LibWeb: Support RadioNodeList named items in HTMLFormControlsCollection
We would previously not return a RadioNodeList in the curious case where
a named item resolves to two different elements within the form.

This was not a problem when calling namedItem directly in the IDL as
named_item_or_radio_node_list shadows named_item but is exposed when
calling the property through array bracket notation (as an example).

Fix this, and add a bunch more tests to cover
HTMLFormControlsCollection.
2023-12-23 20:53:11 +01:00
Shannon Booth
1defc4595b LibWeb: Make LiveNodeList store a NonnullGCPtr<Node const> root
This allows us to improve the const-correctness in RadioNodeList, which
has been made possible as of: 5f0ccfb499 now that a GC-visit accepts a
const GC pointer.
2023-12-23 20:53:11 +01:00