/* * Copyright (c) 2024, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include namespace Web::WebDriver { GC::Ptr get_node(HTML::BrowsingContext const&, StringView reference); String get_or_create_a_node_reference(HTML::BrowsingContext const&, Web::DOM::Node const&); bool node_reference_is_known(HTML::BrowsingContext const&, StringView reference); String get_or_create_a_web_element_reference(HTML::BrowsingContext const&, Web::DOM::Node const& element); JsonObject web_element_reference_object(HTML::BrowsingContext const&, Web::DOM::Node const& element); bool represents_a_web_element(JsonValue const&); bool represents_a_web_element(JS::Value); ErrorOr, WebDriver::Error> deserialize_web_element(Web::HTML::BrowsingContext const&, JsonObject const&); ErrorOr, WebDriver::Error> deserialize_web_element(Web::HTML::BrowsingContext const&, JS::Object const&); String extract_web_element_reference(JsonObject const&); ErrorOr, Web::WebDriver::Error> get_web_element_origin(Web::HTML::BrowsingContext const&, StringView origin); ErrorOr, Web::WebDriver::Error> get_known_element(Web::HTML::BrowsingContext const&, StringView reference); bool is_element_stale(Web::DOM::Node const& element); bool is_element_interactable(Web::HTML::BrowsingContext const&, Web::DOM::Element const&); bool is_element_pointer_interactable(Web::HTML::BrowsingContext const&, Web::DOM::Element const&); bool is_element_keyboard_interactable(Web::DOM::Element const&); bool is_element_editable(Web::DOM::Element const&); bool is_element_mutable(Web::DOM::Element const&); bool is_element_mutable_form_control(Web::DOM::Element const&); bool is_element_non_typeable_form_control(Web::DOM::Element const&); bool is_element_in_view(ReadonlySpan> paint_tree, Web::DOM::Element&); bool is_element_obscured(ReadonlySpan> paint_tree, Web::DOM::Element&); GC::RootVector> pointer_interactable_tree(Web::HTML::BrowsingContext&, Web::DOM::Element&); String get_or_create_a_shadow_root_reference(HTML::BrowsingContext const&, Web::DOM::ShadowRoot const&); JsonObject shadow_root_reference_object(HTML::BrowsingContext const&, Web::DOM::ShadowRoot const&); bool represents_a_shadow_root(JsonValue const&); bool represents_a_shadow_root(JS::Value); ErrorOr, WebDriver::Error> deserialize_shadow_root(Web::HTML::BrowsingContext const&, JsonObject const&); ErrorOr, WebDriver::Error> deserialize_shadow_root(Web::HTML::BrowsingContext const&, JS::Object const&); ErrorOr, Web::WebDriver::Error> get_known_shadow_root(HTML::BrowsingContext const&, StringView reference); bool is_shadow_root_detached(Web::DOM::ShadowRoot const&); String element_rendered_text(DOM::Node&); CSSPixelPoint in_view_center_point(DOM::Element const& element, CSSPixelRect viewport); }