From 0d1ce480718c8ab60530c730eeb4d6cceff86b60 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 26 Feb 2025 17:23:10 -0500 Subject: [PATCH] LibDevTools+LibWebView: Avoid dependence on LibWebView from LibDevTools LibDevTools was implicitly including generated IPC endpoints from LibWebView. This is not a dependency declared in the CMakeLists.txt. So updates to the IPC file might not have caused the endpoint header to be regenerated by the time LibDevTools is compiled, resulting in a build error. This patch removes that implicit dependency entirely. --- Libraries/LibDevTools/Actors/PageStyleActor.cpp | 2 +- Libraries/LibDevTools/Actors/PageStyleActor.h | 6 ++++++ Libraries/LibDevTools/DevToolsDelegate.h | 4 ++-- Libraries/LibWebView/Application.cpp | 6 +++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Libraries/LibDevTools/Actors/PageStyleActor.cpp b/Libraries/LibDevTools/Actors/PageStyleActor.cpp index 0e8d429a012..00f14743685 100644 --- a/Libraries/LibDevTools/Actors/PageStyleActor.cpp +++ b/Libraries/LibDevTools/Actors/PageStyleActor.cpp @@ -108,7 +108,7 @@ void PageStyleActor::inspect_dom_node(StringView node_actor, Callback&& callback devtools().delegate().inspect_dom_node( tab->description(), dom_node->id, dom_node->pseudo_element, - [weak_self = make_weak_ptr(), block_token = move(block_token), callback = forward(callback)](ErrorOr properties) mutable { + [weak_self = make_weak_ptr(), block_token = move(block_token), callback = forward(callback)](ErrorOr properties) mutable { if (properties.is_error()) { dbgln_if(DEVTOOLS_DEBUG, "Unable to inspect DOM node: {}", properties.error()); return; diff --git a/Libraries/LibDevTools/Actors/PageStyleActor.h b/Libraries/LibDevTools/Actors/PageStyleActor.h index ee5dcbcc6ae..f642c959d43 100644 --- a/Libraries/LibDevTools/Actors/PageStyleActor.h +++ b/Libraries/LibDevTools/Actors/PageStyleActor.h @@ -6,11 +6,17 @@ #pragma once +#include #include #include namespace DevTools { +struct DOMNodeProperties { + JsonObject computed_style; + JsonObject node_box_sizing; +}; + class PageStyleActor final : public Actor { public: static constexpr auto base_name = "page-style"sv; diff --git a/Libraries/LibDevTools/DevToolsDelegate.h b/Libraries/LibDevTools/DevToolsDelegate.h index 6c091b4d54b..a3efd17bfee 100644 --- a/Libraries/LibDevTools/DevToolsDelegate.h +++ b/Libraries/LibDevTools/DevToolsDelegate.h @@ -11,11 +11,11 @@ #include #include #include +#include #include #include #include #include -#include namespace DevTools { @@ -29,7 +29,7 @@ public: using OnTabInspectionComplete = Function)>; virtual void inspect_tab(TabDescription const&, OnTabInspectionComplete) const { } - using OnDOMNodeInspectionComplete = Function)>; + using OnDOMNodeInspectionComplete = Function)>; virtual void inspect_dom_node(TabDescription const&, Web::UniqueNodeID, Optional, OnDOMNodeInspectionComplete) const { } virtual void clear_inspected_dom_node(TabDescription const&) const { } diff --git a/Libraries/LibWebView/Application.cpp b/Libraries/LibWebView/Application.cpp index b32ff11227a..83a0d8c4af5 100644 --- a/Libraries/LibWebView/Application.cpp +++ b/Libraries/LibWebView/Application.cpp @@ -389,7 +389,11 @@ void Application::inspect_dom_node(DevTools::TabDescription const& description, 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)); + + on_complete(DevTools::DOMNodeProperties { + .computed_style = move(properties.computed_style), + .node_box_sizing = move(properties.node_box_sizing), + }); }; view->inspect_dom_node(node_id, pseudo_element);