Pierre Tachoire
d75f5f9231
don't play animation when startTime is set to null
2026-02-19 10:41:07 +01:00
Pierre Tachoire
9939797792
fix comment
2026-02-19 10:36:29 +01:00
Pierre Tachoire
5248b9fc6f
Update src/browser/webapi/animation/Animation.zig
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-02-19 10:35:46 +01:00
Pierre Tachoire
e15295bdac
Merge pull request #1560 from arrufat/dump-markdown
...
Add support for dumping output to markdown
v0.2.4
2026-02-19 10:32:57 +01:00
Karl Seguin
4e1f96e09c
Merge pull request #1597 from lightpanda-io/CSSStyleProperties_setNamed
...
add CSSStyleProperties array set support
2026-02-19 17:30:54 +08:00
Halil Durak
96cfdebced
ImageData#constructor: check bounds of dimensions + don't overflow size
...
Also adds a related `too-large` test.
2026-02-19 12:09:24 +03:00
Halil Durak
944f34b833
createImageData: remove unnecessary unreachable
2026-02-19 12:09:24 +03:00
Halil Durak
1023b2ca9c
test blocks need at least a single assertion
2026-02-19 12:09:24 +03:00
Halil Durak
16318bb9f6
add tests
2026-02-19 12:09:24 +03:00
Halil Durak
350586335d
add createImageData and putImageData to CanvasReneringContext2D
2026-02-19 12:09:23 +03:00
egrs
9d809499a5
fix input value defaults, color normalization, and event propagation resets
...
- checkbox/radio getValue() returns "on" when no value attribute set
- color input sanitization normalizes hex to lowercase per spec
- initial input value is sanitized per input type during element creation
- initEvent resets both stop_propagation and stop_immediate_propagation
- dispatchNode resets propagation flags after dispatch per DOM spec step 12
2026-02-19 09:53:13 +01:00
Pierre Tachoire
fdd52c17d7
add CSSStyleProperties array set support
2026-02-19 09:52:27 +01:00
Pierre Tachoire
1461d029db
Improve Animation support: async update from idle => running => finished
2026-02-19 09:50:16 +01:00
Karl Seguin
07cefd71df
Merge pull request #1571 from lightpanda-io/nikneym/persisted-typed-arrays
...
Persisted typed arrays
2026-02-19 15:46:10 +08:00
Halil Durak
abab10b2cc
move createTypedArray to Local
2026-02-19 10:03:04 +03:00
Karl Seguin
e37d4a6756
Fix flaky window.scrollTo test
...
The test is sensitive to any delay in running the schedule task exactly when
it's scheduled. Testing this feature isn't worth making the build flaky.
2026-02-19 14:15:19 +08:00
Karl Seguin
e2a1ce623c
Rework CDP frameIds (and loaderIds and requestIds and interceptorIds)
...
Our BrowsingContext currently supports 1 target. So we have a per-BC target_id.
Previously, our target had 1 "frame" - our page. So we often treated the
targetId as the frameId. But to work with frames, we need page-specific
frameIds and loaderIds.
This tries to clean up our ids (a little). frameIds are now ids derived from
a new incrementing page.id. This page.id has to be passed around (via http
Requests and through notifications) in order to properly generate messages with
a frameId.
2026-02-19 13:01:41 +08:00
Karl Seguin
0ff243266c
make element.focus() noop when element is disconnected
2026-02-19 10:35:11 +08:00
Karl Seguin
645da2e307
Reduce cost of various Element render-related properties.
...
Added a get-only `getStyle` which doesn't lazily create a new style if none
exists. This can be used in the (frequently used) `checkVisibility` to avoid
an allocation. Added a specialized getBoundingClientRectForVisible which
skips the checkVisibility check, since a few callers have already done their
own visibility check.
DOMRect is now off the heap. This avoids _a lot_ of allocation when a DOMRect
is only needed for internal calculation, e.g. in Document.elementFromPoint.
2026-02-19 09:45:56 +08:00
Karl Seguin
5fd95788f9
Merge pull request #1585 from egrs/focusin-focusout-events
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
dispatch focusin/focusout events with relatedTarget
2026-02-19 08:15:54 +08:00
Karl Seguin
bd29f168e0
Merge pull request #1590 from egrs/range-tostring-fix
...
fix Range.toString() for cross-container and element ranges
2026-02-19 08:08:25 +08:00
Karl Seguin
dc97e33cd6
Merge pull request #1591 from lightpanda-io/input_and_window_test
...
Remove duplicate window test
2026-02-19 07:59:31 +08:00
Karl Seguin
caf7cb07cd
Remove duplicate window test
...
Re-enable some commented out input tests
2026-02-19 07:47:00 +08:00
Karl Seguin
ad5df53ee7
Merge pull request #1583 from egrs/window-htmlelement-input-props
...
add window stubs, HTMLElement hidden/tabIndex, input attribute reflections
2026-02-19 07:44:36 +08:00
Halil Durak
95920bf207
ArrayBufferRef(...).Global: consistent, persisted typed arrays
2026-02-18 21:43:19 +03:00
egrs
6700166841
fix Range.toString() for cross-container and element ranges
...
implement proper tree-walking in writeTextContent to handle all cases:
same-element containers, cross-container ranges, and comment exclusion.
uncomment ~800 lines of Range tests and add 5 new toString tests.
2026-02-18 16:25:34 +01:00
Karl Seguin
b8196cd06e
Merge pull request #1588 from egrs/click-to-focus
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
e2e-integration-test / zig build release (push) Has been cancelled
e2e-integration-test / demo-integration-scripts (push) Has been cancelled
click on focusable elements calls focus() with events
2026-02-18 23:12:21 +08:00
egrs
c28afbf193
address review feedback: move stubs test, inline bridge functions, catch unreachable
2026-02-18 15:40:59 +01:00
egrs
84ffffb3f3
dispatch select event from input.select() and textarea.select()
2026-02-18 15:31:52 +01:00
egrs
b2c030140c
click on focusable elements calls focus() with events
...
handleClick() was setting _active_element directly, bypassing
Element.focus() — so no blur/focus events fired on click.
Now calls focus() for input, button, select, textarea, anchor.
2026-02-18 15:08:40 +01:00
Adrià Arrufat
92f131bbe4
Inline writeIndentation helper
2026-02-18 23:02:10 +09:00
Karl Seguin
338580087e
Add HTMLLabelElement.control getter
2026-02-18 21:59:15 +08:00
Pierre Tachoire
deda53a842
Merge pull request #1353 from lightpanda-io/wp/mrdimidium/multicontext
...
Use thread per connection
2026-02-18 14:59:15 +01:00
Pierre Tachoire
5391854c82
Merge pull request #1586 from lightpanda-io/makefile-typo-fix
...
typo fix
2026-02-18 14:51:46 +01:00
Pierre Tachoire
e288bfbec4
typo fix
2026-02-18 14:50:43 +01:00
egrs
377fe5bc40
add comment on _active_element ordering constraint
2026-02-18 14:50:20 +01:00
Adrià Arrufat
d264ff2801
Use attributes for checkbox rendering
2026-02-18 22:48:46 +09:00
egrs
a21bb6b02d
dispatch focusin/focusout events with relatedTarget
...
focus() and blur() now dispatch all four spec-required FocusEvents:
blur (no bubble) → focusout (bubbles) → focus (no bubble) → focusin (bubbles)
Each event carries the correct relatedTarget: the element gaining focus
for blur/focusout, and the element losing focus for focus/focusin.
All four events are composed per W3C spec.
Relates to #1161
2026-02-18 14:31:11 +01:00
egrs
37ecd5cdef
use textarea.innerInsert for selection-aware text insertion
...
Both insertText() and handleKeydown() were manually concatenating text
to the textarea value, ignoring the current selection range. This uses
the existing innerInsert() method which correctly handles full, partial,
and no-selection states — matching the Input element behavior.
2026-02-18 13:47:09 +01:00
egrs
07a87dfba7
fix tabIndex default for interactive elements per spec
...
interactive elements (input, button, a, select, textarea, iframe)
default to 0 when tabindex attribute is absent; others default to -1.
also add TODO for hidden "until-found" tristate.
2026-02-18 13:13:12 +01:00
egrs
9e4db89521
add window stubs, HTMLElement hidden/tabIndex, input attribute reflections
...
- Window: alert/confirm/prompt (no-op stubs), devicePixelRatio
- HTMLElement: hidden (boolean), tabIndex (integer)
- Input: placeholder, min, max, step, multiple, autocomplete
2026-02-18 13:04:12 +01:00
Karl Seguin
536d394e41
Merge pull request #1579 from egrs/style-element-sheet
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
e2e-test / browser fetch (push) Has been cancelled
zig-test / zig test using v8 in debug mode (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
return CSSStyleSheet from HTMLStyleElement.sheet
2026-02-18 19:59:38 +08:00
Karl Seguin
c0580c7ad0
Merge pull request #1581 from egrs/element-attribute-reflections
...
add attribute reflections for 8 HTML element types
2026-02-18 19:50:23 +08:00
egrs
488e72ef4e
wire up CSSStyleSheet.ownerNode to the style element
2026-02-18 12:41:31 +01:00
Karl Seguin
01c224d301
Merge pull request #1580 from egrs/image-complete
...
add HTMLImageElement.complete property
2026-02-18 19:02:07 +08:00
egrs
eaf95a85a8
fix OL.type default and TableCell span clamping per spec
...
OL.type returns "1" (not "") when attribute absent.
TableCell.colSpan clamps to 1-1000, rowSpan to 0-65534.
2026-02-18 12:00:44 +01:00
Pierre Tachoire
ba1d084660
Merge pull request #1570 from egrs/media-play-pause-events
...
Dispatch play, pause, and emptied events from HTMLMediaElement
2026-02-18 11:46:28 +01:00
egrs
2e64c461c3
add attribute reflections for 8 HTML element types
...
Wire up missing IDL properties for HTMLTimeElement (dateTime),
HTMLLIElement (value), HTMLOListElement (start, reversed, type),
HTMLOptGroupElement (disabled, label), HTMLQuoteElement (cite),
HTMLTableCellElement (colSpan, rowSpan), HTMLLabelElement (htmlFor),
and HTMLFieldSetElement (disabled, name).
2026-02-18 11:36:58 +01:00
Adrià Arrufat
ce5dad722f
Make --dump format optional and improve markdown rendering
2026-02-18 19:33:32 +09:00
egrs
7675feca91
revert _playing flag: playing event fires on every resume
...
Tested in Chrome (headless, --autoplay-policy=no-user-gesture-required):
playing fires on every pause-to-play transition, not just the first
time. The _playing flag was incorrectly suppressing this. Removed it
and updated tests to match verified Chrome behavior.
2026-02-18 10:49:27 +01:00