Bläddra i källkod

LibWeb: Added get source functionality and hook event

Brandon Scott 4 år sedan
förälder
incheckning
2f56a86a4e

+ 11 - 0
Userland/Libraries/LibWeb/OutOfProcessWebView.cpp

@@ -314,6 +314,12 @@ String OutOfProcessWebView::notify_server_did_request_prompt(Badge<WebContentCli
     return {};
 }
 
+void OutOfProcessWebView::notify_server_did_get_source(const URL& url, const String& source)
+{
+    if (on_get_source)
+        on_get_source(url, source);
+}
+
 void OutOfProcessWebView::did_scroll()
 {
     client().post_message(Messages::WebContentServer::SetViewportRect(visible_content_rect()));
@@ -340,4 +346,9 @@ void OutOfProcessWebView::debug_request(const String& request, const String& arg
     client().post_message(Messages::WebContentServer::DebugRequest(request, argument));
 }
 
+void OutOfProcessWebView::get_source()
+{
+    client().post_message(Messages::WebContentServer::GetSource());
+}
+
 }

+ 2 - 0
Userland/Libraries/LibWeb/OutOfProcessWebView.h

@@ -50,6 +50,7 @@ public:
     void load_empty_document();
 
     void debug_request(const String& request, const String& argument = {});
+    void get_source();
 
     void notify_server_did_layout(Badge<WebContentClient>, const Gfx::IntSize& content_size);
     void notify_server_did_paint(Badge<WebContentClient>, i32 bitmap_id);
@@ -68,6 +69,7 @@ public:
     void notify_server_did_request_alert(Badge<WebContentClient>, const String& message);
     bool notify_server_did_request_confirm(Badge<WebContentClient>, const String& message);
     String notify_server_did_request_prompt(Badge<WebContentClient>, const String& message, const String& default_);
+    void notify_server_did_get_source(const URL& url, const String& source);
 
 private:
     OutOfProcessWebView();

+ 5 - 0
Userland/Libraries/LibWeb/WebContentClient.cpp

@@ -131,6 +131,11 @@ void WebContentClient::handle(const Messages::WebContentClient::DidRequestLinkCo
     m_view.notify_server_did_request_link_context_menu({}, message.content_position(), message.url(), message.target(), message.modifiers());
 }
 
+void WebContentClient::handle(const Messages::WebContentClient::DidGetSource& message)
+{
+    m_view.notify_server_did_get_source(message.url(), message.source());
+}
+
 OwnPtr<Messages::WebContentClient::DidRequestAlertResponse> WebContentClient::handle(const Messages::WebContentClient::DidRequestAlert& message)
 {
     m_view.notify_server_did_request_alert({}, message.message());

+ 1 - 0
Userland/Libraries/LibWeb/WebContentClient.h

@@ -64,6 +64,7 @@ private:
     virtual void handle(const Messages::WebContentClient::DidStartLoading&) override;
     virtual void handle(const Messages::WebContentClient::DidRequestContextMenu&) override;
     virtual void handle(const Messages::WebContentClient::DidRequestLinkContextMenu&) override;
+    virtual void handle(const Messages::WebContentClient::DidGetSource& message);
     virtual OwnPtr<Messages::WebContentClient::DidRequestAlertResponse> handle(const Messages::WebContentClient::DidRequestAlert&) override;
     virtual OwnPtr<Messages::WebContentClient::DidRequestConfirmResponse> handle(const Messages::WebContentClient::DidRequestConfirm&) override;
     virtual OwnPtr<Messages::WebContentClient::DidRequestPromptResponse> handle(const Messages::WebContentClient::DidRequestPrompt&) override;

+ 1 - 0
Userland/Libraries/LibWeb/WebViewHooks.h

@@ -46,6 +46,7 @@ public:
     Function<void(const Gfx::Bitmap&)> on_favicon_change;
     Function<void(const URL&)> on_url_drop;
     Function<void(DOM::Document*)> on_set_document;
+    Function<void(const URL&, const String&)> on_get_source;
 };
 
 }