Sam Atkins
e5ea4f9bdf
LibWeb/HTML: Add source field to ToggleEventInit
...
Corresponds to:
95131eec8f
As we now have a field in that dictionary, I removed the separate
`source` parameter from ToggleEvent::create(). Also updated the
relevant test.
2025-12-01 14:58:20 +00:00
Prajjwal
50a79c6af8
LibWeb: Change SessionHistoryTraversalQueue to use Promises
...
If multiple cross-document navigations are queued on
SessionHistoryTraversalQueue, running the next entry before the current
document load is finished may result in a deadlock. If the new document
has a navigable element of its own, it will append steps to SHTQ and
hang in nested spin_until.
This change uses promises to ensure that the current document loads
before the next entry is executed.
Fixes timeouts in the imported tests.
Co-authored-by: Sam Atkins <sam@ladybird.org >
2025-11-26 12:27:12 +01:00
aplefull
eed4dd3745
LibRegex: Add support for string literals in character classes
2025-11-26 11:34:38 +01:00
Glenn Skrzypczak
a0dbae02c8
LibWeb/HTML: Ignore form owner if earlier same-ID element isn't a form
...
Only set form owner when there is no non-form element with the same ID
as the control's form attribute earlier in tree order.
2025-11-24 09:51:50 +01:00
Tim Ledbetter
fdd3975104
LibWeb: Don't run update_the_image_data() algorithm if already started
...
This ensures that events are not fired if the image source is updated
while it is being fetched.
2025-11-15 12:39:37 +01:00
Lorenz A
bd56fdc57b
LibWeb: Allow focusable for the first summary child of a detail element
2025-11-12 13:57:05 +01:00
Lorenz A
8ca59e7c7e
LibWeb: AnchorElement should be focusable with tabindex
2025-11-12 13:57:05 +01:00
Lorenz A
3bc061d028
LibWeb: Allow all elements with tabindex attribute to be focusable
2025-11-12 13:57:05 +01:00
Lorenz A
f8330a2ec5
LibWeb: Do not execute unclosed SVG script tags
2025-11-09 01:43:46 +01:00
Lorenz A
f54793315c
LibWeb: Adjust buttons computed display style
2025-11-01 13:02:44 +00:00
Tim Ledbetter
9da723b5c6
LibWeb: Ensure layout is up to date before resolving canvas colors
2025-10-27 16:56:01 -07:00
Tim Ledbetter
e1ff1e2095
LibWeb: Implement CanvasPattern.setTransform()
...
This method applies the given transformation matrix to a pattern.
2025-10-27 16:41:02 -07:00
Tim Ledbetter
8854bb62c6
LibGfx: Use CSS sRGB serialization for canvas fill styles
2025-10-26 18:55:22 +01:00
Tim Ledbetter
9dceb06992
LibWeb: Don't paint canvas objects with non-visible fill styles
2025-10-26 16:45:38 +01:00
ayeteadoe
5abb5d555a
LibWeb: Implement createImageBitmap() with an ImageBitmap source
2025-10-26 09:01:20 +01:00
Lorenz A
fb258639d1
LibWeb: CSS selector read-write honor is_allowed_to_be_readonly
2025-10-24 19:15:58 +01:00
Tim Ledbetter
1c00279488
LibWeb: Reset Painter when resetting canvas to its initial state
2025-10-23 18:52:36 +02:00
Jelle Raaijmakers
62ae4e878f
LibWeb: Implement support for drawing with CanvasPattern
...
We already had the API, but drawing to the canvas was not affected by
any created CanvasPattern. This moves CanvasPatternPaintStyle to LibGfx
so we don't have to reach into LibWeb, and implements the plumbing to
let Skia use images as a fill pattern.
2025-10-23 13:20:03 +01:00
Jelle Raaijmakers
9753b8e62c
Tests: Import WPT canvas repeating pattern test
2025-10-23 13:20:03 +01:00
Tim Ledbetter
2fd424ccb6
LibWeb: Draw canvas arcs and ellipses correctly when radius is zero
...
In this case, we should just draw a line from the last point in the
path to the start point. Previously, a division by zero caused nothing
to be drawn.
2025-10-22 16:08:57 +02:00
Tim Ledbetter
976912f3e9
LibWeb: Normalize negative drawImage() source/destination dimensions
2025-10-22 12:29:04 +02:00
Tim Ledbetter
c4e56cc845
LibWeb: Throw error when calling drawImage() with a broken image
2025-10-22 10:44:58 +02:00
Tim Ledbetter
f1571c4217
LibWeb: Ensure drawImage() always uses the first image frame
2025-10-22 01:25:46 +02:00
Lorenz A
6afd39b16a
LibWeb: Keep the tokens in ListOfActiveFormattingElements
2025-10-21 23:36:07 +02:00
Tim Ledbetter
7db73118e9
LibWeb+LibGfx: Draw shadows for stroke joins and caps
2025-10-21 18:55:08 +02:00
Tim Ledbetter
0f295e8989
LibWeb: Take transforms into account when drawing shadows
2025-10-21 18:55:08 +02:00
Tim Ledbetter
0516c414d4
LibWeb: Don't draw shadows for transparent gradient fills
2025-10-21 18:55:08 +02:00
Tim Ledbetter
13f551612c
LibWeb: Don't draw shadows if shadow offset and blur are not set
2025-10-21 18:55:08 +02:00
Tim Ledbetter
eb44cca5bd
LibWeb: Ignore non-finite shadow offset values
2025-10-21 18:55:08 +02:00
Tim Ledbetter
b99c0c6a7f
LibWeb: Account for paint style and global alpha when drawing shadows
2025-10-21 18:55:08 +02:00
Tim Ledbetter
494fcc40ac
LibWeb: Account for transforms in isPointInPath()
2025-10-21 17:42:28 +02:00
Tim Ledbetter
d3ca038b2c
LibWeb: Ensure putImageData() is unaffected by drawing state
2025-10-21 09:52:16 +02:00
Tim Ledbetter
2ac4544a81
LibWeb: Align CanvasRenderingContext2D::putImageData() with the spec
...
This change implements `putImageData()` with `dirtyX`, `dirtyY`,
`dirtyWidth` and `dirtyHeight` arguments.
2025-10-21 09:52:16 +02:00
Lorenz A
eeef370902
LibWeb: Check that elements are HTML elements in StackOfOpenElements
2025-10-20 12:14:14 +01:00
Tim Ledbetter
08641c9e15
LibWeb: Ensure CanvasPath::arc() nonfinite radius argument is ignored
2025-10-20 12:12:16 +01:00
Tim Ledbetter
303ebc0a67
LibWeb: Ignore non-finite arguments to canvas text drawing methods
2025-10-20 12:12:16 +01:00
ljamar
7fb65283c2
LibWeb: Ignore non-finite args in CanvasRenderingContext2D::clear_rect()
2025-10-17 17:41:58 +01:00
Tim Ledbetter
24a7eac4ab
LibWeb: Delay module script execution until current script has ended
2025-10-16 16:46:48 +02:00
Lorenz A
e73e0b3c92
LibWeb: Implement CSS decode bytes algo
2025-10-16 16:44:42 +02:00
ayeteadoe
0d5136ae5c
LibWeb: Add support for bitmap scaling in createImageBitmap()
2025-10-14 12:19:33 +02:00
ayeteadoe
05f3bd0fa8
Tests/LibWeb: Import several scaling createImageBitmap() tests
2025-10-14 12:19:33 +02:00
Lorenz A
e6831003c6
LibWeb: Check for Svg & MathML tags in stack of open elements scope
...
list & button scope need to check svg & mathml elements besides the list
from s_base_list see
https://html.spec.whatwg.org/multipage/parsing.html#has-an-element-in-the-specific-scope
2025-10-10 12:09:20 +01:00
lukasxcs
c1ff2a845c
LibWeb: Implement DataTransfer.set_data()
2025-10-10 08:02:16 +01:00
Lorenz A
6f31d9a40d
LibWeb: Ensure Noah's Ark clause is called in the Parser
2025-10-09 12:24:45 +01:00
Feng Yu
fd3c69227f
LibWeb/HTML: Implement focus restoration in HTMLDialogElement
...
When a dialog is closed, restore focus to the previously focused
element if focus is within the dialog or if the dialog was modal.
2025-10-03 08:55:53 +02:00
Shannon Booth
c1d022523b
LibWeb/HTML: Enforce width and height range for OffscreenCanvas
...
We should be throwing a TypeError on values outside of the range
for an unsigned long instead of the default modulo behaviour.
2025-09-22 12:37:30 +01:00
Shannon Booth
e3b5507113
LibWeb/HTML: Avoid crash for extreme bitmap sizes in OffscreenCanvas
2025-09-22 12:37:30 +01:00
Lorenz A
47796e7967
LibWeb: Serialize HTML attribute names as per spec
2025-09-15 10:08:12 +02:00
Jelle Raaijmakers
9e9db9a9dd
LibWeb: Store correct text offsets in PaintableFragment
...
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
Tim Ledbetter
d9341adb1e
LibWeb: Implement DataTransferItemList.remove()
2025-09-12 12:30:33 +02:00