1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:17:35 +00:00
Commit graph

7666 commits

Author SHA1 Message Date
Timothy Flynn
301d58e2d9 LibWeb: Fire the change event synchronously when committing changes
The spec does not say to do this asynchronously on a task queue.
2023-12-04 01:33:57 +01:00
Andreas Kling
ec081a2ef5 LibWeb: Don't crash on FormData.append() with emoji in name
If you can believe it, we were once again using StringBuilder's append()
when we really wanted append_code_point().
2023-12-04 00:04:04 +01:00
Andreas Kling
0d74ced9b5 LibWeb: Don't crash on Document.createElement() with emoji in tag name
Once again, we were mistakenly using StringBuilder's append(char) when
we really wanted append_code_point(u32).
2023-12-04 00:04:04 +01:00
Andreas Kling
1b81e0081d LibWeb: Don't crash on Element.setAttribute() with emoji in name
We were mistakenly using StringBuilder's append(char) when we really
wanted append_code_point(u32).
2023-12-04 00:04:04 +01:00
Andreas Kling
dbca63a1db LibWeb: Don't get stuck in TreeWalker.nextNode() when current detached
This fixes a hang on https://reddit.com/

Spec bug: https://github.com/whatwg/dom/issues/1102
2023-12-03 23:16:26 +01:00
Aliaksandr Kalenik
f93cab7679 LibWeb/Painting: Use scaled font for selected text
Fixes regression introduced in:
681771d210
2023-12-03 23:16:17 +01:00
Timothy Flynn
b7c0815469 LibWeb: Remove DeprecatedString usage from HTMLScriptElement's text
There was some awkward timing between these APIs being added and the
methods they use being ported to String.
2023-12-03 14:48:36 -05:00
Andreas Kling
c0bacc6c4b LibWeb: Fix two bad capture-by-reference bugs caught by ASAN
In both cases, related to fetching/loading modules.
2023-12-03 20:46:55 +01:00
Andreas Kling
62361e40a1 LibWeb: Set a TemporaryExecutionContext when finishing module loads
I'm not entirely sure why this is needed, but it's the same ol'
workaround we're using in a bazillion places where we get caught trying
to do JavaScripty things without a running execution context.
2023-12-03 20:46:55 +01:00
Andreas Kling
8b7d27b349 LibJS+LibWeb: More bringing module loading closer to spec
In particular, this patch removes three host hooks on JS::VM in favor
of the new JS-side module loading stuff.
2023-12-03 20:46:55 +01:00
Andreas Kling
07f567cd9f LibJS+LibWeb: Another round of bringing module loading closer to spec
In particular, this patch focuses on:
- Updating the old "import assertions" to the new "import attributes"
- Allowing realms as module import referrer
2023-12-03 20:46:55 +01:00
Andreas Kling
b08683e588 LibWeb: Don't capture stack variables by reference in MainThreadVM hooks 2023-12-03 20:46:55 +01:00
Andreas Kling
0817d8bda6 LibJS+LibWeb: Make CyclicModule & GraphLoadingState GC-allocated
This allows them to participate in the ownership graph and fixes a
lifetime issue in module loading found by ASAN.

Co-Authored-By: networkException <networkexception@serenityos.org>
2023-12-03 20:46:55 +01:00
Bastiaan van der Plaat
01f000acb0 LibWeb: Add HTML col element span attribute 2023-12-03 20:29:14 +01:00
Bastiaan van der Plaat
7e6fc9c26e LibWeb: Add textarea cols and rows attribute 2023-12-03 20:29:14 +01:00
Bastiaan van der Plaat
f3db0003c2 LibWeb: Add script element text getter setter 2023-12-03 20:29:14 +01:00
Bastiaan van der Plaat
529fd0a65c LibWeb: Add HTML legend element form getter 2023-12-03 20:29:14 +01:00
Bastiaan van der Plaat
fb7b03d162 LibWeb: Add support for the input size attribute 2023-12-03 20:29:14 +01:00
Kenneth Myhra
000ea9d73b LibWeb: Avoid crashing because of empty incumbent settings object stack
This fixes an issue where we end up in a state where we have no
execution context + a main thread event loop with an empty incumbent
settings object stack.
2023-12-03 20:28:10 +01:00
Shannon Booth
48aa9fbe07 LibWeb: Implement ReadableByteStreamController.enqueue 2023-12-03 20:26:14 +01:00
Shannon Booth
feb7fbb95d LibWeb: Implement ReadableStreamBYOBRequest.respond
The parameter in IDL is left as an unsigned long instead of an unsigned
long long as the IDL generator does not currently support that.
2023-12-03 20:26:14 +01:00
Shannon Booth
08be5deb3f LibWeb: Implement AO ReadableByteStreamControllerRespond 2023-12-03 20:26:14 +01:00
Shannon Booth
2ab933e534 LibWeb: Implement AO ReadableByteStreamControllerRespondInternal 2023-12-03 20:26:14 +01:00
Shannon Booth
426cbd8ed3 LibWeb: Implement AO ReadableByteStreamControllerRespondInClosedState 2023-12-03 20:26:14 +01:00
Shannon Booth
be2195cb8c LibWeb: Implement AO ReadableByteStreamControllerRespondInReadableState 2023-12-03 20:26:14 +01:00
Shannon Booth
0245be70d8 LibWeb: Implement Streams AO CanTransferArrayBuffer 2023-12-03 20:26:14 +01:00
Shannon Booth
9d0700e770 LibWeb: Fix IDL getter for ReadableByteStreamController byobRequest
We were previously only returning the controllers current
[[byobRequest]] instead of taking into account pending pull intos.

