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
egrs
c66d74e135
clarify comment: images are in broken state, not fully fetched
2026-02-18 10:42:01 +01:00
egrs
54d6eed740
fix type check: case-insensitive, accept empty string, clear on disconnect
...
Per spec, valid type values are absent, empty string, or a
case-insensitive match for "text/css". Also clear cached sheet
when the element is disconnected or type becomes invalid.
2026-02-18 10:40:42 +01:00
Nikolay Govorov
dc4b75070d
Increases the memory limit on CI :/
2026-02-18 09:23:37 +00:00
egrs
830eb74725
track playing state: only dispatch playing on first start
...
Per review: playing event should only fire on first start, not
on every resume from pause. Add _playing field, reset on load().
2026-02-18 10:22:49 +01:00
Nikolay Govorov
4f21d8d7a8
Implement multi-cdp architecture
2026-02-18 09:22:31 +00:00
Nikolay Govorov
424deb8faf
Run cdp client on dedicated thread
2026-02-18 09:22:29 +00:00
Nikolay Govorov
b4a40f1257
Move IO loops from Server to cdp Client
2026-02-18 09:22:27 +00:00
Nikolay Govorov
9296c10ca4
Use per-cdp connection HttpClient
2026-02-18 09:22:26 +00:00
Nikolay Govorov
fbe65cd542
Use std.Atomic.Value in Server instead of direct atomic operations
2026-02-18 09:22:24 +00:00
Nikolay Govorov
ccbb6e4789
Make ArenaPool, Robots and Env thread safety
2026-02-18 09:22:23 +00:00
Nikolay Govorov
d70f436304
Fix use-after-free in Fetch
2026-02-18 09:22:21 +00:00
Nikolay Govorov
16aaa8201c
Drop unused config opts
2026-02-18 09:22:18 +00:00
Karl Seguin
acc1f2f3d7
Merge pull request #1578 from lightpanda-io/detach_attached_parsed_node
...
Detach attached nodes on appendBeforeSibling callback
2026-02-18 15:42:13 +08:00
egrs
433d254c70
add HTMLImageElement.complete property
...
Per spec, complete returns true when the image has no src, is fully
fetched, or is broken. Since this is a headless browser that does
not fetch images, complete always returns true.
2026-02-18 08:18:54 +01:00
egrs
ea4eebd2d6
return CSSStyleSheet from HTMLStyleElement.sheet
...
Per spec, connected style elements with type text/css should
return a CSSStyleSheet object. Previously always returned null.
The sheet is lazily created and cached on first access.
2026-02-18 08:11:08 +01:00
Karl Seguin
3c00a527dd
Merge pull request #1574 from egrs/performance-observer-buffered
...
Support buffered option in PerformanceObserver.observe()
2026-02-18 14:48:15 +08:00
egrs
f72a354066
address review: clear marks before test, assert exactly 2
2026-02-18 07:15:17 +01:00
egrs
7c92e0e9ce
address review: fix doc comment, skip buffered if already queued
2026-02-18 07:14:12 +01:00
Karl Seguin
4f6868728d
Detach attached nodes on appendBeforeSibling callback
...
html5ever generally makes guarantees about nodes being parentless when
appending, but we've already seen 1 case where appendCallback receives a
connected node.
We're now seeing something in appendBeforeSiblingCallback, but we have a clearer
picture of how this is happening. In this case, it's via custom element
upgrading and the custom element constructor has already placed the node in
the document.
It's worth pointing, html5ever just has an opaque reference to our node. While
it guarantees that it will give us parent-less nodes, it doesn't actually know
anything about our nodes, or our node._parent. The guarantee is only from its
own point of view. There's nothing stopping us from giving a node a default
parent as soon as html5ever asks us to create a new node, in which case, the
node _will_ have a parent.
2026-02-18 10:52:51 +08:00
Adrià Arrufat
0ec4522f9e
Update test with new --dump flag
2026-02-18 11:39:14 +09:00
Adrià Arrufat
c6e0c6d096
Simplify tests in markdown
2026-02-18 11:20:22 +09:00
Adrià Arrufat
dc0fb9ed8a
Remove unused import in markdown
2026-02-18 11:04:12 +09:00
Adrià Arrufat
66d9eaee78
Simplify block element rendering in Markdown
2026-02-18 11:01:00 +09:00
Karl Seguin
3797272faf
Merge pull request #1576 from lightpanda-io/navigation-is-event-target
...
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
Navigation is the EventTarget
2026-02-18 07:33:48 +08:00
Karl Seguin
682b302d04
Merge pull request #1573 from egrs/response-statustext
...
Populate Response.statusText for network responses
2026-02-18 07:28:55 +08:00
Karl Seguin
1de10f9b05
Merge pull request #1572 from egrs/intersection-observer-timestamp
...
Use performance.now() for IntersectionObserverEntry.time
2026-02-18 07:21:57 +08:00
Muki Kiboigo
c4391ff058
refactor modifyBy implementations
2026-02-17 12:11:29 -08:00
Muki Kiboigo
3822e3f8d9
pass selection/modify-extend-word-trailing-inline-block.tentative.html
2026-02-17 12:02:34 -08:00
Muki Kiboigo
f8f99f3878
pass selection/modify.tentative.html
2026-02-17 11:58:13 -08:00
Muki Kiboigo
e77e4acea9
add tests for Selection.modify
2026-02-17 11:50:38 -08:00
Muki Kiboigo
c6de444d0b
add support for Selection.modify
2026-02-17 11:50:30 -08:00
Muki Kiboigo
89e38c34b8
remove NavigationEventTarget
2026-02-17 11:13:39 -08:00
Muki Kiboigo
246d17972c
add standaloneEventTarget to the Factory
2026-02-17 11:13:27 -08:00
Pierre Tachoire
55a8b37ef8
Merge pull request #1575 from lightpanda-io/remove-merge-marker
...
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
remove merge marker from test file
2026-02-17 18:29:12 +01:00
Pierre Tachoire
445183001b
remove merge marker from test file
2026-02-17 18:27:54 +01:00
egrs
ca9e2200da
use async delivery for buffered performance observer entries
...
Per spec, buffered entries should be delivered via a queued task,
not synchronously. Extract scheduling logic into
schedulePerformanceObserverDelivery() and use it from both
notifyPerformanceObservers and the buffered observe path.
2026-02-17 18:16:42 +01:00
Pierre Tachoire
eba3f84c04
Merge pull request #1569 from egrs/cdp-cookie-size
...
add cookie size to CDP response
2026-02-17 17:57:47 +01:00
Pierre Tachoire
867e6a8f4b
Merge pull request #1566 from egrs/mouseevent-buttons-property
...
implement MouseEvent.buttons property
2026-02-17 17:57:30 +01:00
egrs
df9779ec59
restrict buffered option to type-based observation per spec
...
The buffered option is only valid with the type option, not entryTypes,
per the Performance Observer specification.
2026-02-17 16:12:20 +01:00
egrs
1b71d1e46d
fix playing event: only dispatch on paused-to-playing transition
...
Per MDN, playing fires "after playback is first started, and whenever
it is restarted." A second play() while already playing should be a
no-op. Both play and playing now only fire on the paused -> playing
transition.
2026-02-17 16:10:49 +01:00