add additition navigate fields

This commit is contained in:
Karl Seguin
2025-03-18 09:56:57 +08:00
parent b75b36dc61
commit c9bc5be42b
3 changed files with 50 additions and 12 deletions

View File

@@ -339,7 +339,6 @@ pub const Page = struct {
// see Inspector.contextCreated
pub fn navigate(self: *Page, uri: []const u8, aux_data: ?[]const u8) !void {
const arena = self.arena;
self.session.app.telemetry.record(.{ .navigate = {} });
log.debug("starting GET {s}", .{uri});
@@ -366,6 +365,11 @@ pub const Page = struct {
// TODO handle fragment in url.
self.session.app.telemetry.record(.{ .navigate = .{
.proxy = false,
.tls = std.ascii.eqlIgnoreCase(self.uri.scheme, "https"),
} });
// load the data
var resp = try self.session.loader.get(arena, self.uri);
defer resp.deinit();

View File

@@ -50,12 +50,8 @@ pub const LightPanda = struct {
pub fn send(self: *LightPanda, iid: ?[]const u8, run_mode: RunMode, raw_event: telemetry.Event) !void {
const event = LightPandaEvent{
.iid = iid,
.driver = if (std.meta.activeTag(raw_event) == .navigate) "cdp" else null,
.mode = run_mode,
.os = builtin.os.tag,
.arch = builtin.cpu.arch,
.version = build_info.git_commit,
.event = @tagName(std.meta.activeTag(raw_event)),
.event = raw_event,
};
self.mutex.lock();
@@ -119,9 +115,42 @@ pub const LightPanda = struct {
const LightPandaEvent = struct {
iid: ?[]const u8,
mode: RunMode,
driver: ?[]const u8,
os: std.Target.Os.Tag,
arch: std.Target.Cpu.Arch,
version: []const u8,
event: []const u8,
event: telemetry.Event,
pub fn jsonStringify(self: *const LightPandaEvent, writer: anytype) !void {
try writer.beginObject();
try writer.objectField("iid");
try writer.write(self.iid);
try writer.objectField("mode");
try writer.write(self.mode);
try writer.objectField("os");
try writer.write(builtin.os.tag);
try writer.objectField("arch");
try writer.write(builtin.cpu.arch);
try writer.objectField("version");
try writer.write(build_info.git_commit);
try writer.objectField("event");
try writer.write(@tagName(std.meta.activeTag(self.event)));
inline for (@typeInfo(telemetry.Event).Union.fields) |union_field| {
if (self.event == @field(telemetry.Event, union_field.name)) {
const inner = @field(self.event, union_field.name);
const TI = @typeInfo(@TypeOf(inner));
if (TI == .Struct) {
inline for (TI.Struct.fields) |field| {
try writer.objectField(field.name);
try writer.write(@field(inner, field.name));
}
}
}
}
try writer.endObject();
}
};

View File

@@ -93,8 +93,13 @@ fn getOrCreateId(app_dir_path_: ?[]const u8) ?[36]u8 {
pub const Event = union(enum) {
run: void,
navigate: void,
navigate: Navigate,
flag: []const u8, // used for testing
const Navigate = struct {
tls: bool,
proxy: bool,
};
};
const NoopProvider = struct {