mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 02:42:44 +00:00 
			
		
		
		
	Ladybird+LibWebView+Browser: Remove ability to run with AST interpreter
This commit is contained in:
		
							parent
							
								
									e769776bdd
								
							
						
					
					
						commit
						99ac34eeae
					
				
					 24 changed files with 28 additions and 68 deletions
				
			
		|  | @ -10,7 +10,6 @@ ErrorOr<NonnullRefPtr<WebView::WebContentClient>> launch_web_content_process(Web | ||||||
|     ReadonlySpan<String> candidate_web_content_paths, |     ReadonlySpan<String> candidate_web_content_paths, | ||||||
|     WebView::EnableCallgrindProfiling enable_callgrind_profiling, |     WebView::EnableCallgrindProfiling enable_callgrind_profiling, | ||||||
|     WebView::IsLayoutTestMode is_layout_test_mode, |     WebView::IsLayoutTestMode is_layout_test_mode, | ||||||
|     WebView::UseJavaScriptBytecode use_javascript_bytecode, |  | ||||||
|     Ladybird::UseLagomNetworking use_lagom_networking) |     Ladybird::UseLagomNetworking use_lagom_networking) | ||||||
| { | { | ||||||
|     int socket_fds[2] {}; |     int socket_fds[2] {}; | ||||||
|  | @ -53,8 +52,6 @@ ErrorOr<NonnullRefPtr<WebView::WebContentClient>> launch_web_content_process(Web | ||||||
|                 arguments.remove(0, callgrind_prefix_length); |                 arguments.remove(0, callgrind_prefix_length); | ||||||
|             if (is_layout_test_mode == WebView::IsLayoutTestMode::Yes) |             if (is_layout_test_mode == WebView::IsLayoutTestMode::Yes) | ||||||
|                 arguments.append("--layout-test-mode"sv); |                 arguments.append("--layout-test-mode"sv); | ||||||
|             if (use_javascript_bytecode == WebView::UseJavaScriptBytecode::Yes) |  | ||||||
|                 arguments.append("--use-bytecode"sv); |  | ||||||
|             if (use_lagom_networking == Ladybird::UseLagomNetworking::Yes) |             if (use_lagom_networking == Ladybird::UseLagomNetworking::Yes) | ||||||
|                 arguments.append("--use-lagom-networking"sv); |                 arguments.append("--use-lagom-networking"sv); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -19,7 +19,6 @@ ErrorOr<NonnullRefPtr<WebView::WebContentClient>> launch_web_content_process(Web | ||||||
|     ReadonlySpan<String> candidate_web_content_paths, |     ReadonlySpan<String> candidate_web_content_paths, | ||||||
|     WebView::EnableCallgrindProfiling, |     WebView::EnableCallgrindProfiling, | ||||||
|     WebView::IsLayoutTestMode, |     WebView::IsLayoutTestMode, | ||||||
|     WebView::UseJavaScriptBytecode, |  | ||||||
|     Ladybird::UseLagomNetworking); |     Ladybird::UseLagomNetworking); | ||||||
| 
 | 
 | ||||||
| ErrorOr<NonnullRefPtr<Protocol::RequestClient>> launch_request_server_process(ReadonlySpan<String> candidate_request_server_paths, StringView serenity_resource_root); | ErrorOr<NonnullRefPtr<Protocol::RequestClient>> launch_request_server_process(ReadonlySpan<String> candidate_request_server_paths, StringView serenity_resource_root); | ||||||
|  |  | ||||||
|  | @ -40,11 +40,10 @@ static QIcon const& app_icon() | ||||||
|     return icon; |     return icon; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| BrowserWindow::BrowserWindow(Browser::CookieJar& cookie_jar, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, WebView::UseJavaScriptBytecode use_javascript_bytecode, UseLagomNetworking use_lagom_networking) | BrowserWindow::BrowserWindow(Browser::CookieJar& cookie_jar, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, UseLagomNetworking use_lagom_networking) | ||||||
|     : m_cookie_jar(cookie_jar) |     : m_cookie_jar(cookie_jar) | ||||||
|     , m_webdriver_content_ipc_path(webdriver_content_ipc_path) |     , m_webdriver_content_ipc_path(webdriver_content_ipc_path) | ||||||
|     , m_enable_callgrind_profiling(enable_callgrind_profiling) |     , m_enable_callgrind_profiling(enable_callgrind_profiling) | ||||||
|     , m_use_javascript_bytecode(use_javascript_bytecode) |  | ||||||
|     , m_use_lagom_networking(use_lagom_networking) |     , m_use_lagom_networking(use_lagom_networking) | ||||||
| { | { | ||||||
|     setWindowIcon(app_icon()); |     setWindowIcon(app_icon()); | ||||||
|  | @ -420,7 +419,7 @@ void BrowserWindow::debug_request(DeprecatedString const& request, DeprecatedStr | ||||||
| 
 | 
 | ||||||
| Tab& BrowserWindow::new_tab(QString const& url, Web::HTML::ActivateTab activate_tab) | Tab& BrowserWindow::new_tab(QString const& url, Web::HTML::ActivateTab activate_tab) | ||||||
| { | { | ||||||
|     auto tab = make<Tab>(this, m_webdriver_content_ipc_path, m_enable_callgrind_profiling, m_use_javascript_bytecode, m_use_lagom_networking); |     auto tab = make<Tab>(this, m_webdriver_content_ipc_path, m_enable_callgrind_profiling, m_use_lagom_networking); | ||||||
|     auto tab_ptr = tab.ptr(); |     auto tab_ptr = tab.ptr(); | ||||||
|     m_tabs.append(std::move(tab)); |     m_tabs.append(std::move(tab)); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -28,7 +28,7 @@ class WebContentView; | ||||||
| class BrowserWindow : public QMainWindow { | class BrowserWindow : public QMainWindow { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| public: | public: | ||||||
|     explicit BrowserWindow(Browser::CookieJar&, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, WebView::UseJavaScriptBytecode, UseLagomNetworking); |     explicit BrowserWindow(Browser::CookieJar&, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, UseLagomNetworking); | ||||||
| 
 | 
 | ||||||
|     WebContentView& view() const { return m_current_tab->view(); } |     WebContentView& view() const { return m_current_tab->view(); } | ||||||
| 
 | 
 | ||||||
|  | @ -119,7 +119,6 @@ private: | ||||||
| 
 | 
 | ||||||
|     StringView m_webdriver_content_ipc_path; |     StringView m_webdriver_content_ipc_path; | ||||||
|     WebView::EnableCallgrindProfiling m_enable_callgrind_profiling; |     WebView::EnableCallgrindProfiling m_enable_callgrind_profiling; | ||||||
|     WebView::UseJavaScriptBytecode m_use_javascript_bytecode; |  | ||||||
|     UseLagomNetworking m_use_lagom_networking; |     UseLagomNetworking m_use_lagom_networking; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -28,7 +28,7 @@ ConsoleWidget::ConsoleWidget() | ||||||
| { | { | ||||||
|     setLayout(new QVBoxLayout); |     setLayout(new QVBoxLayout); | ||||||
| 
 | 
 | ||||||
|     m_output_view = new WebContentView({}, WebView::EnableCallgrindProfiling::No, WebView::UseJavaScriptBytecode::No, UseLagomNetworking::No); |     m_output_view = new WebContentView({}, WebView::EnableCallgrindProfiling::No, UseLagomNetworking::No); | ||||||
|     if (is_using_dark_system_theme(*this)) |     if (is_using_dark_system_theme(*this)) | ||||||
|         m_output_view->update_palette(WebContentView::PaletteMode::Dark); |         m_output_view->update_palette(WebContentView::PaletteMode::Dark); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -50,7 +50,7 @@ static QIcon create_tvg_icon_with_theme_colors(QString name, QPalette const& pal | ||||||
|     return QIcon(icon_engine); |     return QIcon(icon_engine); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, WebView::UseJavaScriptBytecode use_javascript_bytecode, UseLagomNetworking use_lagom_networking) | Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, UseLagomNetworking use_lagom_networking) | ||||||
|     : QWidget(window) |     : QWidget(window) | ||||||
|     , m_window(window) |     , m_window(window) | ||||||
| { | { | ||||||
|  | @ -58,7 +58,7 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView:: | ||||||
|     m_layout->setSpacing(0); |     m_layout->setSpacing(0); | ||||||
|     m_layout->setContentsMargins(0, 0, 0, 0); |     m_layout->setContentsMargins(0, 0, 0, 0); | ||||||
| 
 | 
 | ||||||
|     m_view = new WebContentView(webdriver_content_ipc_path, enable_callgrind_profiling, use_javascript_bytecode, use_lagom_networking); |     m_view = new WebContentView(webdriver_content_ipc_path, enable_callgrind_profiling, use_lagom_networking); | ||||||
|     m_toolbar = new QToolBar(this); |     m_toolbar = new QToolBar(this); | ||||||
|     m_location_edit = new LocationEdit(this); |     m_location_edit = new LocationEdit(this); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ class InspectorWidget; | ||||||
| class Tab final : public QWidget { | class Tab final : public QWidget { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| public: | public: | ||||||
|     Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, WebView::UseJavaScriptBytecode, UseLagomNetworking); |     Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, UseLagomNetworking); | ||||||
|     virtual ~Tab() override; |     virtual ~Tab() override; | ||||||
| 
 | 
 | ||||||
|     WebContentView& view() { return *m_view; } |     WebContentView& view() { return *m_view; } | ||||||
|  |  | ||||||
|  | @ -54,9 +54,8 @@ namespace Ladybird { | ||||||
| 
 | 
 | ||||||
| bool is_using_dark_system_theme(QWidget&); | bool is_using_dark_system_theme(QWidget&); | ||||||
| 
 | 
 | ||||||
| WebContentView::WebContentView(StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, WebView::UseJavaScriptBytecode use_javascript_bytecode, UseLagomNetworking use_lagom_networking) | WebContentView::WebContentView(StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, UseLagomNetworking use_lagom_networking) | ||||||
|     : WebView::ViewImplementation(use_javascript_bytecode) |     : m_use_lagom_networking(use_lagom_networking) | ||||||
|     , m_use_lagom_networking(use_lagom_networking) |  | ||||||
|     , m_webdriver_content_ipc_path(webdriver_content_ipc_path) |     , m_webdriver_content_ipc_path(webdriver_content_ipc_path) | ||||||
| { | { | ||||||
|     setMouseTracking(true); |     setMouseTracking(true); | ||||||
|  | @ -545,7 +544,7 @@ void WebContentView::create_client(WebView::EnableCallgrindProfiling enable_call | ||||||
|     m_client_state = {}; |     m_client_state = {}; | ||||||
| 
 | 
 | ||||||
|     auto candidate_web_content_paths = get_paths_for_helper_process("WebContent"sv).release_value_but_fixme_should_propagate_errors(); |     auto candidate_web_content_paths = get_paths_for_helper_process("WebContent"sv).release_value_but_fixme_should_propagate_errors(); | ||||||
|     auto new_client = launch_web_content_process(*this, candidate_web_content_paths, enable_callgrind_profiling, WebView::IsLayoutTestMode::No, use_javascript_bytecode(), m_use_lagom_networking).release_value_but_fixme_should_propagate_errors(); |     auto new_client = launch_web_content_process(*this, candidate_web_content_paths, enable_callgrind_profiling, WebView::IsLayoutTestMode::No, m_use_lagom_networking).release_value_but_fixme_should_propagate_errors(); | ||||||
| 
 | 
 | ||||||
|     m_client_state.client = new_client; |     m_client_state.client = new_client; | ||||||
|     m_client_state.client->on_web_content_process_crash = [this] { |     m_client_state.client->on_web_content_process_crash = [this] { | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ class WebContentView final | ||||||
|     , public WebView::ViewImplementation { |     , public WebView::ViewImplementation { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| public: | public: | ||||||
|     explicit WebContentView(StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, WebView::UseJavaScriptBytecode, UseLagomNetworking); |     explicit WebContentView(StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, UseLagomNetworking); | ||||||
|     virtual ~WebContentView() override; |     virtual ~WebContentView() override; | ||||||
| 
 | 
 | ||||||
|     Function<String(const AK::URL&, Web::HTML::ActivateTab)> on_tab_open_request; |     Function<String(const AK::URL&, Web::HTML::ActivateTab)> on_tab_open_request; | ||||||
|  |  | ||||||
|  | @ -108,7 +108,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     auto cookie_jar = database ? TRY(Browser::CookieJar::create(*database)) : Browser::CookieJar::create(); |     auto cookie_jar = database ? TRY(Browser::CookieJar::create(*database)) : Browser::CookieJar::create(); | ||||||
| 
 | 
 | ||||||
|     Ladybird::s_settings = adopt_own_if_nonnull(new Ladybird::Settings()); |     Ladybird::s_settings = adopt_own_if_nonnull(new Ladybird::Settings()); | ||||||
|     Ladybird::BrowserWindow window(cookie_jar, webdriver_content_ipc_path, enable_callgrind_profiling ? WebView::EnableCallgrindProfiling::Yes : WebView::EnableCallgrindProfiling::No, WebView::UseJavaScriptBytecode::Yes, use_lagom_networking ? Ladybird::UseLagomNetworking::Yes : Ladybird::UseLagomNetworking::No); |     Ladybird::BrowserWindow window(cookie_jar, webdriver_content_ipc_path, enable_callgrind_profiling ? WebView::EnableCallgrindProfiling::Yes : WebView::EnableCallgrindProfiling::No, use_lagom_networking ? Ladybird::UseLagomNetworking::Yes : Ladybird::UseLagomNetworking::No); | ||||||
|     window.setWindowTitle("Ladybird"); |     window.setWindowTitle("Ladybird"); | ||||||
|     window.resize(800, 600); |     window.resize(800, 600); | ||||||
|     window.show(); |     window.show(); | ||||||
|  |  | ||||||
|  | @ -65,13 +65,11 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
| 
 | 
 | ||||||
|     int webcontent_fd_passing_socket { -1 }; |     int webcontent_fd_passing_socket { -1 }; | ||||||
|     bool is_layout_test_mode = false; |     bool is_layout_test_mode = false; | ||||||
|     bool use_javascript_bytecode = false; |  | ||||||
|     bool use_lagom_networking = false; |     bool use_lagom_networking = false; | ||||||
| 
 | 
 | ||||||
|     Core::ArgsParser args_parser; |     Core::ArgsParser args_parser; | ||||||
|     args_parser.add_option(webcontent_fd_passing_socket, "File descriptor of the passing socket for the WebContent connection", "webcontent-fd-passing-socket", 'c', "webcontent_fd_passing_socket"); |     args_parser.add_option(webcontent_fd_passing_socket, "File descriptor of the passing socket for the WebContent connection", "webcontent-fd-passing-socket", 'c', "webcontent_fd_passing_socket"); | ||||||
|     args_parser.add_option(is_layout_test_mode, "Is layout test mode", "layout-test-mode", 0); |     args_parser.add_option(is_layout_test_mode, "Is layout test mode", "layout-test-mode", 0); | ||||||
|     args_parser.add_option(use_javascript_bytecode, "Enable JavaScript bytecode VM", "use-bytecode", 0); |  | ||||||
|     args_parser.add_option(use_lagom_networking, "Enable Lagom servers for networking", "use-lagom-networking", 0); |     args_parser.add_option(use_lagom_networking, "Enable Lagom servers for networking", "use-lagom-networking", 0); | ||||||
|     args_parser.parse(arguments); |     args_parser.parse(arguments); | ||||||
| 
 | 
 | ||||||
|  | @ -90,8 +88,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
| 
 | 
 | ||||||
|     Web::HTML::Window::set_internals_object_exposed(is_layout_test_mode); |     Web::HTML::Window::set_internals_object_exposed(is_layout_test_mode); | ||||||
| 
 | 
 | ||||||
|     JS::Bytecode::Interpreter::set_enabled(use_javascript_bytecode); |  | ||||||
| 
 |  | ||||||
|     VERIFY(webcontent_fd_passing_socket >= 0); |     VERIFY(webcontent_fd_passing_socket >= 0); | ||||||
| 
 | 
 | ||||||
|     Web::Platform::FontPlugin::install(*new Ladybird::FontPlugin(is_layout_test_mode)); |     Web::Platform::FontPlugin::install(*new Ladybird::FontPlugin(is_layout_test_mode)); | ||||||
|  |  | ||||||
|  | @ -57,10 +57,9 @@ static DeprecatedString search_engines_file_path() | ||||||
|     return builder.to_deprecated_string(); |     return builder.to_deprecated_string(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| BrowserWindow::BrowserWindow(CookieJar& cookie_jar, URL url, WebView::UseJavaScriptBytecode use_javascript_bytecode) | BrowserWindow::BrowserWindow(CookieJar& cookie_jar, URL url) | ||||||
|     : m_cookie_jar(cookie_jar) |     : m_cookie_jar(cookie_jar) | ||||||
|     , m_window_actions(*this) |     , m_window_actions(*this) | ||||||
|     , m_use_javascript_bytecode(use_javascript_bytecode) |  | ||||||
| { | { | ||||||
|     auto app_icon = GUI::Icon::default_icon("app-browser"sv); |     auto app_icon = GUI::Icon::default_icon("app-browser"sv); | ||||||
|     m_bookmarks_bar = Browser::BookmarksBarWidget::construct(Browser::bookmarks_file_path(), true); |     m_bookmarks_bar = Browser::BookmarksBarWidget::construct(Browser::bookmarks_file_path(), true); | ||||||
|  | @ -564,7 +563,7 @@ void BrowserWindow::set_window_title_for_tab(Tab const& tab) | ||||||
| 
 | 
 | ||||||
| Tab& BrowserWindow::create_new_tab(URL url, Web::HTML::ActivateTab activate) | Tab& BrowserWindow::create_new_tab(URL url, Web::HTML::ActivateTab activate) | ||||||
| { | { | ||||||
|     auto& new_tab = m_tab_widget->add_tab<Browser::Tab>("New tab"_string, *this, m_use_javascript_bytecode); |     auto& new_tab = m_tab_widget->add_tab<Browser::Tab>("New tab"_string, *this); | ||||||
| 
 | 
 | ||||||
|     m_tab_widget->set_bar_visible(!is_fullscreen() && m_tab_widget->children().size() > 1); |     m_tab_widget->set_bar_visible(!is_fullscreen() && m_tab_widget->children().size() > 1); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ public: | ||||||
|     void broadcast_window_size(Gfx::IntSize); |     void broadcast_window_size(Gfx::IntSize); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     BrowserWindow(CookieJar&, URL, WebView::UseJavaScriptBytecode); |     BrowserWindow(CookieJar&, URL); | ||||||
| 
 | 
 | ||||||
|     void build_menus(); |     void build_menus(); | ||||||
|     ErrorOr<void> load_search_engines(GUI::Menu& settings_menu); |     ErrorOr<void> load_search_engines(GUI::Menu& settings_menu); | ||||||
|  | @ -87,8 +87,6 @@ private: | ||||||
|     RefPtr<GUI::Action> m_disable_user_agent_spoofing; |     RefPtr<GUI::Action> m_disable_user_agent_spoofing; | ||||||
|     RefPtr<GUI::Action> m_disable_search_engine_action; |     RefPtr<GUI::Action> m_disable_search_engine_action; | ||||||
|     RefPtr<GUI::Action> m_change_homepage_action; |     RefPtr<GUI::Action> m_change_homepage_action; | ||||||
| 
 |  | ||||||
|     WebView::UseJavaScriptBytecode m_use_javascript_bytecode {}; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -114,7 +114,7 @@ void Tab::update_status(Optional<String> text_override, i32 count_waiting) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Tab::Tab(BrowserWindow& window, WebView::UseJavaScriptBytecode use_javascript_bytecode) | Tab::Tab(BrowserWindow& window) | ||||||
| { | { | ||||||
|     load_from_gml(tab_gml).release_value_but_fixme_should_propagate_errors(); |     load_from_gml(tab_gml).release_value_but_fixme_should_propagate_errors(); | ||||||
| 
 | 
 | ||||||
|  | @ -123,7 +123,7 @@ Tab::Tab(BrowserWindow& window, WebView::UseJavaScriptBytecode use_javascript_by | ||||||
| 
 | 
 | ||||||
|     auto& webview_container = *find_descendant_of_type_named<GUI::Widget>("webview_container"); |     auto& webview_container = *find_descendant_of_type_named<GUI::Widget>("webview_container"); | ||||||
| 
 | 
 | ||||||
|     m_web_content_view = webview_container.add<WebView::OutOfProcessWebView>(use_javascript_bytecode); |     m_web_content_view = webview_container.add<WebView::OutOfProcessWebView>(); | ||||||
| 
 | 
 | ||||||
|     auto preferred_color_scheme = Web::CSS::preferred_color_scheme_from_string(Config::read_string("Browser"sv, "Preferences"sv, "ColorScheme"sv, Browser::default_color_scheme)); |     auto preferred_color_scheme = Web::CSS::preferred_color_scheme_from_string(Config::read_string("Browser"sv, "Preferences"sv, "ColorScheme"sv, Browser::default_color_scheme)); | ||||||
|     m_web_content_view->set_preferred_color_scheme(preferred_color_scheme); |     m_web_content_view->set_preferred_color_scheme(preferred_color_scheme); | ||||||
|  |  | ||||||
|  | @ -99,7 +99,7 @@ public: | ||||||
|     WebView::OutOfProcessWebView& view() { return *m_web_content_view; } |     WebView::OutOfProcessWebView& view() { return *m_web_content_view; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     Tab(BrowserWindow&, WebView::UseJavaScriptBytecode); |     explicit Tab(BrowserWindow&); | ||||||
| 
 | 
 | ||||||
|     virtual void show_event(GUI::ShowEvent&) override; |     virtual void show_event(GUI::ShowEvent&) override; | ||||||
|     virtual void hide_event(GUI::HideEvent&) override; |     virtual void hide_event(GUI::HideEvent&) override; | ||||||
|  |  | ||||||
|  | @ -173,7 +173,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|         first_url = TRY(url_from_argument_string(specified_urls.first())); |         first_url = TRY(url_from_argument_string(specified_urls.first())); | ||||||
| 
 | 
 | ||||||
|     auto cookie_jar = TRY(Browser::CookieJar::create(*database)); |     auto cookie_jar = TRY(Browser::CookieJar::create(*database)); | ||||||
|     auto window = Browser::BrowserWindow::construct(cookie_jar, first_url, WebView::UseJavaScriptBytecode::Yes); |     auto window = Browser::BrowserWindow::construct(cookie_jar, first_url); | ||||||
| 
 | 
 | ||||||
|     auto content_filters_watcher = TRY(Core::FileWatcher::create()); |     auto content_filters_watcher = TRY(Core::FileWatcher::create()); | ||||||
|     content_filters_watcher->on_change = [&](Core::FileWatcherEvent const&) { |     content_filters_watcher->on_change = [&](Core::FileWatcherEvent const&) { | ||||||
|  |  | ||||||
|  | @ -25,8 +25,7 @@ REGISTER_WIDGET(WebView, OutOfProcessWebView) | ||||||
| 
 | 
 | ||||||
| namespace WebView { | namespace WebView { | ||||||
| 
 | 
 | ||||||
| OutOfProcessWebView::OutOfProcessWebView(UseJavaScriptBytecode use_javascript_bytecode) | OutOfProcessWebView::OutOfProcessWebView() | ||||||
|     : ViewImplementation(use_javascript_bytecode) |  | ||||||
| { | { | ||||||
|     set_should_hide_unnecessary_scrollbars(true); |     set_should_hide_unnecessary_scrollbars(true); | ||||||
|     set_focus_policy(GUI::FocusPolicy::StrongFocus); |     set_focus_policy(GUI::FocusPolicy::StrongFocus); | ||||||
|  | @ -47,8 +46,6 @@ void OutOfProcessWebView::create_client(EnableCallgrindProfiling) | ||||||
|         }); |         }); | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     client().async_set_use_javascript_bytecode(use_javascript_bytecode() == UseJavaScriptBytecode::Yes); |  | ||||||
| 
 |  | ||||||
|     m_client_state.client_handle = Web::Crypto::generate_random_uuid().release_value_but_fixme_should_propagate_errors(); |     m_client_state.client_handle = Web::Crypto::generate_random_uuid().release_value_but_fixme_should_propagate_errors(); | ||||||
|     client().async_set_window_handle(m_client_state.client_handle); |     client().async_set_window_handle(m_client_state.client_handle); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -55,7 +55,7 @@ public: | ||||||
|     void set_content_scales_to_viewport(bool); |     void set_content_scales_to_viewport(bool); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     explicit OutOfProcessWebView(UseJavaScriptBytecode = UseJavaScriptBytecode::No); |     OutOfProcessWebView(); | ||||||
| 
 | 
 | ||||||
|     // ^Widget
 |     // ^Widget
 | ||||||
|     virtual void paint_event(GUI::PaintEvent&) override; |     virtual void paint_event(GUI::PaintEvent&) override; | ||||||
|  |  | ||||||
|  | @ -14,8 +14,7 @@ | ||||||
| 
 | 
 | ||||||
| namespace WebView { | namespace WebView { | ||||||
| 
 | 
 | ||||||
| ViewImplementation::ViewImplementation(UseJavaScriptBytecode use_javascript_bytecode) | ViewImplementation::ViewImplementation() | ||||||
|     : m_use_javascript_bytecode(use_javascript_bytecode) |  | ||||||
| { | { | ||||||
|     m_backing_store_shrink_timer = Core::Timer::create_single_shot(3000, [this] { |     m_backing_store_shrink_timer = Core::Timer::create_single_shot(3000, [this] { | ||||||
|         resize_backing_stores_if_needed(WindowResizeInProgress::No); |         resize_backing_stores_if_needed(WindowResizeInProgress::No); | ||||||
|  |  | ||||||
|  | @ -30,11 +30,6 @@ enum class IsLayoutTestMode { | ||||||
|     Yes |     Yes | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum class UseJavaScriptBytecode { |  | ||||||
|     No, |  | ||||||
|     Yes |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| class ViewImplementation { | class ViewImplementation { | ||||||
| public: | public: | ||||||
|     virtual ~ViewImplementation() { } |     virtual ~ViewImplementation() { } | ||||||
|  | @ -74,8 +69,6 @@ public: | ||||||
|     void clear_inspected_dom_node(); |     void clear_inspected_dom_node(); | ||||||
|     i32 get_hovered_node_id(); |     i32 get_hovered_node_id(); | ||||||
| 
 | 
 | ||||||
|     UseJavaScriptBytecode use_javascript_bytecode() const { return m_use_javascript_bytecode; } |  | ||||||
| 
 |  | ||||||
|     void debug_request(DeprecatedString const& request, DeprecatedString const& argument = {}); |     void debug_request(DeprecatedString const& request, DeprecatedString const& argument = {}); | ||||||
| 
 | 
 | ||||||
|     void run_javascript(StringView); |     void run_javascript(StringView); | ||||||
|  | @ -160,7 +153,7 @@ protected: | ||||||
|     static constexpr auto ZOOM_MAX_LEVEL = 5.0f; |     static constexpr auto ZOOM_MAX_LEVEL = 5.0f; | ||||||
|     static constexpr auto ZOOM_STEP = 0.1f; |     static constexpr auto ZOOM_STEP = 0.1f; | ||||||
| 
 | 
 | ||||||
|     explicit ViewImplementation(UseJavaScriptBytecode); |     ViewImplementation(); | ||||||
| 
 | 
 | ||||||
|     WebContentClient& client(); |     WebContentClient& client(); | ||||||
|     WebContentClient const& client() const; |     WebContentClient const& client() const; | ||||||
|  | @ -208,8 +201,6 @@ protected: | ||||||
| 
 | 
 | ||||||
|     size_t m_crash_count = 0; |     size_t m_crash_count = 0; | ||||||
|     RefPtr<Core::Timer> m_repeated_crash_timer; |     RefPtr<Core::Timer> m_repeated_crash_timer; | ||||||
| 
 |  | ||||||
|     UseJavaScriptBytecode m_use_javascript_bytecode {}; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -65,11 +65,6 @@ Web::Page const& ConnectionFromClient::page() const | ||||||
|     return m_page_host->page(); |     return m_page_host->page(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ConnectionFromClient::set_use_javascript_bytecode(bool use_bytecode) |  | ||||||
| { |  | ||||||
|     JS::Bytecode::Interpreter::set_enabled(use_bytecode); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Messages::WebContentServer::GetWindowHandleResponse ConnectionFromClient::get_window_handle() | Messages::WebContentServer::GetWindowHandleResponse ConnectionFromClient::get_window_handle() | ||||||
| { | { | ||||||
|     return m_page_host->page().top_level_browsing_context().window_handle(); |     return m_page_host->page().top_level_browsing_context().window_handle(); | ||||||
|  |  | ||||||
|  | @ -48,7 +48,6 @@ private: | ||||||
|     Web::Page& page(); |     Web::Page& page(); | ||||||
|     Web::Page const& page() const; |     Web::Page const& page() const; | ||||||
| 
 | 
 | ||||||
|     virtual void set_use_javascript_bytecode(bool) override; |  | ||||||
|     virtual Messages::WebContentServer::GetWindowHandleResponse get_window_handle() override; |     virtual Messages::WebContentServer::GetWindowHandleResponse get_window_handle() override; | ||||||
|     virtual void set_window_handle(String const& handle) override; |     virtual void set_window_handle(String const& handle) override; | ||||||
|     virtual void connect_to_webdriver(DeprecatedString const& webdriver_ipc_path) override; |     virtual void connect_to_webdriver(DeprecatedString const& webdriver_ipc_path) override; | ||||||
|  |  | ||||||
|  | @ -9,9 +9,6 @@ | ||||||
| 
 | 
 | ||||||
| endpoint WebContentServer | endpoint WebContentServer | ||||||
| { | { | ||||||
|     // NOTE: This is only used on SerenityOS when attaching to a WebContent process served by SystemServer. |  | ||||||
|     set_use_javascript_bytecode(bool use_javascript_bytecode) =| |  | ||||||
| 
 |  | ||||||
|     get_window_handle() => (String handle) |     get_window_handle() => (String handle) | ||||||
|     set_window_handle(String handle) =| |     set_window_handle(String handle) =| | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -47,17 +47,16 @@ | ||||||
| 
 | 
 | ||||||
| class HeadlessWebContentView final : public WebView::ViewImplementation { | class HeadlessWebContentView final : public WebView::ViewImplementation { | ||||||
| public: | public: | ||||||
|     static ErrorOr<NonnullOwnPtr<HeadlessWebContentView>> create(Core::AnonymousBuffer theme, Gfx::IntSize const& window_size, StringView web_driver_ipc_path, WebView::IsLayoutTestMode is_layout_test_mode = WebView::IsLayoutTestMode::No, WebView::UseJavaScriptBytecode use_javascript_bytecode = WebView::UseJavaScriptBytecode::No) |     static ErrorOr<NonnullOwnPtr<HeadlessWebContentView>> create(Core::AnonymousBuffer theme, Gfx::IntSize const& window_size, StringView web_driver_ipc_path, WebView::IsLayoutTestMode is_layout_test_mode = WebView::IsLayoutTestMode::No) | ||||||
|     { |     { | ||||||
|         auto view = TRY(adopt_nonnull_own_or_enomem(new (nothrow) HeadlessWebContentView(use_javascript_bytecode))); |         auto view = TRY(adopt_nonnull_own_or_enomem(new (nothrow) HeadlessWebContentView)); | ||||||
| 
 | 
 | ||||||
| #if defined(AK_OS_SERENITY) | #if defined(AK_OS_SERENITY) | ||||||
|         view->m_client_state.client = TRY(WebView::WebContentClient::try_create(*view)); |         view->m_client_state.client = TRY(WebView::WebContentClient::try_create(*view)); | ||||||
|         (void)is_layout_test_mode; |         (void)is_layout_test_mode; | ||||||
|         (void)use_javascript_bytecode; |  | ||||||
| #else | #else | ||||||
|         auto candidate_web_content_paths = TRY(get_paths_for_helper_process("WebContent"sv)); |         auto candidate_web_content_paths = TRY(get_paths_for_helper_process("WebContent"sv)); | ||||||
|         view->m_client_state.client = TRY(launch_web_content_process(*view, candidate_web_content_paths, WebView::EnableCallgrindProfiling::No, is_layout_test_mode, use_javascript_bytecode, Ladybird::UseLagomNetworking::No)); |         view->m_client_state.client = TRY(launch_web_content_process(*view, candidate_web_content_paths, WebView::EnableCallgrindProfiling::No, is_layout_test_mode, Ladybird::UseLagomNetworking::No)); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|         view->client().async_update_system_theme(move(theme)); |         view->client().async_update_system_theme(move(theme)); | ||||||
|  | @ -99,10 +98,7 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     HeadlessWebContentView(WebView::UseJavaScriptBytecode use_javascript_bytecode) |     HeadlessWebContentView() = default; | ||||||
|         : WebView::ViewImplementation(use_javascript_bytecode) |  | ||||||
|     { |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     void notify_server_did_layout(Badge<WebView::WebContentClient>, Gfx::IntSize) override { } |     void notify_server_did_layout(Badge<WebView::WebContentClient>, Gfx::IntSize) override { } | ||||||
|     void notify_server_did_paint(Badge<WebView::WebContentClient>, i32, Gfx::IntSize) override { } |     void notify_server_did_paint(Badge<WebView::WebContentClient>, i32, Gfx::IntSize) override { } | ||||||
|  | @ -414,7 +410,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|         is_layout_test_mode = true; |         is_layout_test_mode = true; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     auto view = TRY(HeadlessWebContentView::create(move(theme), window_size, web_driver_ipc_path, is_layout_test_mode ? WebView::IsLayoutTestMode::Yes : WebView::IsLayoutTestMode::No, WebView::UseJavaScriptBytecode::Yes)); |     auto view = TRY(HeadlessWebContentView::create(move(theme), window_size, web_driver_ipc_path, is_layout_test_mode ? WebView::IsLayoutTestMode::Yes : WebView::IsLayoutTestMode::No)); | ||||||
|     RefPtr<Core::Timer> timer; |     RefPtr<Core::Timer> timer; | ||||||
| 
 | 
 | ||||||
|     if (!test_root_path.is_empty()) { |     if (!test_root_path.is_empty()) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling