Callum Law
50239b58aa
LibWeb: Reset border-image
to initial value when using border
...
Also includes associated handling for serialization of the `border`
shorthand.
2025-09-15 08:42:22 +01:00
Callum Law
588c611e7e
LibWeb: Use correct initial value for border-image
...
Omitting the `/`s meant that `1` and `0` were parsed as part of
border-slice instead of their intended values.
No functional changes but this will be relied on in a later commit.
2025-09-15 08:42:22 +01:00
ayeteadoe
9f23b0a069
Services/WebDriver: Enable on Windows
2025-09-15 09:19:52 +02:00
ayeteadoe
69e92f69a7
LibCore: Implement SIGTERM-based kill() on Windows
...
There is no direct Win32 API equivalent, but calling WM_CLOSE on
the top-level windows allows for a graceful shutdown where resources
are able to clean themselves up properly
2025-09-15 09:19:52 +02:00
Pavel Shliak
bbb9159883
LibWeb: Fix Request() TypeError message typo for mode='navigate'
...
The Request constructor’s mode validation threw
"Mode must not be 'navigate"
missing the closing quote. Add the trailing quote so the error reads:
"Mode must not be 'navigate'".
2025-09-15 08:19:34 +01:00
Kemal Zebari
faf3c19026
LibWeb/MimeSniff: Match spec change by using correct font essence
...
Spec change was made to fix a typo; application/font-off ->
application/font-otf
2025-09-15 07:31:02 +01:00
MFMF-EGY
fff09ed330
LibWeb: Handle interpolation of BorderRadius style value type
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-09-14 16:49:20 +01:00
Shivendra Kumar
b3e8784f92
LibCrypto: Fix typo in comment
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-09-14 10:45:41 +01:00
Marcos Del Sol Vives
40792aa85d
LibWeb/CSS: Fix compilation with CSS_TRANSITIONS_DEBUG
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (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
A new parameter was added to Web::CSS::StyleValue::to_string() in
PR #2820 but this debug message was never updated. If
CSS_TRANSITIONS_DEBUG was enabled, compilation would fail.
2025-09-13 23:33:57 +02:00
Aliaksandr Kalenik
0076ab74b2
LibJS: Don't attempt to cast property key to number in PutByIdWithThis
...
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
Property key for this instruction cannot be a number.
2025-09-13 20:02:28 +02:00
Aliaksandr Kalenik
e81833423b
LibJS: Add PutByNumericId and change PutById to be string key only
...
Previously, PutById constructed a PropertyKey from the identifier,
which coerced numeric-like strings to numbers. This moves that decision
to bytecode generation: the bytecode generator now emits PutByNumericId
for numeric keys and PutById for string keys. This removes per-execution
parsing from the interpreter.
1.4x speedup on the following microbenchmark:
```js
const o = {};
for (let i = 0; i < 10_000_000; i++) {
o.a = 1;
o.b = 2;
o.c = 3;
}
```
2025-09-13 20:02:28 +02:00
Louis Dalibard
660bcfa2cd
LibGfx+LibWeb+UI: Add OpenHand cursor for CSS grab property
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-09-13 14:27:18 +02:00
Tim Ledbetter
19577b966e
LibWeb: Implement interpolation of border-image-slice
style values
2025-09-13 12:05:19 +02:00
Jelle Raaijmakers
9e9db9a9dd
LibWeb: Store correct text offsets in PaintableFragment
...
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
Previously, we were collapsing whitespace in Layout::TextNode and then
passed the resulting string for further processing through ChunkIterator
-> InlineLevelIterator -> InlineFormattingContext -> LineBuilder ->
LineBoxFragment -> PaintableFragment. Our painting tree is where we deal
with things like range offsets into the underlying text nodes, but since
we modified the original string, the offsets were wrong.
This changes the way we generate fragments:
* Layout::TextNode no longer collapses whitespace as part of its
stored "text for rendering", but moves this logic to ChunkIterator
which splits up this text into separate views whenever whitespace
needs to be collapsed.
* Layout::LineBox now only extends the last fragment if its end offset
is equal to the new fragment's start offset. Otherwise, there's a
gap caused by collapsing whitespace and we need to generate a
separate fragment for that in order to have a correct start offset.
Some tests need new baselines because of the fixed start offsets.
Fixes #566 .
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
d1076c1e6e
LibWeb: Remove text storage from TextPaintable
...
Instead of copying the layout node's text, retrieve the text from the
layout node directly.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
e6474778c6
LibWeb: Some text-related cleanup
...
No functional changes.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
7375d8c6f9
LibWeb: Simplify ASCII whitespace check in Layout::TextNode
...
No functional changes.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
26b5fa348c
LibWeb: Make Navigable::active_document() const
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
12cec1bdb3
LibWeb: Clean up Range::to_string()
...
No functional changes.
2025-09-12 15:34:09 -04:00
Jelle Raaijmakers
75d41859fd
LibWeb: Remove PWL::layout_node_with_style_and_box_metrics()
...
These methods already exist in PaintableBox.
2025-09-12 15:34:09 -04:00
Callum Law
a805635e40
LibWeb: Compute dimension percentage mix as percentage where applicable
...
When we have a `calc` which is a mix of a dimension and a percentage, we
should use the percentage alone for the computed value if the dimension
component is 0 e.g. `calc(50% + 0px)` should use `50%` as it's computed
value.
2025-09-12 15:04:30 +01:00
Nico Weber
9272df7a86
Everywhere: Fix a few unreachable-return / unreachable-break warnings
...
I was playing with clang's -Wunreachable-code-aggressive a bit.
This fixes a handful uncontroversial things it flags.
No behavior change.
2025-09-12 14:33:14 +01:00
Sam Atkins
a139ad1c44
LibWeb/CSS: Implement CSSNumericValue.to()
...
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
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
Tries to convert the CSSNumericValue to a CSSUnitValue with the given
unit.
This gets us the remaining 11 WPT subtests for this method.
2025-09-12 13:45:41 +02:00
Sam Atkins
80abffd2e8
LibWeb/CSS: Implement "Create a sum value"
2025-09-12 13:45:41 +02:00
Sam Atkins
1c952b01ac
LibWeb/CSS: Implement "Convert a CSSUnitValue"
2025-09-12 13:45:41 +02:00
Sam Atkins
050d3a58cf
LibWeb/CSS: Generate canonical/compatible unit functions
...
These are used by `CSSNumericValue.to(unit)` which attempts to convert
to the provided unit.
2025-09-12 13:45:41 +02:00
Sam Atkins
5a42b7a40f
LibWeb/CSS: Implement product_of_two_unit_maps()
...
Helper function for combining two UnitMaps.
2025-09-12 13:45:41 +02:00
Sam Atkins
e6e380b109
LibWeb/CSS: Implement "create a type from a unit map"
2025-09-12 13:45:41 +02:00
Sam Atkins
09a6b179d0
LibWeb/CSS: Take FlyString in NumericType::create_from_unit()
...
We only call this with FlyStrings, so we might as well.
2025-09-12 13:45:41 +02:00
Sam Atkins
995c19da56
LibWeb/CSS: Return unit names as FlyStrings
...
From the CSS token side, we already have these in FlyString form. From
the generated code side, we can easily return FlyStrings instead of
StringViews. So, let's do that, and save some work converting back and
forth.
2025-09-12 13:45:41 +02:00
Sam Atkins
59c4076066
LibWeb/CSS: Mark CSSStyleValue classes final where possible
2025-09-12 13:45:41 +02:00
Tim Ledbetter
3099459504
LibWeb: Return the same DataTransfer.types()
array if unmodified
2025-09-12 12:30:33 +02:00
Tim Ledbetter
3fc7613bf1
LibWeb: Implement DataTransferItemList.clear()
2025-09-12 12:30:33 +02:00
Tim Ledbetter
0c1532626f
LibWeb: Implement DataTransfer.clearData()
2025-09-12 12:30:33 +02:00
Tim Ledbetter
d9341adb1e
LibWeb: Implement DataTransferItemList.remove()
2025-09-12 12:30:33 +02:00
Veeti Paananen
8ab3549585
LibWeb: Add support for HTMLHRElement size presentational hint
2025-09-12 11:23:38 +01:00
Zaggy1024
26a21f2070
LibMedia: Make MatroskaDemuxer::get_codec_id_for_string static
2025-09-12 11:23:47 +02:00
Zaggy1024
9077873803
LibMedia: Stop initializing an empty optional in MatroskaDemuxer
...
There was a warning for the Optional initializer having no effect, but
removing the initializer caused the call to add a track to the HashMap
to complain. A constructor looks a little nicer here anyway.
2025-09-12 11:23:47 +02:00
Zaggy1024
ae7f82591b
LibMedia: Separate file duration from track duration in Demuxer
...
Most users will only care about the total file duration, and shouldn't
be required to determine the file duration from multiple track
durations. To facilitate that, add a total_duration() function that
returns the demuxer's duration not associated to any particular track.
2025-09-12 11:23:47 +02:00
Zaggy1024
6653b747ff
LibMedia: Allow demuxers to specify a preferred track
...
...and return all tracks of a matching type from FFmpegDemuxer, rather
than only the single best one.
2025-09-12 11:23:47 +02:00
Zaggy1024
8d64e72655
LibMedia: Remove the duration field from Track::VideoData
...
Most demuxer users will only care about the whole file's duration
anyway, so this field doesn't really do us any good.
2025-09-12 11:23:47 +02:00
Aliaksandr Kalenik
db5fd614ac
LibWeb: Require layout update for less properties in getComputedStyle()
...
Some properties like `justify-items`, `grid`, or `display` do affect
layout, but their used values can be obtained without performing a
layout calculation.
This change introduces a new helper,
`property_needs_layout_for_getcomputedstyle()`, specifically for use by
`CSSStyleProperties::property()`. It returns true only for properties
such as `width`, `height`, `margin`, `padding`, `top`, and `left`, where
an up-to-date layout is required to return the correct used value.
2025-09-12 11:06:16 +02:00
Callum Law
815e77c04d
LibWeb: Respect text-underline-offset
when rendering underlines
2025-09-12 07:07:15 +01:00
Callum Law
9aa2d1bd3e
LibWeb: Make text-decoration lines entire width of fragment
...
This fixes an issue where text decorations (e.g. underlines) of text
split across multiple fragments would have unintended 1px gaps.
Gains us 2 WPT passes (imported)
2025-09-12 07:07:15 +01:00
Callum Law
858450922b
LibWeb: Parse and compute text-underline-offset
property
2025-09-12 07:07:15 +01:00
Zaggy1024
f9305e7e67
LibMedia: Format switch statements consistently in FFmpegVideoDecoder
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-09-11 18:41:58 -05:00
Zaggy1024
924ba6c1f4
LibMedia: Use FFmpeg's info to tell us if YUVJ is full-range
...
It reports this correctly for the video linked in #4993 , and likely any
other videos using the YUVJ format, so we don't need this extra check.
2025-09-11 18:41:58 -05:00
Timothy Flynn
4a5c374084
UI/Qt: Place the "reset zoom" button to the left of the hamburger menu
...
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
It feels a bit awkward having this button displace the menu.
2025-09-11 14:23:45 -04:00
Timothy Flynn
9684e6dbc5
LibWebView+UI: Generate the zoom menu
2025-09-11 14:23:45 -04:00
Timothy Flynn
7d6ea99d0d
LibWebView+UI: Generate the preferred color, contrast, and motion menus
2025-09-11 14:23:45 -04:00