10 Commits

Author SHA1 Message Date
Pierre Tachoire
1d91d24b12 cdp: add browser permissions noop 2025-10-28 15:02:24 +01:00
Karl Seguin
07e603ecda Merge pull request #1186 from lightpanda-io/defer-module
module scripts are deferred by default
2025-10-28 18:36:54 +08:00
Pierre Tachoire
52fc2c365f use getList() to pick the right queue w/ inline scripts 2025-10-28 11:23:29 +01:00
Pierre Tachoire
8f3620adf0 modules are deferred by default 2025-10-28 09:17:57 +01:00
Karl Seguin
f7abf0956f Merge pull request #1184 from lightpanda-io/usage-fix
Some checks failed
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
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
add --log_filter_scopes usage
2025-10-28 10:07:34 +08:00
Karl Seguin
73217f7832 Merge pull request #1185 from lightpanda-io/fix-script-print-wait-analysis
fix printWaitAnalysis with queue name changes
2025-10-28 10:07:13 +08:00
Pierre Tachoire
52fb2010fc fix printWaitAnalysis with queue name changes 2025-10-27 17:50:30 +01:00
Pierre Tachoire
03ffcdb604 add --log_filter_scopes usage 2025-10-27 17:37:05 +01:00
Karl Seguin
20314fccec Merge pull request #1182 from lightpanda-io/navigation-file-fix
Some checks failed
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
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (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
Fix build issues related to Navigation
2025-10-27 23:08:01 +08:00
Muki Kiboigo
018e95bea7 rename navigation.zig to navigation/root.zig 2025-10-27 07:48:22 -07:00
9 changed files with 52 additions and 21 deletions

View File

@@ -228,9 +228,9 @@ pub fn addFromElement(self: *ScriptManager, element: *parser.Element, comptime c
if (source == .@"inline") { if (source == .@"inline") {
// if we're here, it means that we have pending scripts (i.e. self.scripts // if we're here, it means that we have pending scripts (i.e. self.scripts
// is not empty). Because the script is inline, it's complete/ready, but // is not empty). Because the script is inline, it's complete/ready, but
// we need to process them in order // we need to process them in order.
pending_script.complete = true; pending_script.complete = true;
self.scripts.append(&pending_script.node); pending_script.getList().append(&pending_script.node);
return; return;
} else { } else {
log.debug(.http, "script queue", .{ log.debug(.http, "script queue", .{
@@ -651,6 +651,12 @@ pub const PendingScript = struct {
return &self.manager.deferreds; return &self.manager.deferreds;
} }
// Module scripts are deferred by default.
// https://v8.dev/features/modules#defer
if (script.kind == .module) {
return &self.manager.deferreds;
}
return &self.manager.scripts; return &self.manager.scripts;
} }
}; };

View File

@@ -39,7 +39,7 @@ const ErrorEvent = @import("../html/error_event.zig").ErrorEvent;
const MessageEvent = @import("../dom/MessageChannel.zig").MessageEvent; const MessageEvent = @import("../dom/MessageChannel.zig").MessageEvent;
const PopStateEvent = @import("../html/History.zig").PopStateEvent; const PopStateEvent = @import("../html/History.zig").PopStateEvent;
const CompositionEvent = @import("composition_event.zig").CompositionEvent; const CompositionEvent = @import("composition_event.zig").CompositionEvent;
const NavigationCurrentEntryChangeEvent = @import("../navigation/navigation.zig").NavigationCurrentEntryChangeEvent; const NavigationCurrentEntryChangeEvent = @import("../navigation/root.zig").NavigationCurrentEntryChangeEvent;
// Event interfaces // Event interfaces
pub const Interfaces = .{ pub const Interfaces = .{

View File

@@ -16,7 +16,7 @@ const Interfaces = generate.Tuple(.{
@import("../storage/storage.zig").Interfaces, @import("../storage/storage.zig").Interfaces,
@import("../url/url.zig").Interfaces, @import("../url/url.zig").Interfaces,
@import("../xhr/xhr.zig").Interfaces, @import("../xhr/xhr.zig").Interfaces,
@import("../navigation/navigation.zig").Interfaces, @import("../navigation/root.zig").Interfaces,
@import("../xhr/form_data.zig").Interfaces, @import("../xhr/form_data.zig").Interfaces,
@import("../xhr/File.zig"), @import("../xhr/File.zig"),
@import("../xmlserializer/xmlserializer.zig").Interfaces, @import("../xmlserializer/xmlserializer.zig").Interfaces,

View File

@@ -32,12 +32,12 @@ const parser = @import("../netsurf.zig");
// https://developer.mozilla.org/en-US/docs/Web/API/Navigation // https://developer.mozilla.org/en-US/docs/Web/API/Navigation
const Navigation = @This(); const Navigation = @This();
const NavigationKind = @import("navigation.zig").NavigationKind; const NavigationKind = @import("root.zig").NavigationKind;
const NavigationHistoryEntry = @import("navigation.zig").NavigationHistoryEntry; const NavigationHistoryEntry = @import("root.zig").NavigationHistoryEntry;
const NavigationTransition = @import("navigation.zig").NavigationTransition; const NavigationTransition = @import("root.zig").NavigationTransition;
const NavigationEventTarget = @import("NavigationEventTarget.zig"); const NavigationCurrentEntryChangeEvent = @import("root.zig").NavigationCurrentEntryChangeEvent;
const NavigationCurrentEntryChangeEvent = @import("navigation.zig").NavigationCurrentEntryChangeEvent; const NavigationEventTarget = @import("NavigationEventTarget.zig");
pub const prototype = *NavigationEventTarget; pub const prototype = *NavigationEventTarget;
proto: NavigationEventTarget = NavigationEventTarget{}, proto: NavigationEventTarget = NavigationEventTarget{},

View File

@@ -35,8 +35,8 @@ const ScriptManager = @import("ScriptManager.zig");
const SlotChangeMonitor = @import("SlotChangeMonitor.zig"); const SlotChangeMonitor = @import("SlotChangeMonitor.zig");
const HTMLDocument = @import("html/document.zig").HTMLDocument; const HTMLDocument = @import("html/document.zig").HTMLDocument;
const NavigationKind = @import("navigation/navigation.zig").NavigationKind; const NavigationKind = @import("navigation/root.zig").NavigationKind;
const NavigationCurrentEntryChangeEvent = @import("navigation/navigation.zig").NavigationCurrentEntryChangeEvent; const NavigationCurrentEntryChangeEvent = @import("navigation/root.zig").NavigationCurrentEntryChangeEvent;
const js = @import("js/js.zig"); const js = @import("js/js.zig");
const URL = @import("../url.zig").URL; const URL = @import("../url.zig").URL;
@@ -488,16 +488,16 @@ pub const Page = struct {
} }
{ {
std.debug.print("\nprimary schedule: {d}\n", .{self.scheduler.primary.count()}); std.debug.print("\nhigh_priority schedule: {d}\n", .{self.scheduler.high_priority.count()});
var it = self.scheduler.primary.iterator(); var it = self.scheduler.high_priority.iterator();
while (it.next()) |task| { while (it.next()) |task| {
std.debug.print(" - {s} schedule: {d}ms\n", .{ task.name, task.ms - now }); std.debug.print(" - {s} schedule: {d}ms\n", .{ task.name, task.ms - now });
} }
} }
{ {
std.debug.print("\nsecondary schedule: {d}\n", .{self.scheduler.secondary.count()}); std.debug.print("\nlow_priority schedule: {d}\n", .{self.scheduler.low_priority.count()});
var it = self.scheduler.secondary.iterator(); var it = self.scheduler.low_priority.iterator();
while (it.next()) |task| { while (it.next()) |task| {
std.debug.print(" - {s} schedule: {d}ms\n", .{ task.name, task.ms - now }); std.debug.print(" - {s} schedule: {d}ms\n", .{ task.name, task.ms - now });
} }

View File

@@ -22,7 +22,7 @@ const Allocator = std.mem.Allocator;
const js = @import("js/js.zig"); const js = @import("js/js.zig");
const Page = @import("page.zig").Page; const Page = @import("page.zig").Page;
const NavigationKind = @import("navigation/navigation.zig").NavigationKind; const NavigationKind = @import("navigation/root.zig").NavigationKind;
const Browser = @import("browser.zig").Browser; const Browser = @import("browser.zig").Browser;
const NavigateOpts = @import("page.zig").NavigateOpts; const NavigateOpts = @import("page.zig").NavigateOpts;
const History = @import("html/History.zig"); const History = @import("html/History.zig");

View File

@@ -38,16 +38,22 @@ const DEV_TOOLS_WINDOW_ID = 1923710101;
pub fn processMessage(cmd: anytype) !void { pub fn processMessage(cmd: anytype) !void {
const action = std.meta.stringToEnum(enum { const action = std.meta.stringToEnum(enum {
getVersion, getVersion,
setDownloadBehavior, setPermission,
getWindowForTarget,
setWindowBounds, setWindowBounds,
resetPermissions,
grantPermissions,
getWindowForTarget,
setDownloadBehavior,
}, cmd.input.action) orelse return error.UnknownMethod; }, cmd.input.action) orelse return error.UnknownMethod;
switch (action) { switch (action) {
.getVersion => return getVersion(cmd), .getVersion => return getVersion(cmd),
.setDownloadBehavior => return setDownloadBehavior(cmd), .setPermission => return setPermission(cmd),
.getWindowForTarget => return getWindowForTarget(cmd),
.setWindowBounds => return setWindowBounds(cmd), .setWindowBounds => return setWindowBounds(cmd),
.resetPermissions => return resetPermissions(cmd),
.grantPermissions => return grantPermissions(cmd),
.getWindowForTarget => return getWindowForTarget(cmd),
.setDownloadBehavior => return setDownloadBehavior(cmd),
} }
} }
@@ -89,6 +95,21 @@ fn setWindowBounds(cmd: anytype) !void {
return cmd.sendResult(null, .{}); return cmd.sendResult(null, .{});
} }
// TODO: noop method
fn grantPermissions(cmd: anytype) !void {
return cmd.sendResult(null, .{});
}
// TODO: noop method
fn setPermission(cmd: anytype) !void {
return cmd.sendResult(null, .{});
}
// TODO: noop method
fn resetPermissions(cmd: anytype) !void {
return cmd.sendResult(null, .{});
}
const testing = @import("../testing.zig"); const testing = @import("../testing.zig");
test "cdp.browser: getVersion" { test "cdp.browser: getVersion" {
var ctx = testing.context(); var ctx = testing.context();

View File

@@ -373,7 +373,11 @@ const Command = struct {
\\ Defaults to \\ Defaults to
++ (if (builtin.mode == .Debug) " pretty." else " logfmt.") ++ ++ (if (builtin.mode == .Debug) " pretty." else " logfmt.") ++
\\ \\
\\ --user_agent_suffix \\--log_filter_scopes
\\ Filter out too verbose logs per scope:
\\ http, unknown_prop, script_event, ...
\\
\\--user_agent_suffix
\\ Suffix to append to the Lightpanda/X.Y User-Agent \\ Suffix to append to the Lightpanda/X.Y User-Agent
\\ \\
; ;