瀏覽代碼

LibWebView: Clear the Inspector DOM/accessibility trees upon reset

This prevents rendering stale trees while navigating to a new page. The
old non-WebView inspector widgets behaved this way.
Timothy Flynn 1 年之前
父節點
當前提交
41ffc69c9d
共有 2 個文件被更改,包括 16 次插入2 次删除
  1. 13 0
      Base/res/ladybird/inspector.js
  2. 3 2
      Userland/Libraries/LibWebView/InspectorClient.cpp

+ 13 - 0
Base/res/ladybird/inspector.js

@@ -85,6 +85,19 @@ const scrollToElement = element => {
     window.scrollTo(0, position);
     window.scrollTo(0, position);
 };
 };
 
 
+inspector.reset = () => {
+    let domTree = document.getElementById("dom-tree");
+    domTree.innerHTML = "";
+
+    let accessibilityTree = document.getElementById("accessibility-tree");
+    accessibilityTree.innerHTML = "";
+
+    selectedDOMNode = null;
+    pendingEditDOMNode = null;
+
+    inspector.clearConsoleOutput();
+};
+
 inspector.loadDOMTree = tree => {
 inspector.loadDOMTree = tree => {
     let domTree = document.getElementById("dom-tree");
     let domTree = document.getElementById("dom-tree");
     domTree.innerHTML = atob(tree);
     domTree.innerHTML = atob(tree);

+ 3 - 2
Userland/Libraries/LibWebView/InspectorClient.cpp

@@ -181,12 +181,13 @@ void InspectorClient::inspect()
 
 
 void InspectorClient::reset()
 void InspectorClient::reset()
 {
 {
+    static constexpr auto script = "inspector.reset();"sv;
+    m_inspector_web_view.run_javascript(script);
+
     m_body_node_id.clear();
     m_body_node_id.clear();
     m_pending_selection.clear();
     m_pending_selection.clear();
-
     m_dom_tree_loaded = false;
     m_dom_tree_loaded = false;
 
 
-    clear_console_output();
     m_highest_notified_message_index = -1;
     m_highest_notified_message_index = -1;
     m_highest_received_message_index = -1;
     m_highest_received_message_index = -1;
     m_waiting_for_messages = false;
     m_waiting_for_messages = false;