diff --git a/Libraries/LibWebView/Application.cpp b/Libraries/LibWebView/Application.cpp index c3d28b17340..b32ff11227a 100644 --- a/Libraries/LibWebView/Application.cpp +++ b/Libraries/LibWebView/Application.cpp @@ -363,7 +363,7 @@ Vector Application::css_property_list() const return property_list; } -void Application::inspect_tab(DevTools::TabDescription const& description, DevTools::DevToolsDelegate::OnTabInspectionComplete on_complete) const +void Application::inspect_tab(DevTools::TabDescription const& description, OnTabInspectionComplete on_complete) const { auto view = ViewImplementation::find_view_by_id(description.id); if (!view.has_value()) { @@ -379,4 +379,38 @@ void Application::inspect_tab(DevTools::TabDescription const& description, DevTo view->inspect_dom_tree(); } +void Application::inspect_dom_node(DevTools::TabDescription const& description, Web::UniqueNodeID node_id, Optional pseudo_element, OnDOMNodeInspectionComplete on_complete) const +{ + auto view = ViewImplementation::find_view_by_id(description.id); + if (!view.has_value()) { + on_complete(Error::from_string_literal("Unable to locate tab")); + return; + } + + view->on_received_dom_node_properties = [&view = *view, on_complete = move(on_complete)](ViewImplementation::DOMNodeProperties properties) { + view.on_received_dom_node_properties = nullptr; + on_complete(move(properties)); + }; + + view->inspect_dom_node(node_id, pseudo_element); +} + +void Application::clear_inspected_dom_node(DevTools::TabDescription const& description) const +{ + if (auto view = ViewImplementation::find_view_by_id(description.id); view.has_value()) + view->clear_inspected_dom_node(); +} + +void Application::highlight_dom_node(DevTools::TabDescription const& description, Web::UniqueNodeID node_id, Optional pseudo_element) const +{ + if (auto view = ViewImplementation::find_view_by_id(description.id); view.has_value()) + view->highlight_dom_node(node_id, pseudo_element); +} + +void Application::clear_highlighted_dom_node(DevTools::TabDescription const& description) const +{ + if (auto view = ViewImplementation::find_view_by_id(description.id); view.has_value()) + view->clear_highlighted_dom_node(); +} + } diff --git a/Libraries/LibWebView/Application.h b/Libraries/LibWebView/Application.h index 14febc24948..a9c3cb05f84 100644 --- a/Libraries/LibWebView/Application.h +++ b/Libraries/LibWebView/Application.h @@ -91,7 +91,11 @@ private: virtual Vector tab_list() const override; virtual Vector css_property_list() const override; - virtual void inspect_tab(DevTools::TabDescription const&, DevTools::DevToolsDelegate::OnTabInspectionComplete) const override; + virtual void inspect_tab(DevTools::TabDescription const&, OnTabInspectionComplete) const override; + virtual void inspect_dom_node(DevTools::TabDescription const&, Web::UniqueNodeID, Optional, OnDOMNodeInspectionComplete) const override; + virtual void clear_inspected_dom_node(DevTools::TabDescription const&) const override; + virtual void highlight_dom_node(DevTools::TabDescription const&, Web::UniqueNodeID, Optional) const override; + virtual void clear_highlighted_dom_node(DevTools::TabDescription const&) const override; static Application* s_the;