Explorar el Código

LibWebView: Protect the Inspector against rapid inspection requests

This was seen in Browser when hotkey activations were processed twice.
If we open the Inspector with a hotkey (F12) and quickly activate that
hotkey again, we could try sending a JS command (inspector.loadDOMTree)
before the inspector.js file was actually loaded in the WebContent.

The window for this bug is larger on Serenity, where loading WebContent
is a bit slower than on Linux. So even with the Browser bug fixed, it is
pretty easy to hit this window still.
Timothy Flynn hace 1 año
padre
commit
552f63a283

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

@@ -118,6 +118,7 @@ InspectorClient::InspectorClient(ViewImplementation& content_web_view, ViewImple
     m_inspector_web_view.use_native_user_style_sheet();
 
     m_inspector_web_view.on_inspector_loaded = [this]() {
+        m_inspector_loaded = true;
         inspect();
 
         m_content_web_view.js_console_request_messages(0);
@@ -191,6 +192,8 @@ InspectorClient::~InspectorClient()
 
 void InspectorClient::inspect()
 {
+    if (!m_inspector_loaded)
+        return;
     if (m_dom_tree_loaded)
         return;
 

+ 1 - 0
Userland/Libraries/LibWebView/InspectorClient.h

@@ -70,6 +70,7 @@ private:
     Optional<i32> m_body_node_id;
     Optional<i32> m_pending_selection;
 
+    bool m_inspector_loaded { false };
     bool m_dom_tree_loaded { false };
 
     struct ContextMenuData {