1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 17:44:56 +09:00

LibWeb: Start tracking elapsed time when a resource is loaded

This commit is contained in:
Brian Gianforcaro 2021-09-11 21:15:15 -07:00 committed by Andreas Kling
parent 1d4be9ca33
commit bca8707e15
Notes: sideshowbarker 2024-07-18 04:08:03 +09:00
7 changed files with 17 additions and 9 deletions

View file

@ -137,7 +137,7 @@ bool FrameLoader::parse_document(DOM::Document& document, const ByteBuffer& data
return false;
}
bool FrameLoader::load(const LoadRequest& request, Type type)
bool FrameLoader::load(LoadRequest& request, Type type)
{
if (!request.is_valid()) {
load_error_page(request.url(), "Invalid request");

View file

@ -27,7 +27,7 @@ public:
~FrameLoader();
bool load(const URL&, Type);
bool load(const LoadRequest&, Type);
bool load(LoadRequest&, Type);
void load_html(const StringView&, const URL&);

View file

@ -8,7 +8,9 @@
#include <AK/ByteBuffer.h>
#include <AK/HashMap.h>
#include <AK/Time.h>
#include <AK/URL.h>
#include <LibCore/ElapsedTimer.h>
#include <LibWeb/Forward.h>
namespace Web {
@ -32,6 +34,9 @@ public:
const ByteBuffer& body() const { return m_body; }
void set_body(const ByteBuffer& body) { m_body = body; }
void start_timer() { m_load_timer.start(); };
Time load_time() const { return m_load_timer.elapsed_time(); }
unsigned hash() const
{
auto body_hash = string_hash((const char*)m_body.data(), m_body.size());
@ -64,6 +69,7 @@ private:
String m_method { "GET" };
HashMap<String, String> m_headers;
ByteBuffer m_body;
Core::ElapsedTimer m_load_timer;
};
}

View file

@ -7,6 +7,7 @@
#include <AK/Base64.h>
#include <AK/Debug.h>
#include <AK/JsonObject.h>
#include <LibCore/ElapsedTimer.h>
#include <LibCore/EventLoop.h>
#include <LibCore/File.h>
#include <LibProtocol/Request.h>
@ -32,7 +33,7 @@ ResourceLoader::ResourceLoader()
{
}
void ResourceLoader::load_sync(const LoadRequest& request, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback)
void ResourceLoader::load_sync(LoadRequest& request, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback)
{
Core::EventLoop loop;
@ -53,7 +54,7 @@ void ResourceLoader::load_sync(const LoadRequest& request, Function<void(Readonl
static HashMap<LoadRequest, NonnullRefPtr<Resource>> s_resource_cache;
RefPtr<Resource> ResourceLoader::load_resource(Resource::Type type, const LoadRequest& request)
RefPtr<Resource> ResourceLoader::load_resource(Resource::Type type, LoadRequest& request)
{
if (!request.is_valid())
return nullptr;
@ -92,6 +93,7 @@ RefPtr<Resource> ResourceLoader::load_resource(Resource::Type type, const LoadRe
void ResourceLoader::load(const LoadRequest& request, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback)
{
auto& url = request.url();
request.start_timer();
if (is_port_blocked(url.port())) {
dbgln("ResourceLoader::load: Error: blocked port {} from URL {}", url.port(), url);

View file

@ -30,11 +30,11 @@ class ResourceLoader : public Core::Object {
public:
static ResourceLoader& the();
RefPtr<Resource> load_resource(Resource::Type, const LoadRequest&);
RefPtr<Resource> load_resource(Resource::Type, LoadRequest&);
void load(const LoadRequest&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
void load(LoadRequest&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
void load(const URL&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
void load_sync(const LoadRequest&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
void load_sync(LoadRequest&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
Function<void()> on_load_counter_change;

View file

@ -36,7 +36,7 @@ void Page::load(const URL& url)
top_level_browsing_context().loader().load(url, FrameLoader::Type::Navigation);
}
void Page::load(const LoadRequest& request)
void Page::load(LoadRequest& request)
{
top_level_browsing_context().loader().load(request, FrameLoader::Type::Navigation);
}

View file

@ -42,7 +42,7 @@ public:
void set_focused_browsing_context(Badge<EventHandler>, BrowsingContext&);
void load(const URL&);
void load(const LoadRequest&);
void load(LoadRequest&);
void load_html(const StringView&, const URL&);