Commit Graph
2938 Commits
Author SHA1 Message Date
Karl Seguin e88473d090 add missing checkVisibility options 2025-09-29 12:04:11 +08:00
Pierre Tachoire 220775715d Merge pull request #1094 from lightpanda-io/wpt-debug
ci: use debug mode for WPT tests
2025-09-26 13:54:17 +02:00
Pierre Tachoire ecbf52157b ci: use debug mode for WPT tests 2025-09-26 13:33:13 +02:00
Pierre Tachoire a579977f66 Merge pull request #1086 from lightpanda-io/history
Implement `History` WebAPI.
2025-09-26 12:15:07 +02:00
Karl Seguin f236a65a79 Merge pull request #1092 from lightpanda-io/nikneym/insert-adjacent-html
Support `Element#insertAdjacentHTML`
2025-09-26 14:51:08 +08:00
nikneym f7b08a1160 prefer orelse return instead of orelse unreachable 2025-09-26 09:43:30 +03:00
Muki Kiboigo 9992bd0999 clean up history api 2025-09-25 12:33:30 -07:00
nikneym 6912175e7e prefer $ instead of document.querySelector 2025-09-25 19:30:10 +03:00
nikneym a59c32757e assert that nodes exist 2025-09-25 19:29:44 +03:00
nikneym 2438a0e60b fix comment 2025-09-25 19:17:08 +03:00
nikneym a850a902ce make sure parent is not Document in beforebegin and afterend 2025-09-25 15:04:26 +03:00
nikneym b7ba993ba6 improve insertAdjacentHTML test 2025-09-25 14:42:58 +03:00
nikneym 3eb0d57d5b correct element insertation in insertAdjacentHTML
* also DRY since the loop is repeated multiple times.
2025-09-25 14:41:50 +03:00
Karl Seguin 92226a8d06 Merge pull request #1090 from lightpanda-io/script_data_url_test
add script dataurl test
2025-09-25 10:15:47 +08:00
Karl Seguin 134424dfdc add script dataurl test 2025-09-25 08:18:59 +08:00
Karl Seguin 58ceb66452 Merge pull request #1089 from lightpanda-io/fix-datauri
fix data uri scripts
2025-09-25 08:15:36 +08:00
nikneym 902b8fc789 add insertAdjacentHTML test 2025-09-24 20:26:05 +03:00
nikneym 923491a510 make ref_node of nodeInsertBefore nullable 2025-09-24 20:21:48 +03:00
nikneym 255b45d07b initial insertAdjacentHTML attempt 2025-09-24 20:21:08 +03:00
Pierre Tachoire 8f68b5b289 fix data uri scripts 2025-09-24 17:29:23 +02:00
Pierre Tachoire eff7d58f4b Merge pull request #1087 from lightpanda-io/fix-beyboardevent
fix pointer parameter into KeyboardEvent contructor
2025-09-24 09:56:47 +02:00
Pierre Tachoire 17e9bdf8e8 fix pointer parameter into MouseEvent contructor 2025-09-24 09:40:24 +02:00
Pierre Tachoire 22d2694b71 fix pointer parameter into KeyboardEvent contructor 2025-09-24 09:29:37 +02:00
Muki Kiboigo e74d7fa454 add popstate event for History 2025-09-24 00:22:20 -07:00
Muki Kiboigo 464f42a121 add history tests 2025-09-24 00:21:16 -07:00
Muki Kiboigo 05e7079178 functional history WebAPI 2025-09-24 00:21:16 -07:00
Muki Kiboigo f03fcc9a31 support for returning Env.Value 2025-09-24 00:21:16 -07:00
Muki Kiboigo c3ad054bb3 add toJson object and fromJson value 2025-09-24 00:21:16 -07:00
Karl Seguin 202e137d77 Merge pull request #1084 from lightpanda-io/slotchange
Dispatch slotchange event
2025-09-24 09:23:28 +08:00
Karl Seguin 6b35664e37 Merge pull request #1079 from lightpanda-io/dynamic_import_caching
Dynamic import caching
2025-09-24 09:23:16 +08:00
Karl Seguin 1a7dbd56ac Dispatch slotchange event
The first time a `slotchange` event is registered, we setup a SlotChangeMonitor
on the page. This uses a global (ugh) MutationEvent to detect slot changes.

We could improve the perfomance of this by installing a MutationEvent per
custom element, but a global is obviously a lot easier.

