diff options
author | Andreas Kling <kling@serenityos.org> | 2022-04-06 14:57:14 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-04-06 19:35:07 +0200 |
commit | 59e8dedea2f3ba572c4804e89c3102132ce8d567 (patch) | |
tree | 01c04de3e192bdf5acae844c390f4a4c8ed2b84c /Userland | |
parent | e076f9997f8e8c14ce1c9d5eb6c8f0786a36a032 (diff) | |
download | serenity-59e8dedea2f3ba572c4804e89c3102132ce8d567.zip |
LibWeb: Remove the InProcessWebView widget
Let's simplify our offering by only having the OutOfProcessWebView.
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Libraries/LibWeb/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/Forward.h | 1 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/InProcessWebView.cpp | 395 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/InProcessWebView.h | 103 | ||||
-rw-r--r-- | Userland/Services/WebContent/Documentation.txt | 11 |
5 files changed, 0 insertions, 511 deletions
diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 44f28f723e..499c8cfbd3 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -233,7 +233,6 @@ set(SOURCES HTML/WorkerLocation.cpp HighResolutionTime/Performance.cpp ImageDecoding.cpp - InProcessWebView.cpp IntersectionObserver/IntersectionObserver.cpp Layout/BlockContainer.cpp Layout/BlockFormattingContext.cpp diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index 48bc54cbc1..759b585382 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -346,7 +346,6 @@ namespace Web { class EditEventHandler; class EventHandler; class FrameLoader; -class InProcessWebView; class LoadRequest; class Origin; class OutOfProcessWebView; diff --git a/Userland/Libraries/LibWeb/InProcessWebView.cpp b/Userland/Libraries/LibWeb/InProcessWebView.cpp deleted file mode 100644 index 3ecd087454..0000000000 --- a/Userland/Libraries/LibWeb/InProcessWebView.cpp +++ /dev/null @@ -1,395 +0,0 @@ -/* - * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org> - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include <AK/URL.h> -#include <LibCore/MimeData.h> -#include <LibGUI/Application.h> -#include <LibGUI/InputBox.h> -#include <LibGUI/MessageBox.h> -#include <LibGUI/Painter.h> -#include <LibGUI/Scrollbar.h> -#include <LibGUI/Window.h> -#include <LibGfx/ShareableBitmap.h> -#include <LibWeb/HTML/BrowsingContext.h> -#include <LibWeb/HTML/HTMLAnchorElement.h> -#include <LibWeb/HTML/Parser/HTMLParser.h> -#include <LibWeb/InProcessWebView.h> -#include <LibWeb/Layout/InitialContainingBlock.h> -#include <LibWeb/Layout/TextNode.h> -#include <LibWeb/Loader/ResourceLoader.h> -#include <LibWeb/Page/EventHandler.h> -#include <LibWeb/Painting/PaintContext.h> -#include <LibWeb/Painting/PaintableBox.h> -#include <LibWeb/UIEvents/MouseEvent.h> - -REGISTER_WIDGET(Web, InProcessWebView) - -namespace Web { - -InProcessWebView::InProcessWebView() - : m_page(make<Page>(*this)) -{ - set_should_hide_unnecessary_scrollbars(true); - set_background_role(ColorRole::Base); - set_focus_policy(GUI::FocusPolicy::StrongFocus); -} - -InProcessWebView::~InProcessWebView() = default; - -void InProcessWebView::select_all() -{ - page().focused_context().select_all(); - update(); -} - -String InProcessWebView::selected_text() const -{ - return page().focused_context().selected_text(); -} - -void InProcessWebView::set_preferred_color_scheme(CSS::PreferredColorScheme color_scheme) -{ - m_preferred_color_scheme = color_scheme; - if (auto* document = page().top_level_browsing_context().active_document()) - document->invalidate_style(); -} - -void InProcessWebView::page_did_layout() -{ - VERIFY(layout_root()); - VERIFY(layout_root()->paint_box()); - set_content_size(layout_root()->paint_box()->content_size().to_type<int>()); -} - -void InProcessWebView::page_did_change_title(String const& title) -{ - if (on_title_change) - on_title_change(title); -} - -void InProcessWebView::page_did_set_document_in_top_level_browsing_context(DOM::Document* document) -{ - if (on_set_document) - on_set_document(document); - layout_and_sync_size(); - scroll_to_top(); - update(); -} - -void InProcessWebView::page_did_start_loading(const AK::URL& url) -{ - if (on_load_start) - on_load_start(url); -} - -void InProcessWebView::page_did_finish_loading(const AK::URL& url) -{ - if (on_load_finish) - on_load_finish(url); -} - -void InProcessWebView::page_did_change_selection() -{ - update(); -} - -void InProcessWebView::page_did_request_cursor_change(Gfx::StandardCursor cursor) -{ - set_override_cursor(cursor); -} - -void InProcessWebView::page_did_request_context_menu(Gfx::IntPoint const& content_position) -{ - if (on_context_menu_request) - on_context_menu_request(screen_relative_rect().location().translated(to_widget_position(content_position))); -} - -void InProcessWebView::page_did_request_link_context_menu(Gfx::IntPoint const& content_position, const AK::URL& url, [[maybe_unused]] String const& target, [[maybe_unused]] unsigned modifiers) -{ - if (on_link_context_menu_request) - on_link_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position))); -} - -void InProcessWebView::page_did_request_image_context_menu(Gfx::IntPoint const& content_position, const AK::URL& url, [[maybe_unused]] String const& target, [[maybe_unused]] unsigned modifiers, Gfx::Bitmap const* bitmap) -{ - if (!on_image_context_menu_request) - return; - Gfx::ShareableBitmap shareable_bitmap; - if (bitmap) - shareable_bitmap = bitmap->to_shareable_bitmap(); - on_image_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)), move(shareable_bitmap)); -} - -void InProcessWebView::page_did_click_link(const AK::URL& url, String const& target, unsigned modifiers) -{ - if (on_link_click) - on_link_click(url, target, modifiers); -} - -void InProcessWebView::page_did_middle_click_link(const AK::URL& url, String const& target, unsigned modifiers) -{ - if (on_link_middle_click) - on_link_middle_click(url, target, modifiers); -} - -void InProcessWebView::page_did_enter_tooltip_area([[maybe_unused]] Gfx::IntPoint const& content_position, String const& title) -{ - GUI::Application::the()->show_tooltip(title, nullptr); -} - -void InProcessWebView::page_did_leave_tooltip_area() -{ - GUI::Application::the()->hide_tooltip(); -} - -void InProcessWebView::page_did_hover_link(const AK::URL& url) -{ - if (on_link_hover) - on_link_hover(url); -} - -void InProcessWebView::page_did_unhover_link() -{ - if (on_link_hover) - on_link_hover({}); -} - -void InProcessWebView::page_did_invalidate(Gfx::IntRect const&) -{ - update(); -} - -void InProcessWebView::page_did_change_favicon(Gfx::Bitmap const& bitmap) -{ - if (on_favicon_change) - on_favicon_change(bitmap); -} - -void InProcessWebView::layout_and_sync_size() -{ - if (!document()) - return; - - bool had_vertical_scrollbar = vertical_scrollbar().is_visible(); - bool had_horizontal_scrollbar = horizontal_scrollbar().is_visible(); - - page().top_level_browsing_context().set_size(available_size()); - set_content_size(layout_root()->paint_box()->content_size().to_type<int>()); - - // NOTE: If layout caused us to gain or lose scrollbars, we have to lay out again - // since the scrollbars now take up some of the available space. - if (had_vertical_scrollbar != vertical_scrollbar().is_visible() || had_horizontal_scrollbar != horizontal_scrollbar().is_visible()) { - page().top_level_browsing_context().set_size(available_size()); - set_content_size(layout_root()->paint_box()->content_size().to_type<int>()); - } - - page().top_level_browsing_context().set_viewport_scroll_offset({ horizontal_scrollbar().value(), vertical_scrollbar().value() }); -} - -void InProcessWebView::resize_event(GUI::ResizeEvent& event) -{ - GUI::AbstractScrollableWidget::resize_event(event); - layout_and_sync_size(); -} - -void InProcessWebView::paint_event(GUI::PaintEvent& event) -{ - GUI::Frame::paint_event(event); - - GUI::Painter painter(*this); - painter.add_clip_rect(widget_inner_rect()); - painter.add_clip_rect(event.rect()); - - if (!layout_root()) { - painter.fill_rect(event.rect(), palette().color(background_role())); - return; - } - - painter.translate(frame_thickness(), frame_thickness()); - - PaintContext context(painter, palette(), { horizontal_scrollbar().value(), vertical_scrollbar().value() }); - context.set_should_show_line_box_borders(m_should_show_line_box_borders); - context.set_viewport_rect(viewport_rect_in_content_coordinates()); - context.set_has_focus(is_focused()); - layout_root()->paint_all_phases(context); -} - -void InProcessWebView::mousemove_event(GUI::MouseEvent& event) -{ - page().handle_mousemove(to_content_position(event.position()), event.buttons(), event.modifiers()); - GUI::AbstractScrollableWidget::mousemove_event(event); -} - -void InProcessWebView::mousedown_event(GUI::MouseEvent& event) -{ - page().handle_mousedown(to_content_position(event.position()), event.button(), event.modifiers()); - GUI::AbstractScrollableWidget::mousedown_event(event); -} - -void InProcessWebView::mouseup_event(GUI::MouseEvent& event) -{ - page().handle_mouseup(to_content_position(event.position()), event.button(), event.modifiers()); - GUI::AbstractScrollableWidget::mouseup_event(event); -} - -void InProcessWebView::mousewheel_event(GUI::MouseEvent& event) -{ - page().handle_mousewheel(to_content_position(event.position()), event.button(), event.modifiers(), event.wheel_delta_x(), event.wheel_delta_y()); - GUI::AbstractScrollableWidget::mousewheel_event(event); -} - -void InProcessWebView::keydown_event(GUI::KeyEvent& event) -{ - bool page_accepted_event = page().handle_keydown(event.key(), event.modifiers(), event.code_point()); - - if (event.modifiers() == 0) { - switch (event.key()) { - case Key_Home: - vertical_scrollbar().set_value(0); - break; - case Key_End: - vertical_scrollbar().set_value(vertical_scrollbar().max()); - break; - case Key_Down: - vertical_scrollbar().increase_slider_by_steps(1); - break; - case Key_Up: - vertical_scrollbar().decrease_slider_by_steps(1); - break; - case Key_Left: - horizontal_scrollbar().increase_slider_by_steps(1); - break; - case Key_Right: - horizontal_scrollbar().decrease_slider_by_steps(1); - break; - case Key_PageDown: - vertical_scrollbar().increase_slider_by(frame_inner_rect().height()); - break; - case Key_PageUp: - vertical_scrollbar().decrease_slider_by(frame_inner_rect().height()); - break; - default: - if (!page_accepted_event) { - AbstractScrollableWidget::keydown_event(event); - return; - } - break; - } - } - - event.accept(); -} - -AK::URL InProcessWebView::url() const -{ - if (!page().top_level_browsing_context().active_document()) - return {}; - return page().top_level_browsing_context().active_document()->url(); -} - -void InProcessWebView::reload() -{ - load(url()); -} - -void InProcessWebView::load_html(StringView html, const AK::URL& url) -{ - page().top_level_browsing_context().loader().load_html(html, url); -} - -bool InProcessWebView::load(const AK::URL& url) -{ - set_override_cursor(Gfx::StandardCursor::None); - return page().top_level_browsing_context().loader().load(url, FrameLoader::Type::Navigation); -} - -Layout::InitialContainingBlock const* InProcessWebView::layout_root() const -{ - return document() ? document()->layout_node() : nullptr; -} - -Layout::InitialContainingBlock* InProcessWebView::layout_root() -{ - if (!document()) - return nullptr; - return const_cast<Layout::InitialContainingBlock*>(document()->layout_node()); -} - -void InProcessWebView::page_did_request_scroll_into_view(Gfx::IntRect const& rect) -{ - scroll_into_view(rect, true, true); - set_override_cursor(Gfx::StandardCursor::None); -} - -void InProcessWebView::load_empty_document() -{ - page().top_level_browsing_context().set_active_document(nullptr); -} - -DOM::Document* InProcessWebView::document() -{ - return page().top_level_browsing_context().active_document(); -} - -const DOM::Document* InProcessWebView::document() const -{ - return page().top_level_browsing_context().active_document(); -} - -void InProcessWebView::set_document(DOM::Document* document) -{ - page().top_level_browsing_context().set_active_document(document); -} - -void InProcessWebView::did_scroll() -{ - page().top_level_browsing_context().set_viewport_scroll_offset({ horizontal_scrollbar().value(), vertical_scrollbar().value() }); -} - -void InProcessWebView::drop_event(GUI::DropEvent& event) -{ - if (event.mime_data().has_urls()) { - if (on_url_drop) { - on_url_drop(event.mime_data().urls().first()); - return; - } - } - AbstractScrollableWidget::drop_event(event); -} - -void InProcessWebView::page_did_request_alert(String const& message) -{ - GUI::MessageBox::show(window(), message, "Alert", GUI::MessageBox::Type::Information); -} - -bool InProcessWebView::page_did_request_confirm(String const& message) -{ - auto confirm_result = GUI::MessageBox::show(window(), message, "Confirm", GUI::MessageBox::Type::Warning, GUI::MessageBox::InputType::OKCancel); - return confirm_result == GUI::Dialog::ExecResult::ExecOK; -} - -String InProcessWebView::page_did_request_prompt(String const& message, String const& default_) -{ - String value { default_ }; - if (GUI::InputBox::show(window(), value, message, "Prompt") == GUI::InputBox::ExecOK) - return value; - return {}; -} - -String InProcessWebView::page_did_request_cookie(const AK::URL& url, Cookie::Source source) -{ - if (on_get_cookie) - return on_get_cookie(url, source); - return {}; -} - -void InProcessWebView::page_did_set_cookie(const AK::URL& url, Cookie::ParsedCookie const& cookie, Cookie::Source source) -{ - if (on_set_cookie) - on_set_cookie(url, cookie, source); -} - -} diff --git a/Userland/Libraries/LibWeb/InProcessWebView.h b/Userland/Libraries/LibWeb/InProcessWebView.h deleted file mode 100644 index c62cd6fbdc..0000000000 --- a/Userland/Libraries/LibWeb/InProcessWebView.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include <AK/URL.h> -#include <LibGUI/AbstractScrollableWidget.h> -#include <LibGUI/Desktop.h> -#include <LibWeb/DOM/Document.h> -#include <LibWeb/Page/Page.h> -#include <LibWeb/WebViewHooks.h> - -namespace Web { - -class InProcessWebView final - : public GUI::AbstractScrollableWidget - , public WebViewHooks - , public PageClient { - C_OBJECT(InProcessWebView); - -public: - virtual ~InProcessWebView() override; - - void load_html(StringView, const AK::URL&); - void load_empty_document(); - - DOM::Document* document(); - const DOM::Document* document() const; - - void set_document(DOM::Document*); - - Layout::InitialContainingBlock const* layout_root() const; - Layout::InitialContainingBlock* layout_root(); - - void reload(); - bool load(const AK::URL&); - - AK::URL url() const; - - void set_preferred_color_scheme(CSS::PreferredColorScheme); - void set_should_show_line_box_borders(bool value) { m_should_show_line_box_borders = value; } - - String selected_text() const; - void select_all(); - -private: - InProcessWebView(); - - Page& page() { return *m_page; } - Page const& page() const { return *m_page; } - - virtual void resize_event(GUI::ResizeEvent&) override; - virtual void paint_event(GUI::PaintEvent&) override; - virtual void mousemove_event(GUI::MouseEvent&) override; - virtual void mousedown_event(GUI::MouseEvent&) override; - virtual void mouseup_event(GUI::MouseEvent&) override; - virtual void mousewheel_event(GUI::MouseEvent&) override; - virtual void keydown_event(GUI::KeyEvent&) override; - virtual void drop_event(GUI::DropEvent&) override; - - virtual void did_scroll() override; - - // ^Web::PageClient - virtual Gfx::Palette palette() const override { return GUI::AbstractScrollableWidget::palette(); } - virtual Gfx::IntRect screen_rect() const override { return GUI::Desktop::the().rect(); } - virtual CSS::PreferredColorScheme preferred_color_scheme() const override { return m_preferred_color_scheme; } - virtual void page_did_change_title(String const&) override; - virtual void page_did_set_document_in_top_level_browsing_context(DOM::Document*) override; - virtual void page_did_start_loading(const AK::URL&) override; - virtual void page_did_finish_loading(const AK::URL&) override; - virtual void page_did_change_selection() override; - virtual void page_did_request_cursor_change(Gfx::StandardCursor) override; - virtual void page_did_request_context_menu(Gfx::IntPoint const&) override; - virtual void page_did_request_link_context_menu(Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers) override; - virtual void page_did_request_image_context_menu(Gfx::IntPoint const&, const AK::URL&, String const& target, unsigned modifiers, Gfx::Bitmap const*) override; - virtual void page_did_click_link(const AK::URL&, String const& target, unsigned modifiers) override; - virtual void page_did_middle_click_link(const AK::URL&, String const& target, unsigned modifiers) override; - virtual void page_did_enter_tooltip_area(Gfx::IntPoint const&, String const&) override; - virtual void page_did_leave_tooltip_area() override; - virtual void page_did_hover_link(const AK::URL&) override; - virtual void page_did_unhover_link() override; - virtual void page_did_invalidate(Gfx::IntRect const&) override; - virtual void page_did_change_favicon(Gfx::Bitmap const&) override; - virtual void page_did_layout() override; - virtual void page_did_request_scroll_into_view(Gfx::IntRect const&) override; - virtual void page_did_request_alert(String const&) override; - virtual bool page_did_request_confirm(String const&) override; - virtual String page_did_request_prompt(String const&, String const&) override; - virtual String page_did_request_cookie(const AK::URL&, Cookie::Source) override; - virtual void page_did_set_cookie(const AK::URL&, Cookie::ParsedCookie const&, Cookie::Source) override; - - void layout_and_sync_size(); - - bool m_should_show_line_box_borders { false }; - - NonnullOwnPtr<Page> m_page; - CSS::PreferredColorScheme m_preferred_color_scheme { CSS::PreferredColorScheme::Auto }; -}; - -} diff --git a/Userland/Services/WebContent/Documentation.txt b/Userland/Services/WebContent/Documentation.txt index 6d3c4ae9a8..f77d5c6419 100644 --- a/Userland/Services/WebContent/Documentation.txt +++ b/Userland/Services/WebContent/Documentation.txt @@ -14,14 +14,3 @@ WebContent::ConnectionFromClient <---> WebContentClient Web::Document .. - -===================== -Single process model: -===================== - -Web::InProcessWebView (this is a GUI::Widget, and also a Web::PageClient) - Web::Page - Web::Frame - Web::Document - .. - |