Rename the getter function which would return the controllers
[[byobRequest]] slot to `raw_byob_request` to differentiate it from
the IDL getter.

This also leaves a FIXME for a spec step which we are also not currently
implementing correctly.
2023-12-03 20:26:14 +01:00
Shannon Booth
1e607f5775 LibWeb: Fix some missing initialize overrides for some Streams classes
This is some more motivation for me to get around to automatically
generate these initialize calls at some point.
2023-12-03 20:26:14 +01:00
Shannon Booth
b2a0a41503 LibWeb: Use TypedArrayBase::kind for pull into constructor lookup 2023-12-03 20:26:14 +01:00
Shannon Booth
a9a3dcd952 LibWeb: Use ArrayBufferView in ReadableStreamBYOBRequest 2023-12-03 20:26:14 +01:00
Shannon Booth
f976ec005c LibWeb: Port DOM::Document from DeprecatedString 2023-12-02 22:54:53 +01:00
Shannon Booth
c4d3134436 LibWeb: Port NavigatorLanguage from DeprecatedString 2023-12-02 22:54:53 +01:00
Shannon Booth
a8f5ebeddd LibWeb: Port DOM::Node from DeprecatedString 2023-12-02 22:54:53 +01:00
Shannon Booth
89bbf53745 LibWeb: Port CSS Parser from DeprecatedString
These are the last instances of DeprecatedString in the CSS folder.
2023-12-02 22:54:53 +01:00
Shannon Booth
2cf3819caf LibWeb: Port HTMLFieldSetElement from DeprecatedString 2023-12-02 22:54:53 +01:00
Shannon Booth
cc43dbf56e LibWeb: Port HTMLTextAreaElement from DeprecatedString 2023-12-02 22:54:53 +01:00
Shannon Booth
a7b8828db2 LibWeb: Port call_user_object_operation from DeprecatedString 2023-12-02 22:54:53 +01:00
Shannon Booth
6813dcaff8 LibWeb: Return FlyString const& from CSS::Parser::Token
This allows us to not need to convert back to a FlyString when we need
one.
2023-12-02 22:54:53 +01:00
Timothy Flynn
1d03301037 LibWeb: Allow JS event handlers to stop propagation of mousemove events
This follows similar logic to keydown events.
2023-12-02 22:54:06 +01:00
Aliaksandr Kalenik
681771d210 LibGfx+LibWeb: Calculate and save glyph positions during layout
Previously, we determined the positions of glyphs for each text run at
the time of painting, which constituted a significant portion of the
painting process according to profiles. However, since we already go
through each glyph to figure out the width of each fragment during
layout, we can simultaneously gather data about the position of each
glyph in the layout phase and utilize this information in the painting
phase.

I had to update expectations for a couple of reference tests. These
updates are due to the fact that we now measure glyph positions during
layout using a 1x font, and then linearly scale each glyph's position
to device pixels during painting. This approach should be acceptable,
considering we measure a fragment's width and height with an unscaled
font during layout.
2023-12-02 22:06:11 +01:00
Kemal Zebari
24b9d05ea8 LibWeb/HTML: Implement text attribute in HTMLTitleElement 2023-12-02 10:35:43 +01:00
Timothy Flynn
9f374a5d2a LibWeb+LibWebView+WebContent: Add an Inspector IPC to execute JavaScript
The Inspector will have an <input> element to execute user-provided JS.
This adds an IDL method and IPC to forward that JS from the Inspector
WebView to the Inspector client.
2023-12-02 10:34:22 +01:00
Timothy Flynn
060807e3da LibWeb: Set correct keyCode for number keys and optional virtual keys
The spec states that if an input key would insert a numerical character
if it were pressed without a modifier, then the keyCode should be that
of the numerical character. For example, the keyCode for a dollar sign
should be that of the number 4.

Further, we should implement the optional fixed virtual key codes.
Otherwise, our implementation would give e.g. the double quote a keyCode
value of 38, which is the same as the up arrow key.
2023-12-02 10:34:22 +01:00
Timothy Flynn
7e92ff062e LibWeb: Update the document's cursor after setting an <input>'s value
The spec step here explicitly says to "move the text entry cursor
position to the end of the text control".
2023-12-02 10:34:22 +01:00
Timothy Flynn
d5d6f9bc92 LibWeb: Dispatch keydown events before invoking special handlers
We need to give pages the opportunity to intercept keydown events and
potentially stop them from propagating. Otherwise, for example, pressing
an arrow key in an <input> element is not observable via script.
2023-12-02 10:34:22 +01:00
Timothy Flynn
27d40bafc9 LibWeb: Do not invert the dispatch_event result in fire_keyboard_event
The return value of fire_keyboard_event is meant to indicate whether the
event should continue propagating (true) or halt (false). This exactly
matches the return value of dispatch_event, so by negating the result,
we are propagating events we shouldn't, and not propagating events we
should.
2023-12-02 10:34:22 +01:00
Timothy Flynn
7edfeb7056 LibWeb: Support committing changes to <input> elements
We currently fire the change event on <input> elements when they lose
focus. The spec allows for us to also fire the event when changes are
"committed", so long as such an action makes sense for the input type.

This patch detects when the return key is entered in an <input> element
and uses that as the commit action for text-related types. If no change
has occurred since the last commit, no change event is fired.
2023-12-02 10:34:22 +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
d344c50663 LibWeb: Return String from CSSStyleRule::selector_text() 2023-12-01 20:48:13 +01:00
Sam Atkins
374b6cdffd LibWeb: Return String from CSSImportRule::href() 2023-12-01 20:48:13 +01:00