mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-12-16 08:18:59 +00:00
handle error in normal scripts
This commit is contained in:
@@ -205,13 +205,16 @@ pub fn addFromElement(self: *ScriptManager, script_element: *Element.Html.Script
|
|||||||
const script = try self.script_pool.create();
|
const script = try self.script_pool.create();
|
||||||
errdefer self.script_pool.destroy(script);
|
errdefer self.script_pool.destroy(script);
|
||||||
|
|
||||||
|
const is_inline = source == .@"inline";
|
||||||
|
|
||||||
script.* = .{
|
script.* = .{
|
||||||
.kind = kind,
|
.kind = kind,
|
||||||
.node = .{},
|
.node = .{},
|
||||||
.manager = self,
|
.manager = self,
|
||||||
.source = source,
|
.source = source,
|
||||||
.script_element = script_element,
|
.script_element = script_element,
|
||||||
.complete = source == .@"inline",
|
.complete = is_inline,
|
||||||
|
.status = if (is_inline) 200 else 0,
|
||||||
.url = remote_url orelse page.url,
|
.url = remote_url orelse page.url,
|
||||||
.mode = blk: {
|
.mode = blk: {
|
||||||
if (source == .@"inline") {
|
if (source == .@"inline") {
|
||||||
@@ -271,6 +274,11 @@ pub fn addFromElement(self: *ScriptManager, script_element: *Element.Html.Script
|
|||||||
_ = try client.tick(200);
|
_ = try client.tick(200);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (script.status == 0) {
|
||||||
|
// an error (that we already logged)
|
||||||
|
script.deinit(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// could have already been evaluating if this is dynamically added
|
// could have already been evaluating if this is dynamically added
|
||||||
const was_evaluating = self.is_evaluating;
|
const was_evaluating = self.is_evaluating;
|
||||||
@@ -675,7 +683,21 @@ const Script = struct {
|
|||||||
|
|
||||||
fn errorCallback(ctx: *anyopaque, err: anyerror) void {
|
fn errorCallback(ctx: *anyopaque, err: anyerror) void {
|
||||||
const self: *Script = @ptrCast(@alignCast(ctx));
|
const self: *Script = @ptrCast(@alignCast(ctx));
|
||||||
log.warn(.http, "script fetch error", .{ .req = self.url, .err = err });
|
log.warn(.http, "script fetch error", .{
|
||||||
|
.err = err ,
|
||||||
|
.req = self.url,
|
||||||
|
.mode = self.mode,
|
||||||
|
.kind = self.kind,
|
||||||
|
.status = self.status,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (self.mode == .normal) {
|
||||||
|
// This is blocked in a loop at the end of addFromElement, setting
|
||||||
|
// it to complete with a status of 0 will signal the error.
|
||||||
|
self.status = 0;
|
||||||
|
self.complete = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const manager = self.manager;
|
const manager = self.manager;
|
||||||
manager.scriptList(self).remove(&self.node);
|
manager.scriptList(self).remove(&self.node);
|
||||||
|
|||||||
Reference in New Issue
Block a user