LibWeb: Log resource load success before invoking success callback

The success callback may trigger JavaScript execution, causing resource
load times to appear much longer than they actually are. :^)
This commit is contained in:
Andreas Kling 2021-09-22 14:34:28 +02:00
parent 784ab75d2d
commit fccf0a466b
Notes: sideshowbarker 2024-07-18 03:34:14 +09:00

View file

@ -129,10 +129,10 @@ void ResourceLoader::load(LoadRequest& request, Function<void(ReadonlyBytes, con
if (url.protocol() == "about") {
dbgln_if(SPAM_DEBUG, "Loading about: URL {}", url);
log_success(request);
deferred_invoke([success_callback = move(success_callback)] {
success_callback(String::empty().to_byte_buffer(), {}, {});
});
log_success(request);
return;
}
@ -148,10 +148,10 @@ void ResourceLoader::load(LoadRequest& request, Function<void(ReadonlyBytes, con
else
data = url.data_payload().to_byte_buffer();
log_success(request);
deferred_invoke([data = move(data), success_callback = move(success_callback)] {
success_callback(data, {}, {});
});
log_success(request);
return;
}
@ -167,10 +167,10 @@ void ResourceLoader::load(LoadRequest& request, Function<void(ReadonlyBytes, con
auto file = file_result.release_value();
auto data = file->read_all();
log_success(request);
deferred_invoke([data = move(data), success_callback = move(success_callback)] {
success_callback(data, {}, {});
});
log_success(request);
return;
}
@ -203,8 +203,8 @@ void ResourceLoader::load(LoadRequest& request, Function<void(ReadonlyBytes, con
error_callback(http_load_failure_msg, {});
return;
}
success_callback(payload, response_headers, status_code);
log_success(request);
success_callback(payload, response_headers, status_code);
deferred_invoke([this, &protocol_request] {
m_active_requests.remove(protocol_request);
});