mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 07:03:29 +00:00
move netsurf and mimalloc into modules
This commit is contained in:
46
build.zig
46
build.zig
@@ -168,22 +168,33 @@ fn common(
|
|||||||
step: *std.Build.Step.Compile,
|
step: *std.Build.Step.Compile,
|
||||||
options: jsruntime.Options,
|
options: jsruntime.Options,
|
||||||
) !void {
|
) !void {
|
||||||
try jsruntime_pkgs.add(step, options);
|
const jsruntimemod = try jsruntime_pkgs.module(
|
||||||
linkNetSurf(b, step);
|
b,
|
||||||
|
options,
|
||||||
|
step.root_module.optimize.?,
|
||||||
|
step.root_module.resolved_target.?,
|
||||||
|
);
|
||||||
|
step.root_module.addImport("jsruntime", jsruntimemod);
|
||||||
|
|
||||||
// link mimalloc
|
const netsurf = moduleNetSurf(b);
|
||||||
step.addObjectFile(b.path("vendor/mimalloc/out/libmimalloc.a"));
|
netsurf.addImport("jsruntime", jsruntimemod);
|
||||||
step.addIncludePath(b.path("vendor/mimalloc/out/include"));
|
step.root_module.addImport("netsurf", netsurf);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn linkNetSurf(b: *std.Build, step: *std.Build.Step.Compile) void {
|
fn moduleNetSurf(b: *std.Build) *std.Build.Module {
|
||||||
|
const mod = b.addModule("netsurf", .{
|
||||||
|
.root_source_file = b.path("src/netsurf/netsurf.zig"),
|
||||||
|
});
|
||||||
// iconv
|
// iconv
|
||||||
step.addObjectFile(b.path("vendor/libiconv/lib/libiconv.a"));
|
mod.addObjectFile(b.path("vendor/libiconv/lib/libiconv.a"));
|
||||||
step.addIncludePath(b.path("vendor/libiconv/include"));
|
mod.addIncludePath(b.path("vendor/libiconv/include"));
|
||||||
|
|
||||||
|
// mimalloc
|
||||||
|
mod.addImport("mimalloc", moduleMimalloc(b));
|
||||||
|
|
||||||
// netsurf libs
|
// netsurf libs
|
||||||
const ns = "vendor/netsurf";
|
const ns = "vendor/netsurf";
|
||||||
step.addIncludePath(b.path(ns ++ "/include"));
|
mod.addIncludePath(b.path(ns ++ "/include"));
|
||||||
|
|
||||||
const libs: [4][]const u8 = .{
|
const libs: [4][]const u8 = .{
|
||||||
"libdom",
|
"libdom",
|
||||||
@@ -192,7 +203,20 @@ fn linkNetSurf(b: *std.Build, step: *std.Build.Step.Compile) void {
|
|||||||
"libwapcaplet",
|
"libwapcaplet",
|
||||||
};
|
};
|
||||||
inline for (libs) |lib| {
|
inline for (libs) |lib| {
|
||||||
step.addObjectFile(b.path(ns ++ "/lib/" ++ lib ++ ".a"));
|
mod.addObjectFile(b.path(ns ++ "/lib/" ++ lib ++ ".a"));
|
||||||
step.addIncludePath(b.path(ns ++ "/" ++ lib ++ "/src"));
|
mod.addIncludePath(b.path(ns ++ "/" ++ lib ++ "/src"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return mod;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn moduleMimalloc(b: *std.Build) *std.Build.Module {
|
||||||
|
const mod = b.addModule("mimalloc", .{
|
||||||
|
.root_source_file = b.path("src/mimalloc/mimalloc.zig"),
|
||||||
|
});
|
||||||
|
|
||||||
|
mod.addObjectFile(b.path("vendor/mimalloc/out/libmimalloc.a"));
|
||||||
|
mod.addIncludePath(b.path("vendor/mimalloc/out/include"));
|
||||||
|
|
||||||
|
return mod;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const builtin = @import("builtin");
|
|||||||
|
|
||||||
const Types = @import("root").Types;
|
const Types = @import("root").Types;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const Loader = @import("loader.zig").Loader;
|
const Loader = @import("loader.zig").Loader;
|
||||||
const Dump = @import("dump.zig");
|
const Dump = @import("dump.zig");
|
||||||
const Mime = @import("mime.zig");
|
const Mime = @import("mime.zig");
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const File = std.fs.File;
|
const File = std.fs.File;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const Walker = @import("../dom/walker.zig").WalkerChildren;
|
const Walker = @import("../dom/walker.zig").WalkerChildren;
|
||||||
|
|
||||||
// writer must be a std.io.Writer
|
// writer must be a std.io.Writer
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
// Node implementation with Netsurf Libdom C lib.
|
// Node implementation with Netsurf Libdom C lib.
|
||||||
pub const Node = struct {
|
pub const Node = struct {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const css = @import("css.zig");
|
const css = @import("css.zig");
|
||||||
const Node = @import("libdom.zig").Node;
|
const Node = @import("libdom.zig").Node;
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const Matcher = struct {
|
const Matcher = struct {
|
||||||
const Nodes = std.ArrayList(Node);
|
const Nodes = std.ArrayList(Node);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const jsruntime = @import("jsruntime");
|
|||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const Node = @import("node.zig").Node;
|
const Node = @import("node.zig").Node;
|
||||||
const DOMException = @import("exceptions.zig").DOMException;
|
const DOMException = @import("exceptions.zig").DOMException;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const Text = @import("text.zig").Text;
|
const Text = @import("text.zig").Text;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const Case = jsruntime.test_utils.Case;
|
|||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
const generate = @import("../generate.zig");
|
const generate = @import("../generate.zig");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const Node = @import("node.zig").Node;
|
const Node = @import("node.zig").Node;
|
||||||
const Comment = @import("comment.zig").Comment;
|
const Comment = @import("comment.zig").Comment;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const css = @import("../css/css.zig");
|
const css = @import("../css/css.zig");
|
||||||
const Node = @import("../css/libdom.zig").Node;
|
const Node = @import("../css/libdom.zig").Node;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const Node = @import("node.zig").Node;
|
const Node = @import("node.zig").Node;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ const JSObjectID = jsruntime.JSObjectID;
|
|||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
const event_handler = @import("../events/event.zig").event_handler;
|
||||||
|
|
||||||
const DOMException = @import("exceptions.zig").DOMException;
|
const DOMException = @import("exceptions.zig").DOMException;
|
||||||
const Nod = @import("node.zig");
|
const Nod = @import("node.zig");
|
||||||
@@ -74,6 +75,7 @@ pub const EventTarget = struct {
|
|||||||
eventType,
|
eventType,
|
||||||
cbk,
|
cbk,
|
||||||
capture orelse false,
|
capture orelse false,
|
||||||
|
event_handler,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const jsruntime = @import("jsruntime");
|
|||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
// https://webidl.spec.whatwg.org/#idl-DOMException
|
// https://webidl.spec.whatwg.org/#idl-DOMException
|
||||||
pub const DOMException = struct {
|
pub const DOMException = struct {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ const Variadic = jsruntime.Variadic;
|
|||||||
|
|
||||||
const generate = @import("../generate.zig");
|
const generate = @import("../generate.zig");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const EventTarget = @import("event_target.zig").EventTarget;
|
const EventTarget = @import("event_target.zig").EventTarget;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const jsruntime = @import("jsruntime");
|
|||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const Node = @import("node.zig").Node;
|
const Node = @import("node.zig").Node;
|
||||||
|
|
||||||
// https://dom.spec.whatwg.org/#processinginstruction
|
// https://dom.spec.whatwg.org/#processinginstruction
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const Case = jsruntime.test_utils.Case;
|
|||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
const generate = @import("../generate.zig");
|
const generate = @import("../generate.zig");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const CharacterData = @import("character_data.zig").CharacterData;
|
const CharacterData = @import("character_data.zig").CharacterData;
|
||||||
const CDATASection = @import("cdata_section.zig").CDATASection;
|
const CDATASection = @import("cdata_section.zig").CDATASection;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
pub const Walker = union(enum) {
|
pub const Walker = union(enum) {
|
||||||
walkerDepthFirst: WalkerDepthFirst,
|
walkerDepthFirst: WalkerDepthFirst,
|
||||||
|
|||||||
@@ -22,10 +22,11 @@ const generate = @import("../generate.zig");
|
|||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Callback = jsruntime.Callback;
|
const Callback = jsruntime.Callback;
|
||||||
|
const CallbackResult = jsruntime.CallbackResult;
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const DOMException = @import("../dom/exceptions.zig").DOMException;
|
const DOMException = @import("../dom/exceptions.zig").DOMException;
|
||||||
const EventTarget = @import("../dom/event_target.zig").EventTarget;
|
const EventTarget = @import("../dom/event_target.zig").EventTarget;
|
||||||
@@ -33,6 +34,8 @@ const EventTargetUnion = @import("../dom/event_target.zig").Union;
|
|||||||
|
|
||||||
const ProgressEvent = @import("../xhr/progress_event.zig").ProgressEvent;
|
const ProgressEvent = @import("../xhr/progress_event.zig").ProgressEvent;
|
||||||
|
|
||||||
|
const log = std.log.scoped(.events);
|
||||||
|
|
||||||
// Event interfaces
|
// Event interfaces
|
||||||
pub const Interfaces = generate.Tuple(.{
|
pub const Interfaces = generate.Tuple(.{
|
||||||
Event,
|
Event,
|
||||||
@@ -236,3 +239,33 @@ pub fn testExecFn(
|
|||||||
};
|
};
|
||||||
try checkCases(js_env, &remove);
|
try checkCases(js_env, &remove);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub const event_handler = struct {
|
||||||
|
fn handle(event: ?*parser.Event, data: ?*anyopaque) callconv(.C) void {
|
||||||
|
if (data) |d| {
|
||||||
|
const func = parser.event_handler_cbk(d);
|
||||||
|
|
||||||
|
// TODO get the allocator by another way?
|
||||||
|
var res = CallbackResult.init(func.nat_ctx.alloc);
|
||||||
|
defer res.deinit();
|
||||||
|
|
||||||
|
if (event) |evt| {
|
||||||
|
func.trycall(.{
|
||||||
|
Event.toInterface(evt) catch unreachable,
|
||||||
|
}, &res) catch {};
|
||||||
|
} else {
|
||||||
|
func.trycall(.{event}, &res) catch {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// in case of function error, we log the result and the trace.
|
||||||
|
if (!res.success) {
|
||||||
|
log.info("event handler error: {s}", .{res.result orelse "unknown"});
|
||||||
|
log.debug("{s}", .{res.stack orelse "no stack trace"});
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: we can not call func.deinit here
|
||||||
|
// b/c the handler can be called several times
|
||||||
|
// either on this dispatch event or in anoter one
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.handle;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const generate = @import("../generate.zig");
|
const generate = @import("../generate.zig");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const EventTarget = @import("../dom/event_target.zig").EventTarget;
|
const EventTarget = @import("../dom/event_target.zig").EventTarget;
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const std = @import("std");
|
|||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
|
|
||||||
const parser = @import("netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const apiweb = @import("apiweb.zig");
|
const apiweb = @import("apiweb.zig");
|
||||||
const Window = @import("html/window.zig").Window;
|
const Window = @import("html/window.zig").Window;
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const std = @import("std");
|
|||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
|
|
||||||
const parser = @import("netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const apiweb = @import("apiweb.zig");
|
const apiweb = @import("apiweb.zig");
|
||||||
const Window = @import("html/window.zig").Window;
|
const Window = @import("html/window.zig").Window;
|
||||||
const storage = @import("storage/storage.zig");
|
const storage = @import("storage/storage.zig");
|
||||||
|
|||||||
@@ -26,13 +26,9 @@ const c = @cImport({
|
|||||||
@cInclude("events/event.h");
|
@cInclude("events/event.h");
|
||||||
});
|
});
|
||||||
|
|
||||||
const mimalloc = @import("mimalloc.zig");
|
const mimalloc = @import("mimalloc");
|
||||||
|
|
||||||
const Callback = @import("jsruntime").Callback;
|
const Callback = @import("jsruntime").Callback;
|
||||||
const CallbackResult = @import("jsruntime").CallbackResult;
|
|
||||||
const EventToInterface = @import("events/event.zig").Event.toInterface;
|
|
||||||
|
|
||||||
const log = std.log.scoped(.netsurf);
|
|
||||||
|
|
||||||
// init initializes netsurf lib.
|
// init initializes netsurf lib.
|
||||||
// init starts a mimalloc heap arena for the netsurf session. The caller must
|
// init starts a mimalloc heap arena for the netsurf session. The caller must
|
||||||
@@ -527,41 +523,11 @@ pub const EventType = enum(u8) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// EventHandler
|
// EventHandler
|
||||||
fn event_handler_cbk(data: *anyopaque) *Callback {
|
pub fn event_handler_cbk(data: *anyopaque) *Callback {
|
||||||
const ptr: *align(@alignOf(*Callback)) anyopaque = @alignCast(data);
|
const ptr: *align(@alignOf(*Callback)) anyopaque = @alignCast(data);
|
||||||
return @as(*Callback, @ptrCast(ptr));
|
return @as(*Callback, @ptrCast(ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
const event_handler = struct {
|
|
||||||
fn handle(event: ?*Event, data: ?*anyopaque) callconv(.C) void {
|
|
||||||
if (data) |d| {
|
|
||||||
const func = event_handler_cbk(d);
|
|
||||||
|
|
||||||
// TODO get the allocator by another way?
|
|
||||||
var res = CallbackResult.init(func.nat_ctx.alloc);
|
|
||||||
defer res.deinit();
|
|
||||||
|
|
||||||
if (event) |evt| {
|
|
||||||
func.trycall(.{
|
|
||||||
EventToInterface(evt) catch unreachable,
|
|
||||||
}, &res) catch {};
|
|
||||||
} else {
|
|
||||||
func.trycall(.{event}, &res) catch {};
|
|
||||||
}
|
|
||||||
|
|
||||||
// in case of function error, we log the result and the trace.
|
|
||||||
if (!res.success) {
|
|
||||||
log.info("event handler error: {s}", .{res.result orelse "unknown"});
|
|
||||||
log.debug("{s}", .{res.stack orelse "no stack trace"});
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: we can not call func.deinit here
|
|
||||||
// b/c the handler can be called several times
|
|
||||||
// either on this dispatch event or in anoter one
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.handle;
|
|
||||||
|
|
||||||
// EventListener
|
// EventListener
|
||||||
pub const EventListener = c.dom_event_listener;
|
pub const EventListener = c.dom_event_listener;
|
||||||
const EventListenerEntry = c.listener_entry;
|
const EventListenerEntry = c.listener_entry;
|
||||||
@@ -648,6 +614,7 @@ pub fn eventTargetAddEventListener(
|
|||||||
typ: []const u8,
|
typ: []const u8,
|
||||||
cbk: Callback,
|
cbk: Callback,
|
||||||
capture: bool,
|
capture: bool,
|
||||||
|
handler: anytype,
|
||||||
) !void {
|
) !void {
|
||||||
// this allocation will be removed either on
|
// this allocation will be removed either on
|
||||||
// eventTargetRemoveEventListener or eventTargetRemoveAllEventListeners
|
// eventTargetRemoveEventListener or eventTargetRemoveAllEventListeners
|
||||||
@@ -661,7 +628,7 @@ pub fn eventTargetAddEventListener(
|
|||||||
|
|
||||||
const ctx = @as(*anyopaque, @ptrCast(cbk_ptr));
|
const ctx = @as(*anyopaque, @ptrCast(cbk_ptr));
|
||||||
var listener: ?*EventListener = undefined;
|
var listener: ?*EventListener = undefined;
|
||||||
const errLst = c.dom_event_listener_create(event_handler, ctx, &listener);
|
const errLst = c.dom_event_listener_create(handler, ctx, &listener);
|
||||||
try DOMErr(errLst);
|
try DOMErr(errLst);
|
||||||
defer c.dom_event_listener_unref(listener);
|
defer c.dom_event_listener_unref(listener);
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ const jsruntime = @import("jsruntime");
|
|||||||
const generate = @import("generate.zig");
|
const generate = @import("generate.zig");
|
||||||
const pretty = @import("pretty");
|
const pretty = @import("pretty");
|
||||||
|
|
||||||
const parser = @import("netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const apiweb = @import("apiweb.zig");
|
const apiweb = @import("apiweb.zig");
|
||||||
const Window = @import("html/window.zig").Window;
|
const Window = @import("html/window.zig").Window;
|
||||||
const xhr = @import("xhr/xhr.zig");
|
const xhr = @import("xhr/xhr.zig");
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const Case = jsruntime.test_utils.Case;
|
|||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
const generate = @import("../generate.zig");
|
const generate = @import("../generate.zig");
|
||||||
|
|
||||||
const DOMError = @import("../netsurf.zig").DOMError;
|
const DOMError = @import("netsurf").DOMError;
|
||||||
|
|
||||||
const log = std.log.scoped(.storage);
|
const log = std.log.scoped(.storage);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const parser = @import("netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const Client = @import("async/Client.zig");
|
const Client = @import("async/Client.zig");
|
||||||
|
|
||||||
pub const UserContext = struct {
|
pub const UserContext = struct {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const fspath = std.fs.path;
|
|||||||
|
|
||||||
const FileLoader = @import("fileloader.zig").FileLoader;
|
const FileLoader = @import("fileloader.zig").FileLoader;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const jsruntime = @import("jsruntime");
|
const jsruntime = @import("jsruntime");
|
||||||
const Loop = jsruntime.Loop;
|
const Loop = jsruntime.Loop;
|
||||||
|
|||||||
@@ -22,8 +22,9 @@ const jsruntime = @import("jsruntime");
|
|||||||
const Callback = jsruntime.Callback;
|
const Callback = jsruntime.Callback;
|
||||||
|
|
||||||
const EventTarget = @import("../dom/event_target.zig").EventTarget;
|
const EventTarget = @import("../dom/event_target.zig").EventTarget;
|
||||||
|
const event_handler = @import("../events/event.zig").event_handler;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const log = std.log.scoped(.xhr);
|
const log = std.log.scoped(.xhr);
|
||||||
|
|
||||||
@@ -41,8 +42,20 @@ pub const XMLHttpRequestEventTarget = struct {
|
|||||||
ontimeout_cbk: ?Callback = null,
|
ontimeout_cbk: ?Callback = null,
|
||||||
onloadend_cbk: ?Callback = null,
|
onloadend_cbk: ?Callback = null,
|
||||||
|
|
||||||
fn register(self: *XMLHttpRequestEventTarget, alloc: std.mem.Allocator, typ: []const u8, cbk: Callback) !void {
|
fn register(
|
||||||
try parser.eventTargetAddEventListener(@as(*parser.EventTarget, @ptrCast(self)), alloc, typ, cbk, false);
|
self: *XMLHttpRequestEventTarget,
|
||||||
|
alloc: std.mem.Allocator,
|
||||||
|
typ: []const u8,
|
||||||
|
cbk: Callback,
|
||||||
|
) !void {
|
||||||
|
try parser.eventTargetAddEventListener(
|
||||||
|
@as(*parser.EventTarget, @ptrCast(self)),
|
||||||
|
alloc,
|
||||||
|
typ,
|
||||||
|
cbk,
|
||||||
|
false,
|
||||||
|
event_handler,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
fn unregister(self: *XMLHttpRequestEventTarget, alloc: std.mem.Allocator, typ: []const u8, cbk: Callback) !void {
|
fn unregister(self: *XMLHttpRequestEventTarget, alloc: std.mem.Allocator, typ: []const u8, cbk: Callback) !void {
|
||||||
const et = @as(*parser.EventTarget, @ptrCast(self));
|
const et = @as(*parser.EventTarget, @ptrCast(self));
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const jsruntime = @import("jsruntime");
|
|||||||
const Case = jsruntime.test_utils.Case;
|
const Case = jsruntime.test_utils.Case;
|
||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
const Event = @import("../events/event.zig").Event;
|
const Event = @import("../events/event.zig").Event;
|
||||||
|
|
||||||
const DOMException = @import("../dom/exceptions.zig").DOMException;
|
const DOMException = @import("../dom/exceptions.zig").DOMException;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const Case = jsruntime.test_utils.Case;
|
|||||||
const checkCases = jsruntime.test_utils.checkCases;
|
const checkCases = jsruntime.test_utils.checkCases;
|
||||||
const generate = @import("../generate.zig");
|
const generate = @import("../generate.zig");
|
||||||
|
|
||||||
const DOMError = @import("../netsurf.zig").DOMError;
|
const DOMError = @import("netsurf").DOMError;
|
||||||
const DOMException = @import("../dom/exceptions.zig").DOMException;
|
const DOMException = @import("../dom/exceptions.zig").DOMException;
|
||||||
|
|
||||||
const ProgressEvent = @import("progress_event.zig").ProgressEvent;
|
const ProgressEvent = @import("progress_event.zig").ProgressEvent;
|
||||||
@@ -35,7 +35,7 @@ const Loop = jsruntime.Loop;
|
|||||||
const YieldImpl = Loop.Yield(XMLHttpRequest);
|
const YieldImpl = Loop.Yield(XMLHttpRequest);
|
||||||
const Client = @import("../async/Client.zig");
|
const Client = @import("../async/Client.zig");
|
||||||
|
|
||||||
const parser = @import("../netsurf.zig");
|
const parser = @import("netsurf");
|
||||||
|
|
||||||
const UserContext = @import("../user_context.zig").UserContext;
|
const UserContext = @import("../user_context.zig").UserContext;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user