mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
LibWeb: Rename WebContentView => OutOfProcessWebView
This commit is contained in:
parent
56c3748dcc
commit
b6e18133ae
Notes:
sideshowbarker
2024-07-19 03:29:08 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/b6e18133aec
10 changed files with 46 additions and 46 deletions
|
@ -57,7 +57,7 @@
|
|||
#include <LibWeb/Loader/ResourceLoader.h>
|
||||
#include <LibWeb/Page/Frame.h>
|
||||
#include <LibWeb/InProcessWebView.h>
|
||||
#include <LibWeb/WebContentView.h>
|
||||
#include <LibWeb/OutOfProcessWebView.h>
|
||||
|
||||
namespace Browser {
|
||||
|
||||
|
@ -85,7 +85,7 @@ Tab::Tab(Type type)
|
|||
if (m_type == Type::InProcessWebView)
|
||||
m_page_view = widget.add<Web::InProcessWebView>();
|
||||
else
|
||||
m_web_content_view = widget.add<WebContentView>();
|
||||
m_web_content_view = widget.add<OutOfProcessWebView>();
|
||||
|
||||
m_go_back_action = GUI::CommonActions::make_go_back_action([this](auto&) { go_back(); }, this);
|
||||
m_go_forward_action = GUI::CommonActions::make_go_forward_action([this](auto&) { go_forward(); }, this);
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#include <LibHTTP/HttpJob.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
|
||||
class WebContentView;
|
||||
class OutOfProcessWebView;
|
||||
|
||||
namespace Web {
|
||||
class WebViewHooks;
|
||||
|
@ -88,7 +88,7 @@ private:
|
|||
History m_history;
|
||||
|
||||
RefPtr<Web::InProcessWebView> m_page_view;
|
||||
RefPtr<WebContentView> m_web_content_view;
|
||||
RefPtr<OutOfProcessWebView> m_web_content_view;
|
||||
|
||||
RefPtr<GUI::Action> m_go_back_action;
|
||||
RefPtr<GUI::Action> m_go_forward_action;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#include <LibGUI/StatusBar.h>
|
||||
#include <LibGUI/Widget.h>
|
||||
#include <LibGUI/Window.h>
|
||||
#include <LibWeb/WebContentView.h>
|
||||
#include <LibWeb/OutOfProcessWebView.h>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
|
@ -39,7 +39,7 @@ int main(int argc, char** argv)
|
|||
auto& main_widget = window->set_main_widget<GUI::Widget>();
|
||||
main_widget.set_fill_with_background_color(true);
|
||||
main_widget.set_layout<GUI::VerticalBoxLayout>();
|
||||
auto& view = main_widget.add<WebContentView>();
|
||||
auto& view = main_widget.add<OutOfProcessWebView>();
|
||||
auto& statusbar = main_widget.add<GUI::StatusBar>();
|
||||
window->set_title("WebView");
|
||||
window->resize(640, 480);
|
||||
|
|
|
@ -38,9 +38,9 @@ The same basic concept applies to **ProtocolServer** and **ImageDecoder** as wel
|
|||
|
||||
![](classes.png)
|
||||
|
||||
In the GUI application process, a `WebContentView` widget is placed somewhere in a window, and it takes care of spawning all of the helper processes, etc.
|
||||
In the GUI application process, a `OutOfProcessWebView` widget is placed somewhere in a window, and it takes care of spawning all of the helper processes, etc.
|
||||
|
||||
Internally, the `WebContentView` has a `WebContentClient` object that implements the client side of the **WebContent** IPC protocol.
|
||||
Internally, the `OutOfProcessWebView` has a `WebContentClient` object that implements the client side of the **WebContent** IPC protocol.
|
||||
|
||||
The `WebContentClient` speaks to a `WebContent::ClientConnection` in the **WebContent** process. Internally, the `WebContent::ClientConnection` has a `WebContent::PageHost` which hosts the **LibWeb** engine's main `Web::Page` object.
|
||||
|
||||
|
|
|
@ -155,6 +155,7 @@ set(SOURCES
|
|||
Loader/ImageResource.cpp
|
||||
Loader/Resource.cpp
|
||||
Loader/ResourceLoader.cpp
|
||||
OutOfProcessWebView.cpp
|
||||
Page/EventHandler.cpp
|
||||
Page/Frame.cpp
|
||||
Page/Page.cpp
|
||||
|
@ -168,7 +169,6 @@ set(SOURCES
|
|||
StylePropertiesModel.cpp
|
||||
URLEncoder.cpp
|
||||
WebContentClient.cpp
|
||||
WebContentView.cpp
|
||||
)
|
||||
|
||||
set(GENERATED_SOURCES
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "WebContentView.h"
|
||||
#include "OutOfProcessWebView.h"
|
||||
#include "WebContentClient.h"
|
||||
#include <AK/SharedBuffer.h>
|
||||
#include <LibGUI/Painter.h>
|
||||
|
@ -32,24 +32,24 @@
|
|||
#include <LibGUI/Window.h>
|
||||
#include <LibGfx/SystemTheme.h>
|
||||
|
||||
WebContentView::WebContentView()
|
||||
OutOfProcessWebView::OutOfProcessWebView()
|
||||
{
|
||||
set_should_hide_unnecessary_scrollbars(true);
|
||||
m_client = WebContentClient::construct(*this);
|
||||
client().post_message(Messages::WebContentServer::UpdateSystemTheme(Gfx::current_system_theme_buffer_id()));
|
||||
}
|
||||
|
||||
WebContentView::~WebContentView()
|
||||
OutOfProcessWebView::~OutOfProcessWebView()
|
||||
{
|
||||
}
|
||||
|
||||
void WebContentView::load(const URL& url)
|
||||
void OutOfProcessWebView::load(const URL& url)
|
||||
{
|
||||
m_url = url;
|
||||
client().post_message(Messages::WebContentServer::LoadURL(url));
|
||||
}
|
||||
|
||||
void WebContentView::paint_event(GUI::PaintEvent& event)
|
||||
void OutOfProcessWebView::paint_event(GUI::PaintEvent& event)
|
||||
{
|
||||
GUI::ScrollableWidget::paint_event(event);
|
||||
|
||||
|
@ -62,7 +62,7 @@ void WebContentView::paint_event(GUI::PaintEvent& event)
|
|||
painter.blit({ 0, 0 }, *m_front_bitmap, m_front_bitmap->rect());
|
||||
}
|
||||
|
||||
void WebContentView::resize_event(GUI::ResizeEvent& event)
|
||||
void OutOfProcessWebView::resize_event(GUI::ResizeEvent& event)
|
||||
{
|
||||
GUI::ScrollableWidget::resize_event(event);
|
||||
|
||||
|
@ -76,27 +76,27 @@ void WebContentView::resize_event(GUI::ResizeEvent& event)
|
|||
request_repaint();
|
||||
}
|
||||
|
||||
void WebContentView::keydown_event(GUI::KeyEvent& event)
|
||||
void OutOfProcessWebView::keydown_event(GUI::KeyEvent& event)
|
||||
{
|
||||
client().post_message(Messages::WebContentServer::KeyDown(event.key(), event.modifiers(), event.code_point()));
|
||||
}
|
||||
|
||||
void WebContentView::mousedown_event(GUI::MouseEvent& event)
|
||||
void OutOfProcessWebView::mousedown_event(GUI::MouseEvent& event)
|
||||
{
|
||||
client().post_message(Messages::WebContentServer::MouseDown(to_content_position(event.position()), event.button(), event.buttons(), event.modifiers()));
|
||||
}
|
||||
|
||||
void WebContentView::mouseup_event(GUI::MouseEvent& event)
|
||||
void OutOfProcessWebView::mouseup_event(GUI::MouseEvent& event)
|
||||
{
|
||||
client().post_message(Messages::WebContentServer::MouseUp(to_content_position(event.position()), event.button(), event.buttons(), event.modifiers()));
|
||||
}
|
||||
|
||||
void WebContentView::mousemove_event(GUI::MouseEvent& event)
|
||||
void OutOfProcessWebView::mousemove_event(GUI::MouseEvent& event)
|
||||
{
|
||||
client().post_message(Messages::WebContentServer::MouseMove(to_content_position(event.position()), event.button(), event.buttons(), event.modifiers()));
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_paint(Badge<WebContentClient>, i32 shbuf_id)
|
||||
void OutOfProcessWebView::notify_server_did_paint(Badge<WebContentClient>, i32 shbuf_id)
|
||||
{
|
||||
if (m_back_bitmap->shbuf_id() == shbuf_id) {
|
||||
swap(m_back_bitmap, m_front_bitmap);
|
||||
|
@ -104,7 +104,7 @@ void WebContentView::notify_server_did_paint(Badge<WebContentClient>, i32 shbuf_
|
|||
}
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_invalidate_content_rect(Badge<WebContentClient>, [[maybe_unused]] const Gfx::IntRect& content_rect)
|
||||
void OutOfProcessWebView::notify_server_did_invalidate_content_rect(Badge<WebContentClient>, [[maybe_unused]] const Gfx::IntRect& content_rect)
|
||||
{
|
||||
#ifdef DEBUG_SPAM
|
||||
dbg() << "server did invalidate content_rect: " << content_rect << ", current shbuf_id=" << m_bitmap->shbuf_id();
|
||||
|
@ -112,28 +112,28 @@ void WebContentView::notify_server_did_invalidate_content_rect(Badge<WebContentC
|
|||
request_repaint();
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_change_selection(Badge<WebContentClient>)
|
||||
void OutOfProcessWebView::notify_server_did_change_selection(Badge<WebContentClient>)
|
||||
{
|
||||
request_repaint();
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_layout(Badge<WebContentClient>, const Gfx::IntSize& content_size)
|
||||
void OutOfProcessWebView::notify_server_did_layout(Badge<WebContentClient>, const Gfx::IntSize& content_size)
|
||||
{
|
||||
set_content_size(content_size);
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_change_title(Badge<WebContentClient>, const String& title)
|
||||
void OutOfProcessWebView::notify_server_did_change_title(Badge<WebContentClient>, const String& title)
|
||||
{
|
||||
if (on_title_change)
|
||||
on_title_change(title);
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_request_scroll_into_view(Badge<WebContentClient>, const Gfx::IntRect& rect)
|
||||
void OutOfProcessWebView::notify_server_did_request_scroll_into_view(Badge<WebContentClient>, const Gfx::IntRect& rect)
|
||||
{
|
||||
scroll_into_view(rect, true, true);
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_hover_link(Badge<WebContentClient>, const URL& url)
|
||||
void OutOfProcessWebView::notify_server_did_hover_link(Badge<WebContentClient>, const URL& url)
|
||||
{
|
||||
if (window())
|
||||
window()->set_override_cursor(GUI::StandardCursor::Hand);
|
||||
|
@ -141,7 +141,7 @@ void WebContentView::notify_server_did_hover_link(Badge<WebContentClient>, const
|
|||
on_link_hover(url);
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_unhover_link(Badge<WebContentClient>)
|
||||
void OutOfProcessWebView::notify_server_did_unhover_link(Badge<WebContentClient>)
|
||||
{
|
||||
if (window())
|
||||
window()->set_override_cursor(GUI::StandardCursor::None);
|
||||
|
@ -149,48 +149,48 @@ void WebContentView::notify_server_did_unhover_link(Badge<WebContentClient>)
|
|||
on_link_hover({});
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_click_link(Badge<WebContentClient>, const URL& url, const String& target, unsigned int modifiers)
|
||||
void OutOfProcessWebView::notify_server_did_click_link(Badge<WebContentClient>, const URL& url, const String& target, unsigned int modifiers)
|
||||
{
|
||||
if (on_link_click)
|
||||
on_link_click(url, target, modifiers);
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_middle_click_link(Badge<WebContentClient>, const URL& url, const String& target, unsigned int modifiers)
|
||||
void OutOfProcessWebView::notify_server_did_middle_click_link(Badge<WebContentClient>, const URL& url, const String& target, unsigned int modifiers)
|
||||
{
|
||||
if (on_link_middle_click)
|
||||
on_link_middle_click(url, target, modifiers);
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_start_loading(Badge<WebContentClient>, const URL& url)
|
||||
void OutOfProcessWebView::notify_server_did_start_loading(Badge<WebContentClient>, const URL& url)
|
||||
{
|
||||
if (on_load_start)
|
||||
on_load_start(url);
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_request_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position)
|
||||
void OutOfProcessWebView::notify_server_did_request_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position)
|
||||
{
|
||||
if (on_context_menu_request)
|
||||
on_context_menu_request(screen_relative_rect().location().translated(to_widget_position(content_position)));
|
||||
}
|
||||
|
||||
void WebContentView::notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const URL& url, const String&, unsigned)
|
||||
void OutOfProcessWebView::notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const URL& url, const String&, unsigned)
|
||||
{
|
||||
if (on_link_context_menu_request)
|
||||
on_link_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)));
|
||||
}
|
||||
|
||||
void WebContentView::did_scroll()
|
||||
void OutOfProcessWebView::did_scroll()
|
||||
{
|
||||
client().post_message(Messages::WebContentServer::SetViewportRect(visible_content_rect()));
|
||||
request_repaint();
|
||||
}
|
||||
|
||||
void WebContentView::request_repaint()
|
||||
void OutOfProcessWebView::request_repaint()
|
||||
{
|
||||
client().post_message(Messages::WebContentServer::Paint(m_back_bitmap->rect().translated(horizontal_scrollbar().value(), vertical_scrollbar().value()), m_back_bitmap->shbuf_id()));
|
||||
}
|
||||
|
||||
WebContentClient& WebContentView::client()
|
||||
WebContentClient& OutOfProcessWebView::client()
|
||||
{
|
||||
return *m_client;
|
||||
}
|
|
@ -33,13 +33,13 @@
|
|||
|
||||
class WebContentClient;
|
||||
|
||||
class WebContentView final
|
||||
class OutOfProcessWebView final
|
||||
: public GUI::ScrollableWidget
|
||||
, public Web::WebViewHooks {
|
||||
C_OBJECT(WebContentView);
|
||||
C_OBJECT(OutOfProcessWebView);
|
||||
|
||||
public:
|
||||
virtual ~WebContentView() override;
|
||||
virtual ~OutOfProcessWebView() override;
|
||||
|
||||
URL url() const { return m_url; }
|
||||
void load(const URL&);
|
||||
|
@ -59,7 +59,7 @@ public:
|
|||
void notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers);
|
||||
|
||||
private:
|
||||
WebContentView();
|
||||
OutOfProcessWebView();
|
||||
|
||||
// ^Widget
|
||||
virtual bool accepts_focus() const override { return true; }
|
|
@ -25,10 +25,10 @@
|
|||
*/
|
||||
|
||||
#include "WebContentClient.h"
|
||||
#include "WebContentView.h"
|
||||
#include "OutOfProcessWebView.h"
|
||||
#include <AK/SharedBuffer.h>
|
||||
|
||||
WebContentClient::WebContentClient(WebContentView& view)
|
||||
WebContentClient::WebContentClient(OutOfProcessWebView& view)
|
||||
: IPC::ServerConnection<WebContentClientEndpoint, WebContentServerEndpoint>(*this, "/tmp/portal/webcontent")
|
||||
, m_view(view)
|
||||
{
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include <WebContent/WebContentClientEndpoint.h>
|
||||
#include <WebContent/WebContentServerEndpoint.h>
|
||||
|
||||
class WebContentView;
|
||||
class OutOfProcessWebView;
|
||||
|
||||
class WebContentClient
|
||||
: public IPC::ServerConnection<WebContentClientEndpoint, WebContentServerEndpoint>
|
||||
|
@ -42,7 +42,7 @@ public:
|
|||
virtual void handshake() override;
|
||||
|
||||
private:
|
||||
WebContentClient(WebContentView&);
|
||||
WebContentClient(OutOfProcessWebView&);
|
||||
|
||||
virtual void handle(const Messages::WebContentClient::DidPaint&) override;
|
||||
virtual void handle(const Messages::WebContentClient::DidFinishLoad&) override;
|
||||
|
@ -59,5 +59,5 @@ private:
|
|||
virtual void handle(const Messages::WebContentClient::DidRequestContextMenu&) override;
|
||||
virtual void handle(const Messages::WebContentClient::DidRequestLinkContextMenu&) override;
|
||||
|
||||
WebContentView& m_view;
|
||||
OutOfProcessWebView& m_view;
|
||||
};
|
||||
|
|
|
@ -4,9 +4,9 @@ Multi-process model:
|
|||
|
||||
Server Client
|
||||
|
||||
WebContent GUI process (WebContentView embedder)
|
||||
WebContent GUI process (OutOfProcessWebView embedder)
|
||||
|
||||
WebContentView (this is a GUI::Widget)
|
||||
OutOfProcessWebView (this is a GUI::Widget)
|
||||
WebContent::ClientConnection <---> WebContentClient
|
||||
WebContent::PageHost (Web::PageClient)
|
||||
Web::Page
|
||||
|
|
Loading…
Reference in a new issue