1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:47:47 +00:00

LibWebView+WebContent: Add IPCs to navigate the browser's history

This commit is contained in:
Timothy Flynn 2022-11-11 13:33:11 -05:00 committed by Linus Groh
parent f84b2e9e7d
commit 24fb7cd0ad
6 changed files with 48 additions and 0 deletions

View file

@ -309,6 +309,24 @@ void OutOfProcessWebView::notify_server_did_finish_loading(Badge<WebContentClien
on_load_finish(url); on_load_finish(url);
} }
void OutOfProcessWebView::notify_server_did_request_navigate_back(Badge<WebContentClient>)
{
if (on_navigate_back)
on_navigate_back();
}
void OutOfProcessWebView::notify_server_did_request_navigate_forward(Badge<WebContentClient>)
{
if (on_navigate_forward)
on_navigate_forward();
}
void OutOfProcessWebView::notify_server_did_request_refresh(Badge<WebContentClient>)
{
if (on_refresh)
on_refresh();
}
void OutOfProcessWebView::notify_server_did_request_context_menu(Badge<WebContentClient>, Gfx::IntPoint const& content_position) void OutOfProcessWebView::notify_server_did_request_context_menu(Badge<WebContentClient>, Gfx::IntPoint const& content_position)
{ {
if (on_context_menu_request) if (on_context_menu_request)

View file

@ -84,6 +84,9 @@ public:
Function<void(String const&)> on_title_change; Function<void(String const&)> on_title_change;
Function<void(const AK::URL&)> on_load_start; Function<void(const AK::URL&)> on_load_start;
Function<void(const AK::URL&)> on_load_finish; Function<void(const AK::URL&)> on_load_finish;
Function<void()> on_navigate_back;
Function<void()> on_navigate_forward;
Function<void()> on_refresh;
Function<void(Gfx::Bitmap const&)> on_favicon_change; Function<void(Gfx::Bitmap const&)> on_favicon_change;
Function<void(const AK::URL&)> on_url_drop; Function<void(const AK::URL&)> on_url_drop;
Function<void(Web::DOM::Document*)> on_set_document; Function<void(Web::DOM::Document*)> on_set_document;
@ -145,6 +148,9 @@ private:
virtual void notify_server_did_middle_click_link(Badge<WebContentClient>, const AK::URL&, String const& target, unsigned modifiers) override; virtual void notify_server_did_middle_click_link(Badge<WebContentClient>, const AK::URL&, String const& target, unsigned modifiers) override;
virtual void notify_server_did_start_loading(Badge<WebContentClient>, const AK::URL&) override; virtual void notify_server_did_start_loading(Badge<WebContentClient>, const AK::URL&) override;
virtual void notify_server_did_finish_loading(Badge<WebContentClient>, const AK::URL&) override; virtual void notify_server_did_finish_loading(Badge<WebContentClient>, const AK::URL&) override;
virtual void notify_server_did_request_navigate_back(Badge<WebContentClient>) override;
virtual void notify_server_did_request_navigate_forward(Badge<WebContentClient>) override;
virtual void notify_server_did_request_refresh(Badge<WebContentClient>) override;
virtual void notify_server_did_request_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&) override; virtual void notify_server_did_request_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&) override;
virtual void notify_server_did_request_link_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers) override; virtual void notify_server_did_request_link_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers) override;
virtual void notify_server_did_request_image_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers, Gfx::ShareableBitmap const&) override; virtual void notify_server_did_request_image_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers, Gfx::ShareableBitmap const&) override;

View file

@ -35,6 +35,9 @@ public:
virtual void notify_server_did_middle_click_link(Badge<WebContentClient>, const AK::URL&, String const& target, unsigned modifiers) = 0; virtual void notify_server_did_middle_click_link(Badge<WebContentClient>, const AK::URL&, String const& target, unsigned modifiers) = 0;
virtual void notify_server_did_start_loading(Badge<WebContentClient>, const AK::URL&) = 0; virtual void notify_server_did_start_loading(Badge<WebContentClient>, const AK::URL&) = 0;
virtual void notify_server_did_finish_loading(Badge<WebContentClient>, const AK::URL&) = 0; virtual void notify_server_did_finish_loading(Badge<WebContentClient>, const AK::URL&) = 0;
virtual void notify_server_did_request_navigate_back(Badge<WebContentClient>) = 0;
virtual void notify_server_did_request_navigate_forward(Badge<WebContentClient>) = 0;
virtual void notify_server_did_request_refresh(Badge<WebContentClient>) = 0;
virtual void notify_server_did_request_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&) = 0; virtual void notify_server_did_request_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&) = 0;
virtual void notify_server_did_request_link_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers) = 0; virtual void notify_server_did_request_link_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers) = 0;
virtual void notify_server_did_request_image_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers, Gfx::ShareableBitmap const&) = 0; virtual void notify_server_did_request_image_context_menu(Badge<WebContentClient>, Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers, Gfx::ShareableBitmap const&) = 0;

View file

@ -33,6 +33,21 @@ void WebContentClient::did_finish_loading(AK::URL const& url)
m_view.notify_server_did_finish_loading({}, url); m_view.notify_server_did_finish_loading({}, url);
} }
void WebContentClient::did_request_navigate_back()
{
m_view.notify_server_did_request_navigate_back({});
}
void WebContentClient::did_request_navigate_forward()
{
m_view.notify_server_did_request_navigate_forward({});
}
void WebContentClient::did_request_refresh()
{
m_view.notify_server_did_request_refresh({});
}
void WebContentClient::did_invalidate_content_rect(Gfx::IntRect const& content_rect) void WebContentClient::did_invalidate_content_rect(Gfx::IntRect const& content_rect)
{ {
dbgln_if(SPAM_DEBUG, "handle: WebContentClient::DidInvalidateContentRect! content_rect={}", content_rect); dbgln_if(SPAM_DEBUG, "handle: WebContentClient::DidInvalidateContentRect! content_rect={}", content_rect);

View file

@ -31,6 +31,9 @@ private:
virtual void did_paint(Gfx::IntRect const&, i32) override; virtual void did_paint(Gfx::IntRect const&, i32) override;
virtual void did_finish_loading(AK::URL const&) override; virtual void did_finish_loading(AK::URL const&) override;
virtual void did_request_navigate_back() override;
virtual void did_request_navigate_forward() override;
virtual void did_request_refresh() override;
virtual void did_invalidate_content_rect(Gfx::IntRect const&) override; virtual void did_invalidate_content_rect(Gfx::IntRect const&) override;
virtual void did_change_selection() override; virtual void did_change_selection() override;
virtual void did_request_cursor_change(i32) override; virtual void did_request_cursor_change(i32) override;

View file

@ -11,6 +11,9 @@ endpoint WebContentClient
{ {
did_start_loading(URL url) =| did_start_loading(URL url) =|
did_finish_loading(URL url) =| did_finish_loading(URL url) =|
did_request_navigate_back() =|
did_request_navigate_forward() =|
did_request_refresh() =|
did_paint(Gfx::IntRect content_rect, i32 bitmap_id) =| did_paint(Gfx::IntRect content_rect, i32 bitmap_id) =|
did_invalidate_content_rect(Gfx::IntRect content_rect) =| did_invalidate_content_rect(Gfx::IntRect content_rect) =|
did_change_selection() =| did_change_selection() =|