From bca8707e1520133788f3a299a324a8b0d04dd02e Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Sat, 11 Sep 2021 21:15:15 -0700 Subject: [PATCH] LibWeb: Start tracking elapsed time when a resource is loaded --- Userland/Libraries/LibWeb/Loader/FrameLoader.cpp | 2 +- Userland/Libraries/LibWeb/Loader/FrameLoader.h | 2 +- Userland/Libraries/LibWeb/Loader/LoadRequest.h | 6 ++++++ Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp | 6 ++++-- Userland/Libraries/LibWeb/Loader/ResourceLoader.h | 6 +++--- Userland/Libraries/LibWeb/Page/Page.cpp | 2 +- Userland/Libraries/LibWeb/Page/Page.h | 2 +- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Userland/Libraries/LibWeb/Loader/FrameLoader.cpp b/Userland/Libraries/LibWeb/Loader/FrameLoader.cpp index c4f47c723e4..f56aff7918e 100644 --- a/Userland/Libraries/LibWeb/Loader/FrameLoader.cpp +++ b/Userland/Libraries/LibWeb/Loader/FrameLoader.cpp @@ -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"); diff --git a/Userland/Libraries/LibWeb/Loader/FrameLoader.h b/Userland/Libraries/LibWeb/Loader/FrameLoader.h index 993025d826d..95d3b5bbcc2 100644 --- a/Userland/Libraries/LibWeb/Loader/FrameLoader.h +++ b/Userland/Libraries/LibWeb/Loader/FrameLoader.h @@ -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&); diff --git a/Userland/Libraries/LibWeb/Loader/LoadRequest.h b/Userland/Libraries/LibWeb/Loader/LoadRequest.h index 5481fdbabea..314f974fe45 100644 --- a/Userland/Libraries/LibWeb/Loader/LoadRequest.h +++ b/Userland/Libraries/LibWeb/Loader/LoadRequest.h @@ -8,7 +8,9 @@ #include #include +#include #include +#include #include 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 m_headers; ByteBuffer m_body; + Core::ElapsedTimer m_load_timer; }; } diff --git a/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp b/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp index 99d52c4fb8d..33df84b933f 100644 --- a/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp +++ b/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -32,7 +33,7 @@ ResourceLoader::ResourceLoader() { } -void ResourceLoader::load_sync(const LoadRequest& request, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback) +void ResourceLoader::load_sync(LoadRequest& request, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback) { Core::EventLoop loop; @@ -53,7 +54,7 @@ void ResourceLoader::load_sync(const LoadRequest& request, Function> s_resource_cache; -RefPtr ResourceLoader::load_resource(Resource::Type type, const LoadRequest& request) +RefPtr ResourceLoader::load_resource(Resource::Type type, LoadRequest& request) { if (!request.is_valid()) return nullptr; @@ -92,6 +93,7 @@ RefPtr ResourceLoader::load_resource(Resource::Type type, const LoadRe void ResourceLoader::load(const LoadRequest& request, Function& response_headers, Optional status_code)> success_callback, Function 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); diff --git a/Userland/Libraries/LibWeb/Loader/ResourceLoader.h b/Userland/Libraries/LibWeb/Loader/ResourceLoader.h index 2829b0cb242..f3756700c14 100644 --- a/Userland/Libraries/LibWeb/Loader/ResourceLoader.h +++ b/Userland/Libraries/LibWeb/Loader/ResourceLoader.h @@ -30,11 +30,11 @@ class ResourceLoader : public Core::Object { public: static ResourceLoader& the(); - RefPtr load_resource(Resource::Type, const LoadRequest&); + RefPtr load_resource(Resource::Type, LoadRequest&); - void load(const LoadRequest&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); + void load(LoadRequest&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); void load(const URL&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); - void load_sync(const LoadRequest&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); + void load_sync(LoadRequest&, Function& response_headers, Optional status_code)> success_callback, Function status_code)> error_callback = nullptr); Function on_load_counter_change; diff --git a/Userland/Libraries/LibWeb/Page/Page.cpp b/Userland/Libraries/LibWeb/Page/Page.cpp index 9219869684e..065747768e3 100644 --- a/Userland/Libraries/LibWeb/Page/Page.cpp +++ b/Userland/Libraries/LibWeb/Page/Page.cpp @@ -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); } diff --git a/Userland/Libraries/LibWeb/Page/Page.h b/Userland/Libraries/LibWeb/Page/Page.h index 217b7bffd24..d0f82a3a7c9 100644 --- a/Userland/Libraries/LibWeb/Page/Page.h +++ b/Userland/Libraries/LibWeb/Page/Page.h @@ -42,7 +42,7 @@ public: void set_focused_browsing_context(Badge, BrowsingContext&); void load(const URL&); - void load(const LoadRequest&); + void load(LoadRequest&); void load_html(const StringView&, const URL&);