Our MutationEvent currently fired _during_ the changes. This is problematic
(in general, but specifically for slotchange). You can image something like:

```
slot.addEventListener('slotchange', () => {
   // do something with slot.assignedNodes()
});
```

But, if we dispatch the `slotchange` during the MutationEvent, assignedNodes
will return old nodes. So, our SlotChangeMonitor uses the page scheduler to
schedule dispatches on the next tick.
2025-09-23 17:41:05 +08:00
Karl Seguin 1a40853aae Merge pull request #1082 from lightpanda-io/response_type
Set Response.type to basic on same-origin requests
2025-09-23 14:23:16 +08:00
Karl Seguin 6bad2b16e4 Set Response.type to basic on same-origin requests 2025-09-23 11:35:51 +08:00
Karl Seguin db166b4633 Merge pull request #1081 from lightpanda-io/nikneym/link-rel
Add `rel` property to `HTMLLinkElement`
2025-09-22 22:35:34 +08:00
nikneym 71bc624a74 add a link element test 2025-09-22 16:35:06 +03:00
nikneym 907a941795 add rel setter to HTMLLinkElement 2025-09-22 16:34:37 +03:00
Pierre Tachoire 559783eed7 Merge pull request #1080 from lightpanda-io/bump-netsurf
update libdom version
2025-09-22 14:26:24 +02:00
nikneym 68585c8837 add rel getter to HTMLLinkElement 2025-09-22 15:08:07 +03:00
Pierre Tachoire eccbc9d9b3 update libdom version 2025-09-22 11:19:28 +02:00
Karl Seguin e7d1d55170 update zig-v8-fork 2025-09-22 15:19:28 +08:00
Karl Seguin f04754c254 Correct dynamic module loading/caching
Refactors some of the module loading logic. Both normal modules import and
dynamic module import now share more of the same code - they both go through
the slightly modified `module` function.

Dynamic modules now check the cache first, before loading, and when cached,
resolve the correct promise. This can now happen regardless of the module
loading state.

Also tried to replace some page arenas with call arenas and added some basic
tests for both normal and dynamic module loading.
2025-09-22 15:15:00 +08:00
Karl Seguin a8e5a48b87 Merge pull request #1074 from lightpanda-io/cdp-nodeid
cdp: start nodeId from 1 instead of 0
2025-09-20 07:21:20 +08:00
Pierre Tachoire 283a9af406 cdp: start nodeId from 1 instead of 0
chromedp expects the nodeId starts to 1.
A start to 0 make it enter in infinite loop b/c it expects the Go's
default int, ie 0, to be nil from a map to stop the loop.
If the 0 index is set, it will loop...
2025-09-19 17:58:37 +02:00
Karl Seguin e3896455db Merge pull request #1073 from lightpanda-io/increase_mimalloc_get_rss_buffer
Seems 4K isn't always enough
2025-09-19 19:38:28 +08:00
Karl Seguin 5e6d2700a2 Merge pull request #1070 from lightpanda-io/dump_strip_mode
Replace --noscript with more advanced --strip_mode
2025-09-19 19:25:06 +08:00
Karl Seguin dfd0dfe0f6 Seems 4K isn't always enough 2025-09-19 19:22:02 +08:00
Pierre Tachoire e6b9be5020 Merge pull request #1072 from lightpanda-io/assert_corretly_set_exit_when_done
Ensure extra_socket can't happen when exit_when_done == true
2025-09-19 12:20:33 +02:00
Pierre Tachoire 6f7c87516f Merge pull request #1067 from lightpanda-io/more_testing_metrics
Add libdom RSS and v8 total_physical_size to testing --json output
2025-09-19 12:16:47 +02:00
Pierre Tachoire 516a78326d Merge pull request #1066 from lightpanda-io/nikneym/relaxed-post-message
Relaxed `MessagePort.postMessage`
2025-09-19 11:14:35 +02:00
Karl Seguin 853b7f84ef Ensure extra_socket can't happen when exit_when_done == true
exit_when_done is pretty much a sneaky way to get CDP knowledge into the page.
exit_when_done == true means "this isn't a CDP session".

extra_socket is another sneaky weay to get CDP knowledge into the page. When
we get an `extra_socket` message it means "Return control to the CDP server".

Therefore it should be impossible to get an `extra_socket` message (return to
CDP) when `exit_when_done == true` (this isn't a CDP session).
2025-09-19 16:59:36 +08:00