/* * Copyright (c) 2018-2021, Andreas Kling * Copyright (c) 2021-2022, Linus Groh * Copyright (c) 2022, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include namespace WebContent { class ConnectionFromClient final : public IPC::ConnectionFromClient { C_OBJECT(ConnectionFromClient); public: ~ConnectionFromClient() override = default; virtual void die() override; void initialize_js_console(Badge); void request_file(NonnullRefPtr&); Optional fd() { return socket().fd(); } private: explicit ConnectionFromClient(NonnullOwnPtr); Web::Page& page(); Web::Page const& page() const; virtual void connect_to_webdriver(String const& webdriver_ipc_path) override; virtual void update_system_theme(Core::AnonymousBuffer const&) override; virtual void update_system_fonts(String const&, String const&, String const&) override; virtual void update_screen_rects(Vector const&, u32) override; virtual void load_url(URL const&) override; virtual void load_html(String const&, URL const&) override; virtual void paint(Gfx::IntRect const&, i32) override; virtual void set_viewport_rect(Gfx::IntRect const&) override; virtual void mouse_down(Gfx::IntPoint const&, unsigned, unsigned, unsigned) override; virtual void mouse_move(Gfx::IntPoint const&, unsigned, unsigned, unsigned) override; virtual void mouse_up(Gfx::IntPoint const&, unsigned, unsigned, unsigned) override; virtual void mouse_wheel(Gfx::IntPoint const&, unsigned, unsigned, unsigned, i32, i32) override; virtual void doubleclick(Gfx::IntPoint const&, unsigned, unsigned, unsigned) override; virtual void key_down(i32, unsigned, u32) override; virtual void key_up(i32, unsigned, u32) override; virtual void add_backing_store(i32, Gfx::ShareableBitmap const&) override; virtual void remove_backing_store(i32) override; virtual void debug_request(String const&, String const&) override; virtual void get_source() override; virtual Messages::WebContentServer::SerializeSourceResponse serialize_source() override; virtual void inspect_dom_tree() override; virtual Messages::WebContentServer::InspectDomNodeResponse inspect_dom_node(i32 node_id, Optional const& pseudo_element) override; virtual Messages::WebContentServer::GetHoveredNodeIdResponse get_hovered_node_id() override; virtual Messages::WebContentServer::DumpLayoutTreeResponse dump_layout_tree() override; virtual void set_content_filters(Vector const&) override; virtual void set_proxy_mappings(Vector const&, HashMap const&) override; virtual void set_preferred_color_scheme(Web::CSS::PreferredColorScheme const&) override; virtual void set_has_focus(bool) override; virtual void set_is_scripting_enabled(bool) override; virtual void set_window_position(Gfx::IntPoint const&) override; virtual void set_window_size(Gfx::IntSize const&) override; virtual void handle_file_return(i32 error, Optional const& file, i32 request_id) override; virtual void set_system_visibility_state(bool visible) override; virtual void js_console_input(String const&) override; virtual void run_javascript(String const&) override; virtual void js_console_request_messages(i32) override; virtual void scroll_element_into_view(i32 element_id) override; virtual Messages::WebContentServer::GetElementTextResponse get_element_text(i32 element_id) override; virtual Messages::WebContentServer::GetElementTagNameResponse get_element_tag_name(i32 element_id) override; virtual Messages::WebContentServer::GetElementRectResponse get_element_rect(i32 element_id) override; virtual Messages::WebContentServer::IsElementEnabledResponse is_element_enabled(i32 element_id) override; virtual Messages::WebContentServer::TakeElementScreenshotResponse take_element_screenshot(i32 element_id) override; virtual Messages::WebContentServer::TakeDocumentScreenshotResponse take_document_screenshot() override; virtual Messages::WebContentServer::GetLocalStorageEntriesResponse get_local_storage_entries() override; virtual Messages::WebContentServer::GetSessionStorageEntriesResponse get_session_storage_entries() override; virtual Messages::WebContentServer::GetSelectedTextResponse get_selected_text() override; virtual void select_all() override; virtual Messages::WebContentServer::WebdriverExecuteScriptResponse webdriver_execute_script(String const& body, Vector const& json_arguments, Optional const& timeout, bool async) override; void flush_pending_paint_requests(); NonnullOwnPtr m_page_host; struct PaintRequest { Gfx::IntRect content_rect; NonnullRefPtr bitmap; i32 bitmap_id { -1 }; }; Vector m_pending_paint_requests; RefPtr m_paint_flush_timer; HashMap> m_backing_stores; WeakPtr m_realm; OwnPtr m_console_client; JS::Handle m_console_global_object; HashMap> m_requested_files {}; int last_id { 0 }; }; }