Ver código fonte

LibWeb: Start tracking elapsed time when a resource is loaded

Brian Gianforcaro 3 anos atrás
pai
commit
bca8707e15

+ 1 - 1
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");

+ 1 - 1
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&);
 

+ 6 - 0
Userland/Libraries/LibWeb/Loader/LoadRequest.h

@@ -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;
 };
 
 }

+ 4 - 2
Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp

@@ -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);

+ 3 - 3
Userland/Libraries/LibWeb/Loader/ResourceLoader.h

@@ -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;
 

+ 1 - 1
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);
 }

+ 1 - 1
Userland/Libraries/LibWeb/Page/Page.h

@@ -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&);