Browse Source

LibWebView+Ladybird: Move DOM inspection helpers to ViewImplementation

Linus Groh 2 năm trước cách đây
mục cha
commit
2428e3e675

+ 0 - 19
Ladybird/DOMNodeProperties.h

@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2022, MacDue <macdue@dueutil.tech>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
-
-#pragma once
-
-#include <AK/String.h>
-
-namespace Ladybird {
-
-struct DOMNodeProperties {
-    String computed_style_json;
-    String resolved_style_json;
-    String custom_properties_json;
-};
-
-}

+ 2 - 2
Ladybird/InspectorWidget.h

@@ -6,8 +6,8 @@
 
 #pragma once
 
-#include "DOMNodeProperties.h"
 #include "ModelTranslator.h"
+#include "WebContentView.h"
 #include <AK/Optional.h>
 #include <AK/StringView.h>
 #include <LibWeb/CSS/Selector.h>
@@ -36,7 +36,7 @@ public:
     void load_style_json(StringView computed_style_json, StringView resolved_style_json, StringView custom_properties_json);
     void clear_style_json();
 
-    Function<ErrorOr<DOMNodeProperties>(i32, Optional<Web::CSS::Selector::PseudoElement>)> on_dom_node_inspected;
+    Function<ErrorOr<WebContentView::DOMNodeProperties>(i32, Optional<Web::CSS::Selector::PseudoElement>)> on_dom_node_inspected;
     Function<void()> on_close;
 
 private:

+ 0 - 22
Ladybird/WebContentView.cpp

@@ -532,28 +532,6 @@ bool WebContentView::is_inspector_open() const
     return m_inspector_widget && m_inspector_widget->isVisible();
 }
 
-void WebContentView::inspect_dom_tree()
-{
-    client().async_inspect_dom_tree();
-}
-
-ErrorOr<Ladybird::DOMNodeProperties> WebContentView::inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> pseudo_element)
-{
-    auto response = client().inspect_dom_node(node_id, pseudo_element);
-    if (!response.has_style())
-        return Error::from_string_view("Inspected node returned no style"sv);
-    return Ladybird::DOMNodeProperties {
-        .computed_style_json = TRY(String::from_deprecated_string(response.take_computed_style())),
-        .resolved_style_json = TRY(String::from_deprecated_string(response.take_resolved_style())),
-        .custom_properties_json = TRY(String::from_deprecated_string(response.take_custom_properties())),
-    };
-}
-
-void WebContentView::clear_inspected_dom_node()
-{
-    (void)inspect_dom_node(0, {});
-}
-
 void WebContentView::show_inspector()
 {
     ensure_inspector_widget();

+ 0 - 5
Ladybird/WebContentView.h

@@ -25,8 +25,6 @@
 #include <QAbstractScrollArea>
 #include <QPointer>
 
-#include "DOMNodeProperties.h"
-
 class QTextEdit;
 class QLineEdit;
 
@@ -192,10 +190,7 @@ private:
     void ensure_inspector_widget();
 
     bool is_inspector_open() const;
-    void inspect_dom_tree();
-    void clear_inspected_dom_node();
     void close_sub_widgets();
-    ErrorOr<Ladybird::DOMNodeProperties> inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> pseudo_element);
 
     qreal m_inverse_pixel_scaling_ratio { 1.0 };
     bool m_should_show_line_box_borders { false };

+ 3 - 3
Userland/Applications/Browser/InspectorWidget.cpp

@@ -63,9 +63,9 @@ void InspectorWidget::set_selection(GUI::ModelIndex const index)
     m_selection = move(selection);
 
     auto maybe_inspected_node_properties = m_web_view->inspect_dom_node(m_selection.dom_node_id, m_selection.pseudo_element);
