ladybird/Services/WebContent/WebDriverClient.ipc
Andreas Kling 24f37c6732 LibWebView: Keep browser history in the UI process
Use the LibWebView history mirror to preserve traversable session
history across WebContent process swaps. WebContent reports snapshots to
the UI process, and new renderers can be seeded from the mirror.

Browser back and forward now resolve through the UI-owned used history
steps. WebContent still runs the spec traversal path when the current
renderer has enough matching state to do so.

Handle canceled and no-op UI navigations without leaving speculative
history entries or pending WebDriver waits behind. Preserve traversal
precheck state across synchronous IPC shutdown, and avoid overwriting a
restored target entry's persisted scroll state before the document has
adopted that entry.
2026-06-14 17:38:44 +02:00

75 lines
5.4 KiB
Text

#include <LibWeb/WebDriver/Capabilities.h>
#include <LibWeb/WebDriver/Response.h>
#include <LibWeb/WebDriver/UserPrompt.h>
endpoint WebDriverClient {
close_session() => ()
set_page_load_strategy(Web::WebDriver::PageLoadStrategy page_load_strategy) =|
set_user_prompt_handler(Web::WebDriver::UserPromptHandler user_prompt_handler) =|
set_strict_file_interactability(bool strict_file_interactability) =|
set_is_webdriver_active(bool active) =|
get_timeouts() => (Web::WebDriver::Response response)
set_timeouts(JsonValue payload) => (Web::WebDriver::Response response)
navigate_to(JsonValue payload) => (Web::WebDriver::Response response, bool will_replace_web_content_process)
get_current_url() => (Web::WebDriver::Response response)
back() => (Web::WebDriver::Response response, bool will_replace_web_content_process, bool wait_for_driver_execution_complete, bool wait_for_navigation_completion)
forward() => (Web::WebDriver::Response response, bool will_replace_web_content_process, bool wait_for_driver_execution_complete, bool wait_for_navigation_completion)
refresh() => (Web::WebDriver::Response response)
wait_for_navigation_completion() => (Web::WebDriver::Response response)
get_title() => (Web::WebDriver::Response response)
close_window() => (Web::WebDriver::Response response)
switch_to_window(String handle) => (Web::WebDriver::Response response)
new_window(JsonValue payload) => (Web::WebDriver::Response response)
switch_to_frame(JsonValue payload) => (Web::WebDriver::Response response)
switch_to_parent_frame(JsonValue payload) => (Web::WebDriver::Response response)
get_window_rect() => (Web::WebDriver::Response response)
set_window_rect(JsonValue payload) => (Web::WebDriver::Response response)
maximize_window() => (Web::WebDriver::Response response)
minimize_window() => (Web::WebDriver::Response response)
fullscreen_window() => (Web::WebDriver::Response response)
consume_user_activation() => (Web::WebDriver::Response response)
crash_current_page() =|
load_url_from_ui(JsonValue payload) => (Web::WebDriver::Response response)
traverse_history_from_ui(JsonValue payload) => (Web::WebDriver::Response response)
mark_web_content_session_history_stale() => (Web::WebDriver::Response response)
get_session_history() => (Web::WebDriver::Response response)
find_element(JsonValue payload) => (Web::WebDriver::Response response)
find_elements(JsonValue payload) => (Web::WebDriver::Response response)
find_element_from_element(JsonValue payload, String element_id) => (Web::WebDriver::Response response)
find_elements_from_element(JsonValue payload, String element_id) => (Web::WebDriver::Response response)
find_element_from_shadow_root(JsonValue payload, String shadow_id) => (Web::WebDriver::Response response)
find_elements_from_shadow_root(JsonValue payload, String shadow_id) => (Web::WebDriver::Response response)
get_active_element() => (Web::WebDriver::Response response)
get_element_shadow_root(String element_id) => (Web::WebDriver::Response response)
is_element_selected(String element_id) => (Web::WebDriver::Response response)
get_element_attribute(String element_id, String name) => (Web::WebDriver::Response response)
get_element_property(String element_id, String name) => (Web::WebDriver::Response response)
get_element_css_value(String element_id, String name) => (Web::WebDriver::Response response)
get_element_text(String element_id) => (Web::WebDriver::Response response)
get_element_tag_name(String element_id) => (Web::WebDriver::Response response)
get_element_rect(String element_id) => (Web::WebDriver::Response response)
is_element_enabled(String element_id) => (Web::WebDriver::Response response)
get_computed_role(String element_id) => (Web::WebDriver::Response response)
get_computed_label(String element_id) => (Web::WebDriver::Response response)
element_click(String element_id) => (Web::WebDriver::Response response)
element_clear(String element_id) => (Web::WebDriver::Response response)
element_send_keys(String element_id, JsonValue payload) => (Web::WebDriver::Response response)
get_source() => (Web::WebDriver::Response response)
execute_script(JsonValue payload) => (Web::WebDriver::Response response)
execute_async_script(JsonValue payload) => (Web::WebDriver::Response response)
get_all_cookies() => (Web::WebDriver::Response response)
get_named_cookie(String name) => (Web::WebDriver::Response response)
add_cookie(JsonValue payload) => (Web::WebDriver::Response response)
delete_cookie(String name) => (Web::WebDriver::Response response)
delete_all_cookies() => (Web::WebDriver::Response response)
perform_actions(JsonValue payload) => (Web::WebDriver::Response response)
release_actions() => (Web::WebDriver::Response response)
dismiss_alert() => (Web::WebDriver::Response response)
accept_alert() => (Web::WebDriver::Response response)
get_alert_text() => (Web::WebDriver::Response response)
send_alert_text(JsonValue payload) => (Web::WebDriver::Response response)
take_screenshot() => (Web::WebDriver::Response response)
take_element_screenshot(String element_id) => (Web::WebDriver::Response response)
print_page(JsonValue payload) => (Web::WebDriver::Response response)
ensure_top_level_browsing_context_is_open() => (Web::WebDriver::Response response)
}