mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-02-04 14:33:47 +00:00
split Value.fromJson into Value.persist
This commit is contained in:
@@ -258,8 +258,9 @@ pub fn _json(self: *Response, page: *Page) !js.Promise {
|
|||||||
log.info(.browser, "invalid json", .{ .err = e, .source = "Request" });
|
log.info(.browser, "invalid json", .{ .err = e, .source = "Request" });
|
||||||
return error.SyntaxError;
|
return error.SyntaxError;
|
||||||
};
|
};
|
||||||
|
const pvalue = try value.persist(page.js);
|
||||||
|
|
||||||
return page.js.resolvePromise(value);
|
return page.js.resolvePromise(pvalue);
|
||||||
}
|
}
|
||||||
return page.js.resolvePromise(null);
|
return page.js.resolvePromise(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,8 +183,9 @@ pub fn _json(self: *Response, page: *Page) !js.Promise {
|
|||||||
log.info(.browser, "invalid json", .{ .err = e, .source = "Response" });
|
log.info(.browser, "invalid json", .{ .err = e, .source = "Response" });
|
||||||
return error.SyntaxError;
|
return error.SyntaxError;
|
||||||
};
|
};
|
||||||
|
const pvalue = try value.persist(page.js);
|
||||||
|
|
||||||
return page.js.resolvePromise(value);
|
return page.js.resolvePromise(pvalue);
|
||||||
}
|
}
|
||||||
return page.js.resolvePromise(null);
|
return page.js.resolvePromise(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,11 +161,16 @@ pub const Value = struct {
|
|||||||
pub fn fromJson(ctx: *Context, json: []const u8) !Value {
|
pub fn fromJson(ctx: *Context, json: []const u8) !Value {
|
||||||
const json_string = v8.String.initUtf8(ctx.isolate, json);
|
const json_string = v8.String.initUtf8(ctx.isolate, json);
|
||||||
const value = try v8.Json.parse(ctx.v8_context, json_string);
|
const value = try v8.Json.parse(ctx.v8_context, json_string);
|
||||||
|
return Value{ .context = ctx, .value = value };
|
||||||
|
}
|
||||||
|
|
||||||
const persisted = PersistentValue.init(ctx.isolate, value);
|
pub fn persist(self: Value, context: *Context) !Value {
|
||||||
try ctx.js_value_list.append(ctx.arena, persisted);
|
const js_value = self.value;
|
||||||
|
|
||||||
return Value{ .context = ctx, .value = persisted.toValue() };
|
const persisted = PersistentValue.init(context.isolate, js_value);
|
||||||
|
try context.js_value_list.append(context.arena, persisted);
|
||||||
|
|
||||||
|
return Value{ .context = context, .value = persisted.toValue() };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -701,7 +701,13 @@ pub const XMLHttpRequest = struct {
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
self.response_obj = .{ .JSON = value };
|
const pvalue = value.persist(page.js) catch |e| {
|
||||||
|
log.warn(.http, "persist v8 json value", .{ .err = e, .url = self.url, .source = "xhr" });
|
||||||
|
self.response_obj = .{ .Failure = {} };
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
self.response_obj = .{ .JSON = pvalue };
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_responseText(self: *XMLHttpRequest) ![]const u8 {
|
pub fn get_responseText(self: *XMLHttpRequest) ![]const u8 {
|
||||||
|
|||||||
Reference in New Issue
Block a user