Explorar o código

Browser+LibWeb+WebContent: Add action to clear resource cache

Timothy Flynn %!s(int64=4) %!d(string=hai) anos
pai
achega
855920fe13

+ 7 - 0
Userland/Applications/Browser/Tab.cpp

@@ -453,6 +453,13 @@ Tab::Tab(Type type)
             m_web_content_view->debug_request("collect-garbage");
         }
     }));
+    debug_menu.add_action(GUI::Action::create("Clear cache", { Mod_Ctrl | Mod_Shift, Key_C }, [this](auto&) {
+        if (m_type == Type::InProcessWebView) {
+            Web::ResourceLoader::the().clear_cache();
+        } else {
+            m_web_content_view->debug_request("clear-cache");
+        }
+    }));
 
     auto& help_menu = m_menubar->add_menu("Help");
     help_menu.add_action(WindowActions::the().about_action());

+ 6 - 0
Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp

@@ -236,4 +236,10 @@ bool ResourceLoader::is_port_blocked(int port)
     return false;
 }
 
+void ResourceLoader::clear_cache()
+{
+    dbgln("Clearing {} items from ResourceLoader cache", s_resource_cache.size());
+    s_resource_cache.clear();
+}
+
 }

+ 2 - 0
Userland/Libraries/LibWeb/Loader/ResourceLoader.h

@@ -56,6 +56,8 @@ public:
 
     const String& user_agent() const { return m_user_agent; }
 
+    void clear_cache();
+
 private:
     ResourceLoader();
     static bool is_port_blocked(int port);

+ 5 - 0
Userland/Services/WebContent/ClientConnection.cpp

@@ -37,6 +37,7 @@
 #include <LibWeb/DOM/Document.h>
 #include <LibWeb/Dump.h>
 #include <LibWeb/Layout/InitialContainingBlockBox.h>
+#include <LibWeb/Loader/ResourceLoader.h>
 #include <LibWeb/Page/Frame.h>
 #include <WebContent/ClientConnection.h>
 #include <WebContent/PageHost.h>
@@ -210,6 +211,10 @@ void ClientConnection::handle(const Messages::WebContentServer::DebugRequest& me
         m_page_host->set_should_show_line_box_borders(state);
         page().main_frame().set_needs_display(page().main_frame().viewport_rect());
     }
+
+    if (message.request() == "clear-cache") {
+        Web::ResourceLoader::the().clear_cache();
+    }
 }
 
 void ClientConnection::handle(const Messages::WebContentServer::GetSource&)