Timothy Flynn
ed63a60247
AK: Return an empty optional when UTF-16 code unit lookup fails
...
Accidentally returned the wrong type here.
2025-07-28 12:25:11 +02:00
Timothy Flynn
baddac5155
AK: Implement a method to split a UTF-16 string
2025-07-28 12:25:11 +02:00
Timothy Flynn
48a3b2c28e
AK: Implement a method to count instances of a needle in a UTF-16 string
2025-07-28 12:25:11 +02:00
Jelle Raaijmakers
b6732240c7
LibWeb: Avoid float intrusions for BFCs, FFCs and GFCs
...
We were only avoiding float intrusions for BFCs, but FFCs and GFCs
should also accommodate for any floats present.
Work towards #4136 .
2025-07-28 12:13:06 +02:00
Jelle Raaijmakers
5a6a1074f7
LibWeb: Remove unused includes from FlexFormattingContext
2025-07-28 12:13:06 +02:00
Jelle Raaijmakers
ab3e9799d5
LibWeb: Allow negative margins to influence inline offset after float
...
In 89ba00304c
, the box' X position was
capped at 0 to prevent negative X positions to act as if there were
intruding floats on the left side. Instead, we need to check whether the
left side float intrusion we are going to calculate matters at all -
because if there's no matching float box, the intrusion is always going
to be 0 and we don't need to take the box' X position into account.
Fixes the floating publication images on https://lexfridman.com/ .
2025-07-28 12:11:56 +02:00
Arran Ireland
06ffe532c2
LibWeb: Ensure cast to double for double matrix
2025-07-28 09:15:23 +02:00
Arran Ireland
9a8599f265
LibGfx+LibMedia+LibWeb: Use new Matrix subscript operator
2025-07-28 09:15:23 +02:00
Arran Ireland
423e944a92
LibGfx+LibWeb: Upgrade to multi-arg subscript operator in Matrix
...
See the following for more details:
https://en.cppreference.com/w/cpp/language/operators.html#Array_subscript_operator
2025-07-28 09:15:23 +02:00
Tim Ledbetter
168ea88cb2
test-web: Add an option to randomize the test order
2025-07-28 09:01:56 +02:00
Rocco Corsi
d322c3a21f
LibGfx: VulkanContext coverity reports integer_overflow on index
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Coverity static analysis reports that the code that scans the queue
families for one that has the graphics bit, can be -1 if none are
found, which could cause a problem when the -1 (signed) value is
used later as an index in a uint32_t (unsigned) variable.
Its not immediately clear how often this could occur, not finding
a queue family with the graphics bit, but adding some protecting
just in case.
2025-07-27 23:38:49 -04:00
Timothy Flynn
bc4112bf18
UI: Inform WebContent when the mouse leaves the WebView widget
...
Previously, when the mouse left the WebView, the currently hovered node
would remain hovered (including the scroll bar). This felt a bit awkward
and is not how other browsers behave.
2025-07-27 23:38:00 -04:00
Abhinav
8303a558f1
LibWeb: Fix acceptable WebSocket close code range
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-07-27 15:36:34 +02:00
Jelle Raaijmakers
ed94381209
LibWasm: Return canonical NaN for min/max/floor/ceil/truncate operations
...
Instead of returning whichever argument was NaN, return the canonical
NaN instead. The spec allows the old behavior:
"Following the recommendation that operators propagate NaN payloads
from their operands is permitted but not required."
But Chrome, Firefox and Safari do not propagate the operand payloads.
Fixes 448 WPT subtests in `wasm/core`.
Co-authored-by: Ali Mohammad Pur <ali.mpfard@gmail.com>
2025-07-27 15:35:28 +02:00
Aliaksandr Kalenik
a6857a6ce1
LibWeb: Log more useful information in display list dump
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-07-27 10:20:18 +02:00
Aliaksandr Kalenik
789016841e
LibWeb: Pass device_pixels_per_css_pixel into DisplayList constructor
...
Having a setter for `device_pixels_per_css_pixel` was confusing because
display lists are immutable, so it doesn't make sense to override this
value after the display list has been created.
2025-07-27 10:20:18 +02:00
Aliaksandr Kalenik
8e3a42c54e
LibWeb: Delete unused is_fixed_position from PushStackingContextParams
2025-07-27 10:20:18 +02:00
Aliaksandr Kalenik
0e8d70d8c3
LibWeb: Rename draw_text_run to draw_glyph_run in DisplayListRecorder
...
For consistency with corresponding display list item name.
2025-07-27 10:20:18 +02:00
Andrew Kaster
64f1a76636
CMake: Ignore invalid offset of when generating Swift interop header
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-07-26 23:33:58 +02:00
Andrew Kaster
7d669b8b0c
AK: Update Swift test for Utf16String changes
2025-07-26 23:33:58 +02:00
Abhinav
93a0ef949a
LibWeb: Update x25519 raw key import tests
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
2025-07-26 10:43:16 -06:00
Abhinav
ea8538ea49
LibWeb: Don't import raw X25519 key of incorrect length
2025-07-26 10:43:16 -06:00
Aliaksandr Kalenik
8569124b87
LibWeb: Fix scroll state refresh in cached display list for iframes
...
6507d23
introduced a bug when snapshot for iframe is saved in
`PaintNestedDisplayList` and, since display lists are immutable, it's
not possible to update before the next repaint.
This change fixes the issue by moving `ScrollStateSnapshot` for
nested display lists from `PaintNestedDisplayList` to
`HashMap<NonnullRefPtr<DisplayList>, ScrollStateSnapshot>` that is
placed into pending rendering task, making it possible to update
snapshots for all display lists before the next repaint.
This change doesn't have a test because it's really hard to make a ref
test that will specifically check scenario when scroll offset of an
iframe is advanced after display list is cached. We already have
`Tests/LibWeb/Ref/input/scroll-iframe.html` but unfortunately it did
not catch this bug.
Fixes https://github.com/LadybirdBrowser/ladybird/issues/5486
2025-07-26 11:53:21 -04:00
Luke Wilde
124bdce99c
UI/Qt: Set WC's max FPS to the refresh rate of the current screen
2025-07-26 10:09:12 -04:00
Luke Wilde
b0d97c991f
UI/AppKit: Set WC's max FPS to the max FPS of the current screen
2025-07-26 10:09:12 -04:00
Luke Wilde
c93c30d596
LibWebView+WebContent: Make it possible to change the painting interval
...
This allows us to paint at the refresh rate of the screen. The default
is 60, as before, in case it never gets set by anything.
2025-07-26 10:09:12 -04:00
Luke Wilde
31faf31f6a
LibCore: Unmark timer interval being dirty after applying new interval
...
Previously it was never unmarked, so the timer would constantly stop
and start, which made the timer jittery especially at small intervals.
2025-07-26 10:09:12 -04:00
Timothy Flynn
3a072f66e3
LibWeb: Pass Utf16String around directly in Editing APIs
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Noticed while working adjacent to these APIs that we take a Utf16String
and pass it around as a Utf16View, only to re-allocate the Utf16String
in many commands. Let's just pass the string itself around.
2025-07-26 00:40:06 +02:00
Timothy Flynn
f001dbea30
LibWeb: Add missing includes to Editing/Commands.h
...
clangd is complaining loudly about these.
2025-07-26 00:40:06 +02:00
Timothy Flynn
2da615ed31
LibWeb: Port document.execCommand and InputEvent to UTF-16
2025-07-26 00:40:06 +02:00
Timothy Flynn
49467d0583
LibIDL+LibWeb: Support UTF-16 USVString
2025-07-26 00:40:06 +02:00
Timothy Flynn
1375e6bf39
AK+LibJS+LibWeb: Use simdutf to create well-formed strings
2025-07-26 00:40:06 +02:00
Timothy Flynn
017a6cc687
LibWeb+WebContent: Port FormAssociatedTextControlElement APIs to UTF-16
2025-07-26 00:40:06 +02:00
Timothy Flynn
cdf270a5e6
WebContent: Invert focus condition in WebDriver's Element Send Keys
...
The spec states we should inspect the relevant value if the element does
*not* have focus.
2025-07-26 00:40:06 +02:00
Timothy Flynn
c566cc5024
LibWeb: Invoke correct word-jumping method in EditingHostManager
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-07-25 12:57:03 -04:00
Timothy Flynn
97548f48de
LibWeb: Port rendered text to UTF-16
...
This migrates TextNode::text_for_rendering() to Utf16String and deals
with the fallout. As a consequence, this effectively reverts commit
3df83dade8
.
The layout test expecation file updates are because we now express text
lengths and offsets in UTF-16 code units.
The selection-over-multiple-code-units expectation file update actually
represents a correctness fix. Our result now matches Firefox.
2025-07-25 18:16:22 +02:00
Timothy Flynn
a270706411
LibWeb: Port DOM::Range stringification to UTF-16
2025-07-25 18:16:22 +02:00
Timothy Flynn
8d17786b8c
LibWeb: Add missing include to LineBoxFragment.h
...
This missing include is making clangd behave badly on this file.
2025-07-25 18:16:22 +02:00
Timothy Flynn
0e9b694058
LibGfx: Support UTF-16 text shaping
...
We can achieve this with templating the string view type, and then just
piping the view into the correct `hb_buffer_add_utf*` API.
2025-07-25 18:16:22 +02:00
Timothy Flynn
a740bfd8ff
AK+LibUnicode: Implement Unicode-aware UTF-16 case transformations
2025-07-25 18:16:22 +02:00
Timothy Flynn
df77ae1920
AK: Implement creating a UTF-16 string from a repeated code point
2025-07-25 18:16:22 +02:00
Timothy Flynn
a46e9b2adb
AK: Compute the correct capacity in StringBuilder::try_append_repeated
...
This was mistakenly broken in 2803d66d87
.
2025-07-25 18:16:22 +02:00
Timothy Flynn
745f288796
AK: Implement a method to acquire a UTF-16 iterator's code unit offset
...
This is the same as Utf8View::iterator_offset().
2025-07-25 18:16:22 +02:00
mikiubo
acf1fe7b05
LibWeb: Return base Document for non-HTML parses
...
The HTML specification does not explicitly require
a specific return type for parseFromString(),
but according to Web Platform TestsDOMParser-parseFromString.html,
the expected return value for
XML MIME types is a Document—not an XMLDocument.
2025-07-25 10:08:29 -06:00
Jelle Raaijmakers
acc7c2f7f3
LibWeb: Do not use namespace in interface names
...
Gives us 20 additional WPT subtest passes in `wasm/jsapi`.
2025-07-25 16:50:45 +02:00
Jelle Raaijmakers
73967ee90c
Everywhere: Use HashMap::update() where applicable
2025-07-25 16:22:06 +02:00
Jelle Raaijmakers
0b96690f0c
AK: Add HashMap::update()
...
This updates a HashMap by copying another HashMap's keys and values.
2025-07-25 16:22:06 +02:00
Jelle Raaijmakers
76ee1ce04c
LibWeb: Support wasm module instantiation using a global address
...
Fixes 1 WPT subtest in `wasm/core/simd`.
2025-07-25 15:35:27 +02:00
Jelle Raaijmakers
58c3a391a3
LibWeb+LibWasm: Reject module instantiation with correct error type
...
The spec tells us to reject the promise with a RuntimeError instead of a
LinkError whenever the module's start function fails during module
instantiation. Fixes 1 WPT subtest in `wasm/core`.
2025-07-25 15:13:28 +02:00
Jelle Raaijmakers
35ca7f82b0
LibWeb: Add BaseAudioContext::createScriptProcessor()
...
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
This is a deprecated node, but it's still widely used on the web.
2025-07-25 11:48:04 +02:00