ronak69
5f9a36feac
LibWeb: Frameset should be the body element if it comes before body
...
Fixes one WPT test: "Frameset followed by body inside the html element"
http://wpt.live/html/dom/documents/dom-tree-accessors/Document.body.html
2024-10-12 11:52:53 -06:00
sin-ack
711faa8280
LibWeb: Remove redundant DedicatedWorkerGlobalScope prototype setting
...
Now that the global object correctly sets the property, we don't need
to do it here.
2024-10-12 19:21:59 +02:00
0x4261756D
6923008a55
JPEGLoader: Fix infinite loop on incomplete data
...
If the image data to decode is incomplete, e.g. a corrupt image missing
its last scanlines the decoder would previously keep looping for ever.
By breaking out of the loop if no more scanlines were produced we can at
least display the partial image up to that point.
2024-10-12 19:21:03 +02:00
Andreas Kling
02da288413
LibWeb: Allow CSS @import rule to import non-UTF-8 style sheets
...
This fixes a number of WPT crashes in the /css/CSS2/syntax directory.
2024-10-12 19:20:22 +02:00
0x4261756D
c1a14f66ad
HTMLEncodingDetection: Use mime type in encoding sniffing
...
Also added proper spec comments.
Fixes at least one WPT test that was failing previously:
https://wpt.live/encoding/single-byte-decoder.window.html?document
2024-10-12 16:14:38 +02:00
Timothy Flynn
dae6200c1d
LibWeb: Update (not replace) timeout values in WebDriver's Set Timeouts
...
Contradictory to the spec, the Set Timeouts endpoint should update the
existing timeouts configuration in-place, rather than replacing it. WPT
expects this, and other browsers already implement this endpoint this
way.
2024-10-12 15:02:41 +02:00
Timothy Flynn
8396afeb76
LibWeb: Update WebDriver timeout parsing/serializing to the latest spec
...
Namely, all fields in the timeouts object may now be null. There are a
few calling AOs that we will want to bring up to date as well.
2024-10-12 15:02:41 +02:00
Timothy Flynn
8598ed86fe
LibWeb+WebContent: Implement the Element Clear endpoint
2024-10-12 15:01:35 +02:00
Timothy Flynn
516f5f7008
LibWeb: Implement the form associated element clear algorithm
...
This is a method defined in the WebDriver spec, but requires access to a
bunch of private fields in these classes, so this is implemented in the
same manner as the reset algorithm.
2024-10-12 15:01:35 +02:00
John Diamond
fadb14d31d
LibWeb: Compare anchor/focus offsets in selection.isCollapsed
...
The "isCollapsed" attribute on a selection must "return true if and only
if the anchor and focus are the same".
In addition to checking that the anchor and focus belonged to the same
DOM node, we now also check that they refer to the same position within
the node.
With this change Ladybird passes all the subtests in the "isCollapsed"
WPT suite.
https://wpt.live/selection/isCollapsed.html
2024-10-12 15:00:35 +02:00
sin-ack
27b1d94e04
LibWeb: Obtain basename before passing base_url to ClassicScript::create
...
This would previously crash because it depended on a specific order for
evaluating function arguments, which is undefined.
2024-10-12 15:00:09 +02:00
Aliaksandr Kalenik
6452bfb612
LibWeb: Store scroll and sticky frames state in single vector
...
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
This way we don't have to allocate separate vector with both scroll and
sticky frame that is used for display list player (scroll and sticky
frames share id pool), so player could access offset by frame id.
No behavior change.
2024-10-12 13:13:14 +02:00
Aliaksandr Kalenik
d07643b122
LibWeb: Introduce a new class responsible for scroll state
...
It's good to have a wrapper for scroll and sticky state instead of
directly mutating vectors with frames.
No behavior change.
2024-10-12 13:13:14 +02:00
Aliaksandr Kalenik
34261e5490
LibWeb: Don't produce save & restore commands for scroll frame id change
...
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
This allows to substantially decrease display list length and
save/restore churn during painting.
Display list size comparison:
| | Before | After |
| ------------- | ------ | ------ |
| basecamp.com | 19066 | 12248 |
| ladybird.org | 8878 | 2220 |
| react.dev | 39074 | 24382 |
2024-10-11 17:26:54 +02:00
Aliaksandr Kalenik
4eec621d3a
LibWeb: Remove translation from display list recorded state
...
...and add display list item that does translation instead. By doing
that we no longer need to map each coordinate in display list by
translation in recorder state.
2024-10-11 17:26:54 +02:00
Aliaksandr Kalenik
1892cac80b
LibWeb: Remove unused clip_rect from display list recorder state
2024-10-11 17:26:54 +02:00
Aliaksandr Kalenik
35d0d11e65
LibWeb: Remove post_transform_translation for stacking context
...
There is no explanation why it's needed and removing it does not break
any of our tests.
2024-10-11 17:26:54 +02:00
rmg-x
10acf3f6c7
RequestServer: Set CURLOPT_CONNECTTIMEOUT instead of CURLOPT_TIMEOUT
...
Set the connection timeout which only limits the connection phase of the
request.
Previously, CURLOPT_TIMEOUT would apply to all transfer operations which
could result in legitimate upload or download operations being
cancelled.
2024-10-11 13:18:05 +02:00
Bastian Neumann
9650cf8b15
LibJS: Do not print large arrays
...
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
Printing the whole array causes wpt
console/console-log-large-array.any.html to crash.
This limits logged arrays to 100 elements and
truncates the rest with ...
2024-10-11 09:59:39 +01:00
Timothy Flynn
79365c9519
UI: Migrate headless-browser to be alongside other Ladybird chromes
...
The headless-browser source is getting a bit unwieldy. The ordering of
class and method definitions is fragile; e.g. the application and web
view classes each require full definitions of each other. So it has
reached the point where it makes sense to give headless-browser some
better file structure.
To prepare for that, this patch simply moves its source to live along-
side the other browser chromes. This location is a bit better prepared
for creating more files, as the Utilities folder doesn't even have its
own CMakeLists.txt.
2024-10-11 09:09:40 +02:00
Timothy Flynn
23d134708c
LibWeb: Begin implementing the Element Send Keys endpoint
2024-10-11 09:09:23 +02:00
Timothy Flynn
922837f31b
WebDriver: Generalize asynchronous event handling
...
Instead of having N functions all implement the same practice of looping
until an async event has arrived, this templatizes the bulk of the work.
2024-10-11 09:09:23 +02:00
Timothy Flynn
63b24e38fa
LibWeb: Support appending files to <input type=file>
...
This isn't exposed to the Web, but WebDriver requires this feature.
2024-10-11 09:09:23 +02:00
Aliaksandr Kalenik
0dec2dc21c
LibWeb: Improve grid area calculation for abspos items in GFC
...
- Add support for placement of abspos items into track formed by last
line and padding edge of grid container
- Correctly handle auto-positioned abspos items by placing them between
padding edges of grid container
Fixes crashing on https://wpt.live/css/css-grid/abspos/positioned-grid-descendants-001.html
2024-10-11 09:08:46 +02:00
Aliaksandr Kalenik
32c467cc0e
LibWeb: Introduce axis-agnostic alignment type in GFC
...
Allows to reuse code for both dimensions instead of duplicating the
entire switch-case.
2024-10-11 09:08:46 +02:00
rmg-x
9dd7b901ab
LibWeb/ResourceLoader: Display HTTP reason phrase in error status
2024-10-11 07:43:23 +01:00
Fernando Kiotheka
caf74e7ed6
LibWeb: Implement activation behavior on input[type=reset]
...
This fixes WPT html/semantics/forms/resetting-a-form/reset-form.html.
I added a test based on the WPT test, but simpler.
2024-10-11 07:40:49 +01:00
pheonixfirewingz
9456359f32
LibMedia: Disable ffmpeg on windows
...
Also don't try to find_package the library on Android while we're here.
2024-10-10 21:48:41 -06:00
Noah Bright
f23cc02603
LibWeb: Remove constexpr from service worker ==
...
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
Appeasing clang. The binary == wasn't constexpr and that
crashed compilation
2024-10-10 19:08:44 -06:00
Nico Weber
cc0cfd044b
LibWeb: Add stroke-linecap attribute and plumb it to SVGGraphicsElement
...
SVGGraphicsElement then goes ahead and does nothing with it for now.
2024-10-11 00:27:47 +01:00
Ali Mohammad Pur
202bfabdc6
LibXML: Shift some rule acceptances to make errors nicer
...
Instead of saying "expected />", make the parser output the real cause
for the following ("unknown reference"):
<foo>&unknown;</foo>
2024-10-10 23:53:48 +01:00
Ali Mohammad Pur
70e769a18a
LibXML: Avoid ByteString::formatted() on static "expected" errors
...
This is a fairly significant (~8%) speedup when parsing references.
2024-10-10 23:53:48 +01:00
Ali Mohammad Pur
02b50d463b
AK: Cache all the line positions in LineTrackingLexer
...
Also updates a LibWeb text test that used to report the wrong line
number.
2024-10-10 23:53:48 +01:00
rmg-x
db0dbb384e
RequestServer: Set default timeout to 90 seconds for all requests
2024-10-10 19:56:11 +01:00
rmg-x
ff18114ae7
LibWeb+LibRequests+RequestServer: Report network error on request finish
...
This allows us to bubble up network errors to API consumers after
finishing a request.
2024-10-10 19:56:11 +01:00
Neil Viloria
9e2b70661e
LibWeb/Layout: Unify grid justify-content handling for grid area
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
2024-10-10 13:37:08 +02:00
Timothy Flynn
d6a8fc00c3
LibWeb: Implement dispatching WebDriver key down and key up actions
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
2024-10-10 10:41:10 +02:00
Timothy Flynn
5b2633d90f
LibWeb: Support non-required numpad code names
...
These aren't required to comply with the UIEvents spec, but they are
required by WebDriver.
2024-10-10 10:41:10 +02:00
Timothy Flynn
a11e5055c7
LibWeb: Allow multi-byte code point events to have their key field set
...
Multi-byte code point presses do not have a UIEvents::KeyCode value, so
we would previously set the event's key field to "Unidentified".
2024-10-10 10:41:10 +02:00
Timothy Flynn
96b5646fc1
LibWeb: Properly handle when (shift+)tab wraps around the page
...
We have support for using (shift+)tab to move focus to the next/previous
element on the page. However, there were several ways for this to crash
as written. This updates our implementation to check if we did not find
a node to move focus to, and to reset focus to the first/last node in
the document.
This doesn't seem to work when wrapping around from the first to the
last node. A FIXME has been added for that, as this would already not
work before this patch (the main focus here is not crashing).
2024-10-10 10:41:10 +02:00
Timothy Flynn
13fe3477ab
WebContent: Wait for same-URL WebDriver navigations to complete
...
The spec says we don't need to await navigations if we navigate to the
same URL that we are already on, but at least in our implementation, we
should still await the page load. Otherwise, we will invoke WebDriver
endpoints on the wrong page.
2024-10-10 10:41:10 +02:00
Timothy Flynn
cbf8f1495c
WebContent: Create an execution context when getting an element property
...
Calling Object::get requires a running execution context.
2024-10-10 10:41:10 +02:00
0x4261756D
96de4ef7e0
LibTextCodec: Add SingleByteEncoders
...
They are similar to their already existing decoder counterparts.
2024-10-10 10:39:28 +02:00
Andrew Kaster
7faebb2702
LibWeb: Implement most of Service Worker registration
...
Lint Code / lint (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Push notes / build (push) Waiting to run
This approach will need some rework to be properly handled at the user
agent level instead of per renderer process, but it's a start.
2024-10-09 15:58:36 -06:00
Andrew Kaster
f4f70068a8
LibWeb: Teach AK how to hash StorageKeys
2024-10-09 15:58:36 -06:00
Andrew Kaster
2156de7172
LibWeb: Spoof the ESO's creation url in tests
...
This is necessary when we add more ServiceWorker capabilities, that
actually check this value. The more this spoof functionality is used,
the more we'll need to actually support serving test files over https.
2024-10-09 15:58:36 -06:00
Jelle Raaijmakers
25516e351e
LibWeb: Clear grapheme segmenter when invalidating TextNode text
...
We only set the grapheme segmenter's text once after creating a new
segmenter, so we also need to clear it whenever we invalidate the text.
2024-10-09 23:07:13 +02:00
Timothy Flynn
4fcaeabe1a
LibWeb+UI: Detect and handle left vs. right modifier keys
...
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
Our handling of left vs. right modifiers keys (shift, ctrl, etc.) was
largely not to spec. This patch adds explicit UIEvents::KeyCode values
for these keys, and updates the UI to match native key events to these
keys (as best as we are able).
2024-10-09 19:10:02 +02:00
Timothy Flynn
448754d95d
LibWeb: Only fire keypress events if the key press produced a character
...
For example, pressing just the shift key should not producde a keypress
event.
2024-10-09 19:10:02 +02:00
Timothy Flynn
3925317c11
LibWeb: Fire keydown and keypress events sooner
...
Fire the events before handling any close requests or selection changes.
Pages must have an opportunity to cancel the events.
2024-10-09 19:10:02 +02:00