Halil Durak
39352a6bda
refactor SubtleCrypto
...
I've been thinking the implementation here is messy (ever since we added support for it) and thought it would be better to separate each algorithm to their respective files in order to maintain in a long run. `digest` is also refactored to prefer libcrypto instead of std.
2026-03-24 16:04:50 +03:00
Halil Durak
0838b510f8
src/crypto.zig -> src/sys/libcrypto.zig
...
Now that we have `sys/`, I think this makes more sense.
2026-03-24 16:04:49 +03:00
Karl Seguin
b19f30d865
Start allowing some cross-origin scripting.
...
There are a few things allowed in cross origin scripting, the most important
being window.postMessage and window.parent.
This commit changes window-returning functions (e.g. window.top, window.parent
iframe.contentWindow) from always returning a *Window, to conditionally
returning a *Window or a *CrossOriginWindow. The CrossOriginWindow only allows
a few methods (e.g. postMessage).
2026-03-24 19:27:55 +08:00
Karl Seguin
35be9f897f
Improve async tests
...
testing.async(...) is pretty lame. It works for simple cases, where the
microtask is very quickly resolved, but otherwise can't block the test from
exiting.
This adds an overload to testing.async and leverages the new Runner
https://github.com/lightpanda-io/browser/pull/1958 to "tick" until completion
(or timeout).
The overloaded version of testing.async() (called without a callback) will
increment a counter which is only decremented with the promise is resolved. The
test runner will now `tick` until the counter == 0.
2026-03-24 17:21:39 +08:00
Karl Seguin
d517488158
Merge pull request #1979 from lightpanda-io/dash-command-line-arguments
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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 / zig build release (push) Has been cancelled
wpt / build wpt runner (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
Support (and prefer) dash-separated command line arguments
2026-03-24 17:12:09 +08:00
Karl Seguin
fee8fe7830
Merge pull request #1978 from lightpanda-io/eventually_rename_onload
...
Rename testing.eventually to testing.onload, to make it more clear
2026-03-24 17:11:49 +08:00
Karl Seguin
428190aecc
Merge pull request #1972 from lightpanda-io/fix-issue-1970
...
Fix Expo Web crash by gracefully handling at-rules in CSSStyleSheet.insertRule
2026-03-24 13:52:09 +08:00
Karl Seguin
61dabdedec
Support (and prefer) dash-separated command line arguments
...
--log_level -> --log-level
Underscored arguments are still supported for backwards compatibility.
2026-03-24 12:55:08 +08:00
Karl Seguin
dfd9f216bd
Rename testing.eventually to testing.onload, to make it more clear
2026-03-24 12:21:46 +08:00
Adrià Arrufat
567cd97312
webapi.Element: centralize disabled state logic
2026-03-24 13:13:53 +09:00
Adrià Arrufat
0bfe00bbb7
css: disallow multiple rules in insertRule
2026-03-24 12:53:49 +09:00
Adrià Arrufat
260768463b
Merge branch 'main' into osc/feat-mcp-detect-forms
2026-03-24 09:25:47 +09:00
Adrià Arrufat
fd96cd6eb9
chore(css): log unimplemented at-rules in insertRule
2026-03-24 09:20:21 +09:00
Adrià Arrufat
25a7b5b778
Merge pull request #1977 from lightpanda-io/check_dirty_once
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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
Only check StyleSheet dirty flag at the start (once) of operation
2026-03-24 09:12:10 +09:00
Karl Seguin
d4bcfa974f
Only check StyleSheet dirty flag at the start (once) of operation
2026-03-24 07:55:11 +08:00
Karl Seguin
c91eac17d0
Merge pull request #1975 from lightpanda-io/percent-encode-path
...
fix: percent-encode pathname in URL.setPathname per URL spec
2026-03-24 07:41:27 +08:00
Karl Seguin
5c79961bb7
Merge pull request #1969 from lightpanda-io/fix_append_child_crash
...
Handle `appendAllChildren` mutating the list of children
2026-03-24 07:29:16 +08:00
Karl Seguin
a0c200bc49
Merge pull request #1968 from lightpanda-io/document_write_deleted_parent
...
Handle nested document.write where parent gets deleted
2026-03-24 07:29:08 +08:00
Karl Seguin
9ea39e1c34
Merge pull request #1967 from lightpanda-io/css_anchor_normalization
...
Anchor(...) css property normalization
2026-03-24 07:28:59 +08:00
Karl Seguin
f7125d2bf3
Merge pull request #1964 from lightpanda-io/currentSrc
...
Add Image.currentSrc and Media.currentSrc
2026-03-24 07:28:51 +08:00
Karl Seguin
b163d9709b
Merge pull request #1959 from lightpanda-io/form_iterator
...
Expose form.iterator()
2026-03-24 07:28:31 +08:00
Karl Seguin
5453630955
Merge pull request #1958 from lightpanda-io/runner
...
Extract Session.wait into a Runner
2026-03-24 07:28:18 +08:00
Pierre Tachoire
8ada67637f
fix: precent-encode hash and search
2026-03-23 17:22:50 +01:00
Adrià Arrufat
5972630e95
Update CSS parser to track skipped at-rules and refine insertRule logic
2026-03-24 00:54:20 +09:00
Pierre Tachoire
58c18114a5
fix: percent-encode pathname in URL.setPathname per URL spec
...
URL.setPathname() inserted the value verbatim without percent-encoding,
so `url.pathname = "c d"` produced `http://a/c d` instead of
`http://a/c%20d `. This caused sites using URL polyfills (e.g. Angular's
polyfills bundle) to detect broken native URL support and fall back to a
polyfill that relies on HTMLInputElement.checkValidity(), which is not
implemented — crashing the entire app bootstrap.
2026-03-23 16:52:39 +01:00
Pierre Tachoire
a94b0bec93
Merge pull request #1946 from lightpanda-io/cdp-response-body
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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 / zig build release (push) Has been cancelled
wpt / build wpt runner (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
Encode non-utf8 Network.getResponseBody in base64
2026-03-23 16:46:12 +01:00
Adrià Arrufat
ff0fbb6b41
Fix Expo Web crash by gracefully handling at-rules in CSSStyleSheet.insertRule
2026-03-23 23:45:11 +09:00
Pierre Tachoire
797cae2ef8
encode captured response body during CDP call
2026-03-23 14:26:27 +01:00
Karl Seguin
433c03c709
Handle appendAllChildren mutating the list of children
...
`appendAllChildren` iterates through the children, but when a child is appended
it can mutate the DOM (only via a custom element connected callback AFAIK) which
can render the iterator invalid. Constantly get parent.firstChild() as the
target.
2026-03-23 21:16:11 +08:00
Karl Seguin
4d3e9feaf4
Handle nested document.write where parent gets deleted
...
Handles a real life case where a nested document.write mutates the DOM in a way
where there outer document.write loses its parent.
2026-03-23 21:00:02 +08:00
Karl Seguin
5700e214bf
Merge pull request #1966 from lightpanda-io/mcp_tools_test
...
Improve MCP tools test
2026-03-23 20:47:42 +08:00
Karl Seguin
88d40a7dcd
Anchor(...) css property normalization
...
Expands on https://github.com/lightpanda-io/browser/pull/1754 to do for
anchor(...) what we did for anchor-size(...)
fixes a number of WPT tests in:
/css/css-anchor-position/anchor-parse-valid.html
2026-03-23 20:32:03 +08:00
Karl Seguin
ff209f5adf
Merge pull request #1955 from lightpanda-io/advertise_host
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / wba-demo-scripts (push) Has been cancelled
e2e-test / wba-test (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 fmt (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
Add --advertise_host option to serve command
2026-03-23 20:00:42 +08:00
Pierre Tachoire
8ad092a960
Merge pull request #1965 from lightpanda-io/katie-lpd-patch-1
...
Update README.md
2026-03-23 12:20:16 +01:00
Karl Seguin
0fcdc1d194
Improve MCP tools test
...
Add helper to navigate to page, to reduce the boilerplate in each test.
Reduce waitForSelector time from 200ms to 20ms to speed up tests.
2026-03-23 19:15:50 +08:00
Karl Seguin
60c2359fdd
Merge pull request #1797 from lightpanda-io/css-improvements
...
Implement CSSOM and Enhanced Visibility Filtering
2026-03-23 19:11:35 +08:00
katie-lpd
08c8ba72f5
Update README.md
...
Update benchmark images and text to real benchmark over the network
2026-03-23 12:05:44 +01:00
Karl Seguin
cfa4201532
Add Image.currentSrc and Media.currentSrc
2026-03-23 18:20:15 +08:00
Karl Seguin
cb02eb000e
Merge pull request #1961 from lightpanda-io/test_runner_fail_summary
...
Print summary of failed tests name at end of test runner
2026-03-23 18:13:37 +08:00
Karl Seguin
23334edc05
Merge pull request #1963 from lightpanda-io/nested_navigation
...
Use double-queue to better support recursive navigation
2026-03-23 18:13:18 +08:00
Karl Seguin
8dbe22a01a
Use double-queue to better support recursive navigation
...
Enqueuing while processing the navigation queue is rare, but apparently can
happen. The most likely culprit is the microqueue task being processed which
enqueues a new navigation (e.g. when a promise resolves).
This was never well handled, with the possibility of a use-after-free or of
skipping the new navigation. This commit introduces a double queue, which is
swapped at the start of processing, so that we always have 1 list for queueing
new navigation requests, and one list that we're currently processing.
2026-03-23 18:00:04 +08:00
Adrià Arrufat
80235e2ddd
test: fix scoping bug in frames test causing spurious failures
2026-03-23 16:04:21 +09:00
Karl Seguin
2abed9fe75
Print summary of failed tests name at end of test runner
...
Helps to see, at a glance, which test failed without having to scroll up through
the list.
2026-03-23 15:00:51 +08:00
Matt Van Horn
35551ac84e
fix: add disabled flag, external form fields, and param ordering
...
Address review feedback from @karlseguin:
1. Use Form.getElements() instead of manual TreeWalker for field
collection. This reuses NodeLive(.form) which handles fields
outside the <form> via the form="id" attribute per spec.
2. Add disabled detection: checks both the element's disabled
attribute and ancestor <fieldset disabled> (with first-legend
exemption per spec). Fields are flagged rather than excluded -
agents need visibility into disabled state.
3. allocator is now the first parameter in collectForms/helpers.
4. handleDetectForms returns InvalidParams on bad input instead
of silently swallowing parse errors.
5. Added tests for disabled fields, disabled fieldsets, and
external form fields via form="id".
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-22 23:31:59 -07:00
Adrià Arrufat
c3a2318eca
fix: pass allocator as first parameter in forms.zig
2026-03-23 15:27:49 +09:00
Adrià Arrufat
a6e801be59
forms: casting
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-03-23 15:12:16 +09:00
Adrià Arrufat
0bbe25ab5e
forms: casting
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-03-23 15:12:02 +09:00
Adrià Arrufat
c37286f845
forms: casting
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-03-23 15:11:47 +09:00
Karl Seguin
34079913a3
Expose form.iterator()
...
Meant to help things like https://github.com/lightpanda-io/browser/pull/1951
Small optimization to form node_live iterator
Disable iframes test (not related, but they are super-flaky, and I'm tired of
CI's failing because of it. I'll look at them later today).
2026-03-23 13:12:22 +08:00
Adrià Arrufat
4f1b499d0f
zig fmt
2026-03-23 13:52:28 +09:00