-    if (maybe_inspected_node_properties.has_value()) {
-        auto inspected_node_properties = maybe_inspected_node_properties.value();
-        load_style_json(inspected_node_properties.computed_values_json, inspected_node_properties.resolved_values_json, inspected_node_properties.custom_properties_json);
+    if (!maybe_inspected_node_properties.is_error()) {
+        auto inspected_node_properties = maybe_inspected_node_properties.release_value();
+        load_style_json(inspected_node_properties.computed_style_json, inspected_node_properties.resolved_style_json, inspected_node_properties.custom_properties_json);
         update_node_box_model(inspected_node_properties.node_box_sizing_json);
     } else {
         clear_style_json();

+ 0 - 33
Userland/Libraries/LibWebView/OutOfProcessWebView.cpp

@@ -565,34 +565,6 @@ void OutOfProcessWebView::debug_request(DeprecatedString const& request, Depreca
     client().async_debug_request(request, argument);
 }
 
-void OutOfProcessWebView::inspect_dom_tree()
-{
-    client().async_inspect_dom_tree();
-}
-
-Optional<OutOfProcessWebView::DOMNodeProperties> OutOfProcessWebView::inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> pseudo_element)
-{
-    auto response = client().inspect_dom_node(node_id, pseudo_element);
-    if (!response.has_style())
-        return {};
-    return DOMNodeProperties {
-        .computed_values_json = response.computed_style(),
-        .resolved_values_json = response.resolved_style(),
-        .custom_properties_json = response.custom_properties(),
-        .node_box_sizing_json = response.node_box_sizing()
-    };
-}
-
-void OutOfProcessWebView::clear_inspected_dom_node()
-{
-    client().inspect_dom_node(0, {});
-}
-
-i32 OutOfProcessWebView::get_hovered_node_id()
-{
-    return client().get_hovered_node_id();
-}
-
 void OutOfProcessWebView::js_console_input(DeprecatedString const& js_source)
 {
     client().async_js_console_input(js_source);
@@ -829,11 +801,6 @@ void OutOfProcessWebView::notify_server_did_finish_handling_input_event(bool eve
     process_next_input_event();
 }
 
-void OutOfProcessWebView::inspect_accessibility_tree()
-{
-    client().async_inspect_accessibility_tree();
-}
-
 void OutOfProcessWebView::notify_server_did_get_accessibility_tree(DeprecatedString const& accessibility_tree)
 {
     if (on_get_accessibility_tree)

+ 0 - 12
Userland/Libraries/LibWebView/OutOfProcessWebView.h

@@ -41,18 +41,6 @@ public:
 
     void debug_request(DeprecatedString const& request, DeprecatedString const& argument = {});
 
-    void inspect_dom_tree();
-    struct DOMNodeProperties {
-        DeprecatedString computed_values_json;
-        DeprecatedString resolved_values_json;
-        DeprecatedString custom_properties_json;
-        DeprecatedString node_box_sizing_json;
-    };
-    Optional<DOMNodeProperties> inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement>);
-    void inspect_accessibility_tree();
-    void clear_inspected_dom_node();
-    i32 get_hovered_node_id();
-
     void js_console_input(DeprecatedString const& js_source);
     void js_console_request_messages(i32 start_index);
 

+ 35 - 0
Userland/Libraries/LibWebView/ViewImplementation.cpp

@@ -4,6 +4,8 @@
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
+#include <AK/Error.h>
+#include <AK/String.h>
 #include <LibWebView/ViewImplementation.h>
 
 namespace WebView {
@@ -47,4 +49,37 @@ void ViewImplementation::get_source()
     client().async_get_source();
 }
 
+void ViewImplementation::inspect_dom_tree()
+{
+    client().async_inspect_dom_tree();
+}
+
+void ViewImplementation::inspect_accessibility_tree()
+{
+    client().async_inspect_accessibility_tree();
+}
+
+ErrorOr<ViewImplementation::DOMNodeProperties> ViewImplementation::inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> pseudo_element)
+{
+    auto response = client().inspect_dom_node(node_id, pseudo_element);
+    if (!response.has_style())
+        return Error::from_string_view("Inspected node returned no style"sv);
+    return DOMNodeProperties {
+        .computed_style_json = TRY(String::from_deprecated_string(response.take_computed_style())),
+        .resolved_style_json = TRY(String::from_deprecated_string(response.take_resolved_style())),
+        .custom_properties_json = TRY(String::from_deprecated_string(response.take_custom_properties())),
+        .node_box_sizing_json = TRY(String::from_deprecated_string(response.take_node_box_sizing())),
+    };
+}
+
+void ViewImplementation::clear_inspected_dom_node()
+{
+    client().inspect_dom_node(0, {});
+}
+
+i32 ViewImplementation::get_hovered_node_id()
+{
+    return client().get_hovered_node_id();
+}
+
 }

+ 16 - 0
Userland/Libraries/LibWebView/ViewImplementation.h

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2023, Linus Groh <linusg@serenityos.org>
  *
  * SPDX-License-Identifier: BSD-2-Clause
  */
@@ -7,6 +8,7 @@
 #pragma once
 
 #include <AK/Forward.h>
+#include <AK/String.h>
 #include <LibGfx/Forward.h>
 #include <LibGfx/StandardCursor.h>
 #include <LibWeb/Forward.h>
@@ -19,11 +21,25 @@ class ViewImplementation {
 public:
     virtual ~ViewImplementation() { }
 
+    struct DOMNodeProperties {
+        String computed_style_json;
+        String resolved_style_json;
+        String custom_properties_json;
+        String node_box_sizing_json;
+    };
+
     void zoom_in();
     void zoom_out();
     void reset_zoom();
+
     void get_source();
 
+    void inspect_dom_tree();
+    void inspect_accessibility_tree();
+    ErrorOr<DOMNodeProperties> inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> pseudo_element);
+    void clear_inspected_dom_node();
+    i32 get_hovered_node_id();
+
     virtual void notify_server_did_layout(Badge<WebContentClient>, Gfx::IntSize content_size) = 0;
     virtual void notify_server_did_paint(Badge<WebContentClient>, i32 bitmap_id) = 0;
     virtual void notify_server_did_invalidate_content_rect(Badge<WebContentClient>, Gfx::IntRect const&) = 0;