mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 13:57:35 +00:00
Browser+LibWebView+WebContent: Add IPC to minimize and maximize window
Requests to maximize and minimize Browser windows will be coming from the WebContent process rather than the WebDriver process. Add hooks to propagate these requests back up to the Browser.
This commit is contained in:
parent
b57d7e4332
commit
1c398b32ce
7 changed files with 45 additions and 0 deletions
|
@ -264,6 +264,17 @@ Tab::Tab(BrowserWindow& window)
|
||||||
return this->window().size();
|
return this->window().size();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
view().on_maximize_window = [this]() {
|
||||||
|
this->window().set_maximized(true);
|
||||||
|
return this->window().rect();
|
||||||
|
};
|
||||||
|
|
||||||
|
view().on_minimize_window = [this]() {
|
||||||
|
this->window().set_minimized(true);
|
||||||
|
m_web_content_view->set_system_visibility_state(false);
|
||||||
|
return this->window().rect();
|
||||||
|
};
|
||||||
|
|
||||||
m_link_context_menu = GUI::Menu::construct();
|
m_link_context_menu = GUI::Menu::construct();
|
||||||
auto link_default_action = GUI::Action::create("&Open", g_icon_bag.go_to, [this](auto&) {
|
auto link_default_action = GUI::Action::create("&Open", g_icon_bag.go_to, [this](auto&) {
|
||||||
view().on_link_click(m_link_context_menu_url, "", 0);
|
view().on_link_click(m_link_context_menu_url, "", 0);
|
||||||
|
|
|
@ -421,6 +421,20 @@ Gfx::IntSize OutOfProcessWebView::notify_server_did_request_resize_window(Gfx::I
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gfx::IntRect OutOfProcessWebView::notify_server_did_request_maximize_window()
|
||||||
|
{
|
||||||
|
if (on_maximize_window)
|
||||||
|
return on_maximize_window();
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Gfx::IntRect OutOfProcessWebView::notify_server_did_request_minimize_window()
|
||||||
|
{
|
||||||
|
if (on_minimize_window)
|
||||||
|
return on_minimize_window();
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
void OutOfProcessWebView::notify_server_did_request_file(Badge<WebContentClient>, String const& path, i32 request_id)
|
void OutOfProcessWebView::notify_server_did_request_file(Badge<WebContentClient>, String const& path, i32 request_id)
|
||||||
{
|
{
|
||||||
auto file = FileSystemAccessClient::Client::the().try_request_file_read_only_approved(window(), path);
|
auto file = FileSystemAccessClient::Client::the().try_request_file_read_only_approved(window(), path);
|
||||||
|
|
|
@ -115,6 +115,8 @@ public:
|
||||||
Function<void()> on_restore_window;
|
Function<void()> on_restore_window;
|
||||||
Function<Gfx::IntPoint(Gfx::IntPoint const&)> on_reposition_window;
|
Function<Gfx::IntPoint(Gfx::IntPoint const&)> on_reposition_window;
|
||||||
Function<Gfx::IntSize(Gfx::IntSize const&)> on_resize_window;
|
Function<Gfx::IntSize(Gfx::IntSize const&)> on_resize_window;
|
||||||
|
Function<Gfx::IntRect()> on_maximize_window;
|
||||||
|
Function<Gfx::IntRect()> on_minimize_window;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OutOfProcessWebView();
|
OutOfProcessWebView();
|
||||||
|
@ -175,6 +177,8 @@ private:
|
||||||
virtual void notify_server_did_request_restore_window() override;
|
virtual void notify_server_did_request_restore_window() override;
|
||||||
virtual Gfx::IntPoint notify_server_did_request_reposition_window(Gfx::IntPoint const&) override;
|
virtual Gfx::IntPoint notify_server_did_request_reposition_window(Gfx::IntPoint const&) override;
|
||||||
virtual Gfx::IntSize notify_server_did_request_resize_window(Gfx::IntSize const&) override;
|
virtual Gfx::IntSize notify_server_did_request_resize_window(Gfx::IntSize const&) override;
|
||||||
|
virtual Gfx::IntRect notify_server_did_request_maximize_window() override;
|
||||||
|
virtual Gfx::IntRect notify_server_did_request_minimize_window() override;
|
||||||
virtual void notify_server_did_request_file(Badge<WebContentClient>, String const& path, i32) override;
|
virtual void notify_server_did_request_file(Badge<WebContentClient>, String const& path, i32) override;
|
||||||
|
|
||||||
void request_repaint();
|
void request_repaint();
|
||||||
|
|
|
@ -53,6 +53,8 @@ public:
|
||||||
virtual void notify_server_did_request_restore_window() = 0;
|
virtual void notify_server_did_request_restore_window() = 0;
|
||||||
virtual Gfx::IntPoint notify_server_did_request_reposition_window(Gfx::IntPoint const&) = 0;
|
virtual Gfx::IntPoint notify_server_did_request_reposition_window(Gfx::IntPoint const&) = 0;
|
||||||
virtual Gfx::IntSize notify_server_did_request_resize_window(Gfx::IntSize const&) = 0;
|
virtual Gfx::IntSize notify_server_did_request_resize_window(Gfx::IntSize const&) = 0;
|
||||||
|
virtual Gfx::IntRect notify_server_did_request_maximize_window() = 0;
|
||||||
|
virtual Gfx::IntRect notify_server_did_request_minimize_window() = 0;
|
||||||
virtual void notify_server_did_request_file(Badge<WebContentClient>, String const& path, i32) = 0;
|
virtual void notify_server_did_request_file(Badge<WebContentClient>, String const& path, i32) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,16 @@ Messages::WebContentClient::DidRequestResizeWindowResponse WebContentClient::did
|
||||||
return m_view.notify_server_did_request_resize_window(size);
|
return m_view.notify_server_did_request_resize_window(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Messages::WebContentClient::DidRequestMaximizeWindowResponse WebContentClient::did_request_maximize_window()
|
||||||
|
{
|
||||||
|
return m_view.notify_server_did_request_maximize_window();
|
||||||
|
}
|
||||||
|
|
||||||
|
Messages::WebContentClient::DidRequestMinimizeWindowResponse WebContentClient::did_request_minimize_window()
|
||||||
|
{
|
||||||
|
return m_view.notify_server_did_request_minimize_window();
|
||||||
|
}
|
||||||
|
|
||||||
void WebContentClient::did_request_file(String const& path, i32 request_id)
|
void WebContentClient::did_request_file(String const& path, i32 request_id)
|
||||||
{
|
{
|
||||||
m_view.notify_server_did_request_file({}, path, request_id);
|
m_view.notify_server_did_request_file({}, path, request_id);
|
||||||
|
|
|
@ -64,6 +64,8 @@ private:
|
||||||
virtual void did_request_restore_window() override;
|
virtual void did_request_restore_window() override;
|
||||||
virtual Messages::WebContentClient::DidRequestRepositionWindowResponse did_request_reposition_window(Gfx::IntPoint const&) override;
|
virtual Messages::WebContentClient::DidRequestRepositionWindowResponse did_request_reposition_window(Gfx::IntPoint const&) override;
|
||||||
virtual Messages::WebContentClient::DidRequestResizeWindowResponse did_request_resize_window(Gfx::IntSize const&) override;
|
virtual Messages::WebContentClient::DidRequestResizeWindowResponse did_request_resize_window(Gfx::IntSize const&) override;
|
||||||
|
virtual Messages::WebContentClient::DidRequestMaximizeWindowResponse did_request_maximize_window() override;
|
||||||
|
virtual Messages::WebContentClient::DidRequestMinimizeWindowResponse did_request_minimize_window() override;
|
||||||
virtual void did_request_file(String const& path, i32) override;
|
virtual void did_request_file(String const& path, i32) override;
|
||||||
|
|
||||||
ViewImplementation& m_view;
|
ViewImplementation& m_view;
|
||||||
|
|
|
@ -41,6 +41,8 @@ endpoint WebContentClient
|
||||||
did_request_restore_window() =|
|
did_request_restore_window() =|
|
||||||
did_request_reposition_window(Gfx::IntPoint position) => (Gfx::IntPoint window_position)
|
did_request_reposition_window(Gfx::IntPoint position) => (Gfx::IntPoint window_position)
|
||||||
did_request_resize_window(Gfx::IntSize size) => (Gfx::IntSize window_size)
|
did_request_resize_window(Gfx::IntSize size) => (Gfx::IntSize window_size)
|
||||||
|
did_request_maximize_window() => (Gfx::IntRect window_rect)
|
||||||
|
did_request_minimize_window() => (Gfx::IntRect window_rect)
|
||||||
did_request_file(String path, i32 request_id) =|
|
did_request_file(String path, i32 request_id) =|
|
||||||
|
|
||||||
did_output_js_console_message(i32 message_index) =|
|
did_output_js_console_message(i32 message_index) =|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue