mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-02-04 14:33:47 +00:00
Prefer js.Value over js.Object in History/Navigation
Persist function callback in PerformanceObserver
This commit is contained in:
@@ -114,11 +114,6 @@ pub fn format(self: Object, writer: *std.Io.Writer) !void {
|
||||
return writer.writeAll(str);
|
||||
}
|
||||
|
||||
pub fn toJson(self: Object, allocator: Allocator) ![]u8 {
|
||||
const json_str_handle = v8.v8__JSON__Stringify(self.ctx.handle, @ptrCast(self.handle), null) orelse return error.JsException;
|
||||
return self.ctx.jsStringToZig(json_str_handle, .{ .allocator = allocator });
|
||||
}
|
||||
|
||||
pub fn persist(self: Object) !Object {
|
||||
var ctx = self.ctx;
|
||||
|
||||
|
||||
@@ -219,6 +219,11 @@ pub fn toStringZ(self: Value, opts: js.String.ToZigOpts) ![:0]u8 {
|
||||
return self._toString(true, opts);
|
||||
}
|
||||
|
||||
pub fn toJson(self: Value, allocator: Allocator) ![]u8 {
|
||||
const json_str_handle = v8.v8__JSON__Stringify(self.ctx.handle, self.handle, null) orelse return error.JsException;
|
||||
return self.ctx.jsStringToZig(json_str_handle, .{ .allocator = allocator });
|
||||
}
|
||||
|
||||
fn _toString(self: Value, comptime null_terminate: bool, opts: js.String.ToZigOpts) !(if (null_terminate) [:0]u8 else []u8) {
|
||||
const ctx: *js.Context = @constCast(self.ctx);
|
||||
|
||||
|
||||
@@ -35,3 +35,4 @@
|
||||
|
||||
history.back();
|
||||
</script>
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ pub fn setScrollRestoration(self: *History, str: []const u8) void {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn pushState(_: *History, state: js.Object, _: []const u8, _url: ?[]const u8, page: *Page) !void {
|
||||
pub fn pushState(_: *History, state: js.Value, _: ?[]const u8, _url: ?[]const u8, page: *Page) !void {
|
||||
const arena = page._session.arena;
|
||||
const url = if (_url) |u| try arena.dupeZ(u8, u) else try arena.dupeZ(u8, page.url);
|
||||
|
||||
@@ -57,7 +57,7 @@ pub fn pushState(_: *History, state: js.Object, _: []const u8, _url: ?[]const u8
|
||||
_ = try page._session.navigation.pushEntry(url, .{ .source = .history, .value = json }, page, true);
|
||||
}
|
||||
|
||||
pub fn replaceState(_: *History, state: js.Object, _: []const u8, _url: ?[]const u8, page: *Page) !void {
|
||||
pub fn replaceState(_: *History, state: js.Value, _: ?[]const u8, _url: ?[]const u8, page: *Page) !void {
|
||||
const arena = page._session.arena;
|
||||
const url = if (_url) |u| try arena.dupeZ(u8, u) else try arena.dupeZ(u8, page.url);
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ const DefaultDurationThreshold: f64 = 104;
|
||||
/// Creates a new PerformanceObserver object with the given observer callback.
|
||||
pub fn init(callback: js.Function, page: *Page) !*PerformanceObserver {
|
||||
return page._factory.create(PerformanceObserver{
|
||||
._callback = callback,
|
||||
._callback = try callback.persist(),
|
||||
._duration_threshold = DefaultDurationThreshold,
|
||||
._interests = 0,
|
||||
._entries = .{},
|
||||
|
||||
@@ -247,8 +247,8 @@ pub fn replaceEntry(
|
||||
}
|
||||
|
||||
const NavigateOptions = struct {
|
||||
state: ?js.Object = null,
|
||||
info: ?js.Object = null,
|
||||
state: ?js.Value = null,
|
||||
info: ?js.Value = null,
|
||||
history: ?[]const u8 = null,
|
||||
};
|
||||
|
||||
@@ -346,8 +346,8 @@ pub fn navigate(self: *Navigation, _url: [:0]const u8, _opts: ?NavigateOptions,
|
||||
}
|
||||
|
||||
pub const ReloadOptions = struct {
|
||||
state: ?js.Object = null,
|
||||
info: ?js.Object = null,
|
||||
state: ?js.Value = null,
|
||||
info: ?js.Value = null,
|
||||
};
|
||||
|
||||
pub fn reload(self: *Navigation, _opts: ?ReloadOptions, page: *Page) !NavigationReturn {
|
||||
@@ -371,7 +371,7 @@ pub fn reload(self: *Navigation, _opts: ?ReloadOptions, page: *Page) !Navigation
|
||||
}
|
||||
|
||||
pub const TraverseToOptions = struct {
|
||||
info: ?js.Object = null,
|
||||
info: ?js.Value = null,
|
||||
};
|
||||
|
||||
pub fn traverseTo(self: *Navigation, key: []const u8, _opts: ?TraverseToOptions, page: *Page) !NavigationReturn {
|
||||
@@ -389,7 +389,7 @@ pub fn traverseTo(self: *Navigation, key: []const u8, _opts: ?TraverseToOptions,
|
||||
}
|
||||
|
||||
pub const UpdateCurrentEntryOptions = struct {
|
||||
state: js.Object,
|
||||
state: js.Value,
|
||||
};
|
||||
|
||||
pub fn updateCurrentEntry(self: *Navigation, options: UpdateCurrentEntryOptions, page: *Page) !void {
|
||||
|
||||
Reference in New Issue
Block a user